From d1bb68d9f9054bbf87cd84956d3240c71d8e370c Mon Sep 17 00:00:00 2001
From: xuxy <1059738716@qq.com>
Date: 星期二, 25 六月 2024 16:55:44 +0800
Subject: [PATCH] update 商品管理和花农的

---
 package-lock.json                                  | 2181 ++++++++++++++++++++++++++++++++++++++
 pages/login/farmer-login.vue                       |   21 
 pages/farmer/order-settlement/order-settlement.vue |    3 
 pages/notice/notice.vue                            |    2 
 static/common/nodata.png                           |    0 
 components/footer/main.scss                        |   85 
 pages/login/farmer-reg.vue                         |   22 
 App.vue                                            |   21 
 store/index.js                                     |    2 
 pages/user/bussincess-user.vue                     |   29 
 pages/user/user.scss                               |   47 
 pages/user/farmer-user.vue                         |   27 
 main.js                                            |   28 
 common/uni.css                                     |    1 
 components/footer/farmer-footer.vue                |   54 
 common/self.scss                                   |   14 
 static/images/farmer/user/bg.png                   |    0 
 common/global.scss                                 |   61 
 pages.json                                         |   35 
 pages/farmer/flower-manage/flower-add.vue          |  306 +++-
 pages/farmer/flower-manage/flower-manage.vue       |  143 +
 components/no-data.vue                             |    2 
 plugins/http.js                                    |    8 
 pages/home/home.scss                               |  215 ++-
 uni.scss                                           |    3 
 package.json                                       |    7 
 pages/home/farmer-home.vue                         |   82 
 pages/notice/list.vue                              |    4 
 uni_modules/uni-scss/theme.scss                    |    5 
 29 files changed, 2,976 insertions(+), 432 deletions(-)

diff --git a/App.vue b/App.vue
index d279b31..bd62744 100644
--- a/App.vue
+++ b/App.vue
@@ -49,6 +49,21 @@
 
 			}
 			// #endif
+			// #ifdef H5
+			if (true && storage.getItem('token')) {
+				setTimeout(async () => {
+					const res = await this.$store.dispatch('getCurrentInfo');
+					// console.log('init info',res,this.currentInfo)
+					if (this.currentInfo && this.currentInfo.id && !this.currentInfo.openId) {
+						// uni.reLaunch({
+						// 	url: '/pages/home/farmer-home'
+						// })
+					}
+				}, 200);
+			} else {
+
+			}
+			// #endif
 		},
 
 		onReady() {
@@ -66,8 +81,14 @@
 </script>
 
 <style lang="scss">
+
 	/*每个页面公共css */
 	@import '@/uni_modules/uni-scss/index.scss';
+	/* uni.scss */
+	
+	// @import "@/uni_modules/uview-plus/index.scss";
+	@import "uview-ui/index.scss";
+
 	/* #ifndef APP-NVUE */
 	@import '@/static/customicons.css';
 
diff --git a/common/global.scss b/common/global.scss
index 6154ba9..8e39aac 100644
--- a/common/global.scss
+++ b/common/global.scss
@@ -1,5 +1,13 @@
+
+// $u-tips-color: #2979ff;
+// $u-primary: #2979ff;
+
+// @import '@/node_modules/uview-ui/theme.scss';	
+
 .component-tab-container{
 	display: flex;
+	width: fit-content;
+	margin:0 auto;
 	.tab-item{
 		display: flex;
 		text-align: center;
@@ -7,17 +15,31 @@
 		border: 2rpx solid var(--topicolor);
 		background: #fff;
 		color: var(--topicolor);
+		width: 212rpx;
+		line-height: 64rpx;
+		font-weight: 600;
+		font-size: 28rpx;
+		display: block;
 	}
 	.tab-item.cur{
 		background: var(--topicolor);
-		border-radius: 0rpx 8rpx 8rpx 0rpx;
+		// border-radius: 0rpx 8rpx 8rpx 0rpx;
+		color: #fff;
+	}
+	.tab-item:first-child{
+		border-top-right-radius: 0rpx;
+		border-bottom-right-radius: 0rpx;
+	}
+	.tab-item:last-child{
+		border-top-left-radius: 0rpx;
+		border-bottom-left-radius: 0rpx;
 	}
 }
 .component-button-upload{
 	width: 96rpx;
 	height: 96rpx;
 	border-radius: 4rpx;
-	border: 2rpx solid #CECECE;
+	border: 2rpx dashed #CECECE;
 	position: relative;
 	background-image: 100% 100%;
 	&::after{
@@ -25,10 +47,39 @@
 		position: absolute;
 		left: 50%;
 		top: 50%;
-		transform: translate(50%,50%);
+		transform: translate(-50%,-50%);
 		// width: 22rpx;
 		// height: 22rpx;
 		font-size: 24rpx;
-		color: #000000;
+		color: #696969;
 	}
-}
\ No newline at end of file
+}
+
+.component-popup_input{
+	margin-top: calc(50% + 200rpx);
+
+	margin-left: 78rpx - 26rpx;
+	width: 594rpx;
+	background: linear-gradient(180deg, #D8F0EE 0%, #FFFFFF 100%);
+	border-radius: 16rpx;
+	padding: 26rpx;
+	position: relative;
+	.uni-easyinput{
+		width: auto !important;
+	}
+	.icon{
+		z-index: -1;
+		position: absolute;
+		width: 266rpx;
+		height: 146rpx;
+		top: -134rpx;
+		left: 50%;
+		transform: translateX(-50%);
+	}
+	.close-parent{
+		margin-bottom: 34rpx;
+	}
+	.button-green{
+		margin-top: 50rpx;
+	}
+}
diff --git a/common/self.scss b/common/self.scss
index d99fa0b..6c3992a 100644
--- a/common/self.scss
+++ b/common/self.scss
@@ -522,7 +522,7 @@
 .button-green-1{
 	height: 80rpx;
 	
-	background: #04BA97;
+	background: var(--topicolor);
 	border-radius: 44rpx;
 	line-height: 80rpx;
 	text-align: center;
@@ -531,7 +531,7 @@
 }
 .button-green-border{
 	height: 80rpx;
-	border: 1px solid  #04BA97;
+	border: 1px solid  var(--topicolor);
 	border-radius: 44rpx;
 	line-height: 80rpx;
 	text-align: center;
@@ -640,6 +640,7 @@
 	bottom: 60rpx;
 	left: 40rpx;
 	right: 40rpx;
+	z-index: 1;
 }
 
 .close-parent{
@@ -676,7 +677,7 @@
 .button-green{
 	width: 302rpx;
 	height: 80rpx;
-	background: #04BA97;
+	background: var(--topicolor);
 	border-radius: 62rpx;
 	
 	font-size: 32rpx;
@@ -942,9 +943,10 @@
 	}
 
 
-.before-line::before{
-	border-top: 2rpx solid #EEEEEE;
-}
+
 .img100{
 	background-size: 100% 100%;
+}
+uni-image>img{
+	opacity: 1 !important;
 }
\ No newline at end of file
diff --git a/common/uni.css b/common/uni.css
index 896255a..6caf474 100644
--- a/common/uni.css
+++ b/common/uni.css
@@ -4,6 +4,7 @@
 	font-style: normal;
 	src: url('~@/static/uni.ttf') format('truetype');
 }
+@import "uview-ui/index.scss";
 
 /* #ifdef H5 */
 .fix-left-window {
diff --git a/components/footer/farmer-footer.vue b/components/footer/farmer-footer.vue
index 6e0822f..ac7c197 100644
--- a/components/footer/farmer-footer.vue
+++ b/components/footer/farmer-footer.vue
@@ -1,49 +1,52 @@
 <template>
-	<view class="footer flex">
-		<view v-for="(item,index) in tabBar" :key="index" class="footer-item">
-			<view class="item flex" :class="[flg==index?'cur':'']" @click="go(index,item)">
- 
-					<view v-if="index==0">
-						<image src="../../static/imgs/footer/footer-home-1.png"  class="footer-icon" :class="(''+index)"  v-if="flg==0"></image>
-						<image src="../../static/imgs/footer/footer-home-0.png"  class="footer-icon" :class="(''+index)"  v-if="flg!=0"></image>
-					</view>
-					<view v-if="index==1">
-						<image src="../../static/imgs/footer/footer-self-1.png"  class="footer-icon" :class="(''+index)"   v-if="flg==2"></image>
-						<image src="../../static/imgs/footer/footer-self-0.png"  class="footer-icon"  :class="(''+index)"  v-if="flg!=2"></image>
-					</view>
-					<view>
-						{{item.text}}
-					</view>
+	<view class="footer flex farmer-footer">
+		<view v-for="(item,index) in tabBar" :key="index" class="footer-item"  :class="[flg==index?'cur':'']">
+			<view class="item flex" @click="go(index,item)">
 
- 
+				<view v-if="index==0">
+					<image src="../../static/imgs/footer/footer-home-1.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)"
+						v-if="flg==0"></image>
+					<image src="../../static/imgs/footer/footer-home-0.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)"
+						v-if="flg!=0"></image>
+				</view>
+				<view v-if="index==1">
+					<image src="../../static/imgs/footer/footer-self-1.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)"
+						v-if="flg==2"></image>
+					<image src="../../static/imgs/footer/footer-self-0.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)"
+						v-if="flg!=2"></image>
+				</view>
+				<view class="m-l-0 m-r-a">
+					{{item.text}}
+				</view>
+
+
 			</view>
 		</view>
- 
+
 
 	</view>
 </template>
 <script>
-	
 	export default {
 		data() {
 			return {
 				tabBar: [
 
 					{
-						"pagePath": "/pages/home/shop-home",
+						"pagePath": "/pages/home/farmer-home",
 						"iconPath": "/static/tabbar/home.png",
 						"selectedIconPath": "/static/tabbar/home_s.png",
 						"text": "工作台"
 					},
 					{
-						"pagePath": "/pages/user/shop-user",
+						"pagePath": "/pages/user/farmer-user",
 						"iconPath": "/static/tabbar/my.png",
 						"selectedIconPath": "/static/tabbar/my_s.png",
 						"text": "我的"
 					}
- 
+
 				],
-				value:''
+				value: ''
 			}
 		},
 		props: {
@@ -62,9 +65,6 @@
 		},
 		methods: {
 			go(index, item) {
-				if (index == 1) {
-					return
-				}
 				if (this.flg == ('' + index)) {
 					return
 				}
@@ -73,10 +73,10 @@
 
 				});
 			},
- 
+
 		}
 	}
 </script>
 <style lang="scss">
 	@import "./main.scss";
-</style>
+</style>
\ No newline at end of file
diff --git a/components/footer/main.scss b/components/footer/main.scss
index 240c0ee..3243b6f 100644
--- a/components/footer/main.scss
+++ b/components/footer/main.scss
@@ -1,9 +1,10 @@
 .footer {
     position: fixed;
     // position: sticky;
-    bottom: 0px;
+    bottom: 60rpx;
     left: 0px;
-    width: 100vw;
+    // width: 100vw;
+	min-width: 600rpx;
     // height: 98rpx;
     // background: #fff;
 	// background-image: url('../../static/imgs/home/foot-bg.png');
@@ -18,8 +19,8 @@
 	// border-top: 2rpx solid #F2f2f2f2;
 	.footer-item{
 		flex: 1;
-					border-radius: 50rpx;
-					padding: 8rpx;
+		border-radius: 50rpx;
+		padding: 8rpx;
 		.item {
 
 		    font-family: PingFangSC-Regular, PingFang SC;
@@ -36,16 +37,7 @@
 			height: 60rpx;
 			line-height: 60rpx;
 			
-		    &.cur {
-		        // font-weight: 600;
-		        // font-size: 28rpx;
-		        // color: #000000;
-		        // text-align: left;
-		        // font-style: normal;
-				background: #E1F0E7;
-				border-radius: 50rpx;
-					color: var(--topicolor);
-		    }
+
 		
  
 			
@@ -58,45 +50,21 @@
 			// 	height: 50rpx;
 			// 	margin-top: 20rpx;
 			// }
+			.footer-icon{
+				width: 28rpx;
+				height: 29rpx;
+			}
 			.footer-icon.0 {
 			  width: 28rpx;
 			  height: 29rpx;
 			}
 			.footer-icon.1 {
-			width: 26rpx;
-			height: 32rpx;
+				width: 26rpx;
+				height: 32rpx;
 			}
 		}
 	}
     
-	.popup_brand{
-		margin-top: calc(50% + 200rpx);
-		// left: 50%;
-		// left: calc(50% - 295rpx);
-		// transform: translate(-295rpx,250rpx);
-		margin-left: 78rpx - 26rpx;
-		width: 594rpx;
-		height: 500rpx - 52rpx;
-		background: linear-gradient(180deg, #D8F0EE 0%, #FFFFFF 100%);
-		border-radius: 16rpx;
-		padding: 26rpx;
-		position: relative;
-		.icon{
-			z-index: -1;
-			position: absolute;
-			width: 266rpx;
-			height: 146rpx;
-			top: -134rpx;
-			left: 50%;
-			transform: translateX(-50%);
-		}
-		.close-parent{
-			margin-bottom: 34rpx;
-		}
-		.button-green{
-			margin-top: 50rpx;
-		}
-	}
 }
 // .aaa{
 //     position:static;
@@ -104,14 +72,39 @@
 //     top: -10px;
 // }
 
-.footer.bussincess-footer{
+.footer.farmer-footer{
+	left: 50%;
+	transform: translateX(-50%);
 	background-image: unset;
 	background-color: #fff;
-	padding-top:0rpx;
+	border-radius: 50rpx;
+	padding:8rpx;
 	.footer-item{
+		border-radius: 50rpx;
+		width: 252rpx;
+		
 		.item {
 			margin-top: 0rpx;
 			padding-top: 0rpx;
+			min-width: unset;
+
+			// min-width: 252rpx;
+			// max-width: 252rpx;;
+			padding-top: 12rpx;
+			line-height: 50rpx;
+			.footer-icon{
+				margin-top: 12rpx;
+			}
+		}
+		&.cur {
+		    // font-weight: 600;
+		    // font-size: 28rpx;
+		    // color: #000000;
+		    // text-align: left;
+		    // font-style: normal;
+			background: #E1F0E7;
+			border-radius: 50rpx;
+			color: var(--topicolor);
 		}
 	}
 }
\ No newline at end of file
diff --git a/components/no-data.vue b/components/no-data.vue
index bcef415..833f337 100644
--- a/components/no-data.vue
+++ b/components/no-data.vue
@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<image src="../static/common/nodata.png" class="img-nodata"></image>
-		<view class="txt-nodata">小狗狗尽力了,没有找到数据</view>
+		<view class="txt-nodata">尽力了,没有找到数据</view>
 	</view>
 </template>
 
diff --git a/main.js b/main.js
index 2069687..faf878b 100644
--- a/main.js
+++ b/main.js
@@ -19,6 +19,34 @@
 
 Vue.mixin(mixinsCommon)
 
+// main.js
+import uView from 'uview-ui'
+Vue.use(uView)
+
+// 调用setConfig方法,方法内部会进行对象属性深度合并,可以放心嵌套配置
+// 需要在Vue.use(uView)之后执行
+uni.$u.setConfig({
+	// 修改$u.config对象的属性
+	config: {
+		// 修改默认单位为rpx,相当于执行 uni.$u.config.unit = 'rpx'
+		unit: 'rpx'
+	},
+	// 修改$u.props对象的属性
+	props: {
+		// 修改radio组件的size参数的默认值,相当于执行 uni.$u.props.radio.size = 30
+		radio: {
+			size: 32,
+			labelSize:32
+		},
+		picker:{
+			confirmColor:'#20613D'
+		}
+		// 其他组件属性配置
+		// ......
+	}
+})
+
+
 
 import farmerfooter from '@/components/footer/farmer-footer'
 Vue.component('farmer-footer', farmerfooter)
diff --git a/package-lock.json b/package-lock.json
index 82d5d22..40c09c0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11 +1,825 @@
 {
-  "name": "schoolgo-app",
+  "name": "hmy_farmer",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "dependencies": {
-        "moment": "^2.30.1"
+        "moment": "^2.30.1",
+        "uview-ui": "^2.0.36"
+      },
+      "devDependencies": {
+        "sass": "^1.77.6",
+        "sass-loader": "^10.5.2"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@types/eslint": {
+      "version": "8.56.10",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz",
+      "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "node_modules/@types/eslint-scope": {
+      "version": "3.7.7",
+      "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+      "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/eslint": "*",
+        "@types/estree": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
+      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "20.14.8",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.8.tgz",
+      "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@webassemblyjs/ast": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+      "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/helper-numbers": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+      "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-api-error": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+      "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-buffer": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+      "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-numbers": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+      "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+      "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-wasm-section": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+      "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/ieee754": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+      "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "node_modules/@webassemblyjs/leb128": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+      "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/utf8": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+      "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/wasm-edit": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+      "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/helper-wasm-section": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-opt": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1",
+        "@webassemblyjs/wast-printer": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+      "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-opt": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+      "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-parser": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+      "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-printer": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+      "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/acorn": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
+      "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-import-attributes": {
+      "version": "1.9.5",
+      "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+      "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+      "dev": true,
+      "peer": true,
+      "peerDependencies": {
+        "acorn": "^8"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+      "dev": true,
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.23.1",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.1.tgz",
+      "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001629",
+        "electron-to-chromium": "^1.4.796",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.16"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001636",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz",
+      "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "peer": true
+    },
+    "node_modules/chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+      "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.811",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.811.tgz",
+      "integrity": "sha512-CDyzcJ5XW78SHzsIOdn27z8J4ist8eaFLhdto2hSMSJQgsiwvbv2fbizcKUICryw1Wii1TI/FEkvzvJsR3awrA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/emojis-list": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "5.17.0",
+      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+      "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/es-module-lexer": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+      "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/escalade": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
+      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/immutable": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+      "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+      "dev": true
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/klona": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
+      "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/loader-runner": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.11.5"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
       }
     },
     "node_modules/moment": {
@@ -15,13 +829,1376 @@
       "engines": {
         "node": "*"
       }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
+      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
+      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "peer": true
+    },
+    "node_modules/sass": {
+      "version": "1.77.6",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.6.tgz",
+      "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+      "dev": true,
+      "dependencies": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/sass-loader": {
+      "version": "10.5.2",
+      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-10.5.2.tgz",
+      "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==",
+      "dev": true,
+      "dependencies": {
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.0.0",
+        "semver": "^7.3.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "fibers": ">= 3.1.0",
+        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+        "sass": "^1.3.0",
+        "webpack": "^4.36.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "fibers": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/schema-utils": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
+      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+      "dev": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/serialize-javascript": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+      "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
+      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
+    "node_modules/tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser": {
+      "version": "5.31.1",
+      "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.1.tgz",
+      "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/terser-webpack-plugin": {
+      "version": "5.3.10",
+      "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+      "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.20",
+        "jest-worker": "^27.4.5",
+        "schema-utils": "^3.1.1",
+        "serialize-javascript": "^6.0.1",
+        "terser": "^5.26.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^5.1.0"
+      },
+      "peerDependenciesMeta": {
+        "@swc/core": {
+          "optional": true
+        },
+        "esbuild": {
+          "optional": true
+        },
+        "uglify-js": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.16",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+      "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "escalade": "^3.1.2",
+        "picocolors": "^1.0.1"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/uview-ui": {
+      "version": "2.0.36",
+      "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.36.tgz",
+      "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA==",
+      "engines": {
+        "HBuilderX": "^3.1.0"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz",
+      "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "5.92.1",
+      "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.92.1.tgz",
+      "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/eslint-scope": "^3.7.3",
+        "@types/estree": "^1.0.5",
+        "@webassemblyjs/ast": "^1.12.1",
+        "@webassemblyjs/wasm-edit": "^1.12.1",
+        "@webassemblyjs/wasm-parser": "^1.12.1",
+        "acorn": "^8.7.1",
+        "acorn-import-attributes": "^1.9.5",
+        "browserslist": "^4.21.10",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^5.17.0",
+        "es-module-lexer": "^1.2.1",
+        "eslint-scope": "5.1.1",
+        "events": "^3.2.0",
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.2.11",
+        "json-parse-even-better-errors": "^2.3.1",
+        "loader-runner": "^4.2.0",
+        "mime-types": "^2.1.27",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.2.0",
+        "tapable": "^2.1.1",
+        "terser-webpack-plugin": "^5.3.10",
+        "watchpack": "^2.4.1",
+        "webpack-sources": "^3.2.3"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10.13.0"
+      }
     }
   },
   "dependencies": {
+    "@jridgewell/gen-mapping": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      }
+    },
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "dev": true,
+      "peer": true
+    },
+    "@jridgewell/set-array": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+      "dev": true,
+      "peer": true
+    },
+    "@jridgewell/source-map": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25"
+      }
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true,
+      "peer": true
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "@types/eslint": {
+      "version": "8.56.10",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz",
+      "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "@types/eslint-scope": {
+      "version": "3.7.7",
+      "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+      "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/eslint": "*",
+        "@types/estree": "*"
+      }
+    },
+    "@types/estree": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
+      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+      "dev": true,
+      "peer": true
+    },
+    "@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "20.14.8",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.8.tgz",
+      "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+      "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/helper-numbers": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+      "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+      "dev": true,
+      "peer": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+      "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+      "dev": true,
+      "peer": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+      "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+      "dev": true,
+      "peer": true
+    },
+    "@webassemblyjs/helper-numbers": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+      "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+      "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+      "dev": true,
+      "peer": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+      "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.12.1"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+      "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+      "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+      "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+      "dev": true,
+      "peer": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+      "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/helper-wasm-section": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-opt": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1",
+        "@webassemblyjs/wast-printer": "1.12.1"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+      "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+      "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+      "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+      "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+      "dev": true,
+      "peer": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+      "dev": true,
+      "peer": true
+    },
+    "acorn": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
+      "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
+      "dev": true,
+      "peer": true
+    },
+    "acorn-import-attributes": {
+      "version": "1.9.5",
+      "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+      "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {}
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+      "dev": true,
+      "requires": {}
+    },
+    "anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+      "dev": true
+    },
+    "braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.1.1"
+      }
+    },
+    "browserslist": {
+      "version": "4.23.1",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.1.tgz",
+      "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001629",
+        "electron-to-chromium": "^1.4.796",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.16"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true,
+      "peer": true
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001636",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz",
+      "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==",
+      "dev": true,
+      "peer": true
+    },
+    "chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "dev": true,
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      }
+    },
+    "chrome-trace-event": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+      "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+      "dev": true,
+      "peer": true
+    },
+    "commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "dev": true,
+      "peer": true
+    },
+    "electron-to-chromium": {
+      "version": "1.4.811",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.811.tgz",
+      "integrity": "sha512-CDyzcJ5XW78SHzsIOdn27z8J4ist8eaFLhdto2hSMSJQgsiwvbv2fbizcKUICryw1Wii1TI/FEkvzvJsR3awrA==",
+      "dev": true,
+      "peer": true
+    },
+    "emojis-list": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+      "dev": true
+    },
+    "enhanced-resolve": {
+      "version": "5.17.0",
+      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+      "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
+      }
+    },
+    "es-module-lexer": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+      "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+      "dev": true,
+      "peer": true
+    },
+    "escalade": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
+      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "dev": true,
+      "peer": true
+    },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true,
+      "peer": true
+    },
+    "events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "dev": true,
+      "peer": true
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "optional": true
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+      "dev": true,
+      "peer": true
+    },
+    "graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true,
+      "peer": true
+    },
+    "has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "peer": true
+    },
+    "immutable": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+      "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
+    },
+    "jest-worker": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      }
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "dev": true,
+      "peer": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true
+    },
+    "klona": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
+      "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+      "dev": true
+    },
+    "loader-runner": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+      "dev": true,
+      "peer": true
+    },
+    "loader-utils": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+      "dev": true,
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      }
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true,
+      "peer": true
+    },
+    "mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "dev": true,
+      "peer": true
+    },
+    "mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "mime-db": "1.52.0"
+      }
+    },
     "moment": {
       "version": "2.30.1",
       "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz",
       "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "node-releases": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
+      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+      "dev": true,
+      "peer": true
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
+      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "dev": true,
+      "peer": true
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
+    },
+    "punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "peer": true
+    },
+    "sass": {
+      "version": "1.77.6",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.6.tgz",
+      "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+      "dev": true,
+      "requires": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      }
+    },
+    "sass-loader": {
+      "version": "10.5.2",
+      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-10.5.2.tgz",
+      "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==",
+      "dev": true,
+      "requires": {
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.0.0",
+        "semver": "^7.3.2"
+      }
+    },
+    "schema-utils": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
+      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+      "dev": true,
+      "requires": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      }
+    },
+    "semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true
+    },
+    "serialize-javascript": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+      "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "peer": true
+    },
+    "source-map-js": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
+      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "dev": true
+    },
+    "source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "supports-color": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "has-flag": "^4.0.0"
+      }
+    },
+    "tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+      "dev": true,
+      "peer": true
+    },
+    "terser": {
+      "version": "5.31.1",
+      "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.1.tgz",
+      "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "5.3.10",
+      "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+      "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@jridgewell/trace-mapping": "^0.3.20",
+        "jest-worker": "^27.4.5",
+        "schema-utils": "^3.1.1",
+        "serialize-javascript": "^6.0.1",
+        "terser": "^5.26.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true,
+      "peer": true
+    },
+    "update-browserslist-db": {
+      "version": "1.0.16",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+      "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "escalade": "^3.1.2",
+        "picocolors": "^1.0.1"
+      }
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "uview-ui": {
+      "version": "2.0.36",
+      "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.36.tgz",
+      "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA=="
+    },
+    "watchpack": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz",
+      "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "webpack": {
+      "version": "5.92.1",
+      "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.92.1.tgz",
+      "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/eslint-scope": "^3.7.3",
+        "@types/estree": "^1.0.5",
+        "@webassemblyjs/ast": "^1.12.1",
+        "@webassemblyjs/wasm-edit": "^1.12.1",
+        "@webassemblyjs/wasm-parser": "^1.12.1",
+        "acorn": "^8.7.1",
+        "acorn-import-attributes": "^1.9.5",
+        "browserslist": "^4.21.10",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^5.17.0",
+        "es-module-lexer": "^1.2.1",
+        "eslint-scope": "5.1.1",
+        "events": "^3.2.0",
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.2.11",
+        "json-parse-even-better-errors": "^2.3.1",
+        "loader-runner": "^4.2.0",
+        "mime-types": "^2.1.27",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.2.0",
+        "tapable": "^2.1.1",
+        "terser-webpack-plugin": "^5.3.10",
+        "watchpack": "^2.4.1",
+        "webpack-sources": "^3.2.3"
+      }
+    },
+    "webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "dev": true,
+      "peer": true
     }
   }
 }
diff --git a/package.json b/package.json
index 15f364f..8602d51 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,10 @@
 {
   "dependencies": {
-    "moment": "^2.30.1"
+    "moment": "^2.30.1",
+    "uview-ui": "^2.0.36"
+  },
+  "devDependencies": {
+    "sass": "^1.77.6",
+    "sass-loader": "^10.5.2"
   }
 }
diff --git a/pages.json b/pages.json
index da97997..9c356b7 100644
--- a/pages.json
+++ b/pages.json
@@ -1,4 +1,8 @@
 {
+	// 如果您是通过uni_modules形式引入uView,可以忽略此配置
+	"easycom": {
+		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+	},
 	"pages": [{
 			"path": "pages/login/farmer-login",
 			"style": {
@@ -40,7 +44,7 @@
 			"path": "pages/order/order",
 			"style": {
 				"navigationBarTitleText": "我的订单",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": true
 			}
 		},
 
@@ -48,28 +52,28 @@
 			"path": "pages/login/farmer-reg",
 			"style": {
 				"navigationBarTitleText": "申请入住",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/farmer/order-settlement/order-settlement",
 			"style": {
 				"navigationBarTitleText": "账单结算",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/farmer/flower-manage/flower-manage",
 			"style": {
 				"navigationBarTitleText": "商品管理",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/farmer/order-sale/order-sale",
 			"style": {
 				"navigationBarTitleText": "售后理赔",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": true
 			}
 		},
 		{
@@ -78,16 +82,31 @@
 				"navigationBarTitleText": "扣款记录",
 				"enablePullDownRefresh": false,
 				"navigationBarBackgroundColor": "#E6F2EB"
-				
+
 			}
 		},
 		{
-			"path" : "pages/farmer/flower-manage/flower-add",
+			"path": "pages/farmer/flower-manage/flower-add",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path" : "pages/notice/notice",
 			"style" : 
 			{
-				"navigationBarTitleText" : "",
+				"navigationBarTitleText" : "通知公告",
 				"enablePullDownRefresh" : false
 			}
+		},
+		{
+			"path" : "pages/notice/list",
+			"style" : 
+			{
+				"navigationBarTitleText" : "通知公告",
+				"enablePullDownRefresh" : true
+			}
 		}
 	],
 	"globalStyle": {
diff --git a/pages/farmer/flower-manage/flower-add.vue b/pages/farmer/flower-manage/flower-add.vue
index 421428e..0fe2353 100644
--- a/pages/farmer/flower-manage/flower-add.vue
+++ b/pages/farmer/flower-manage/flower-add.vue
@@ -1,12 +1,10 @@
 <template>
-	<view class="container-page">
+	<view class="container-page" style="padding: 0rpx;">
 		<view>
 			<view class="form-item">
-				<view class="label required">商品分类</view>
+				<view class="label required">商品分类todo</view>
 				<view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_category=true
-					}
+					show_select_category=true
 				}">
 					<view>{{dto.categoryStr||dto.category || '请选择'}}</view>
 					<u-icon class="m-l-a" name="arrow-right"></u-icon>
@@ -14,59 +12,75 @@
 
 			</view>
 			<view class="form-item before-line">
+				<view class="label required">商品名称</view>
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.name" placeholder="请输入商品名称" style="margin-top: 16px;text-align: right;"></input>
+
+				</view>
+			</view>
+			<view class="form-item before-line">
 				<view class="label required">商品单位</view>
 				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.applicationTitle" placeholder="请输入店铺名称"
-						style="margin-top: 16px;text-align: right;"></input>
+					<input v-model="dto.unit" placeholder="请输入商品单位" style="margin-top: 16px;text-align: right;"></input>
 
 				</view>
 			</view>
 			<view class="form-item before-line">
 				<view class="label required">商品颜色</view>
-				<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_type=true
-					}
+				<!-- 	<view class="m-l-a m-r-0 flex " :class="[!dto.color?'desc-gray':'']" @click="()=>{
+					show_select_color=true
 				}">
 					<view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view>
 					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view> -->
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.color" placeholder="请输入商品颜色"
+						style="margin-top: 16px;text-align: right;"></input>
 				</view>
-
 			</view>
 			<view class="line-gray-big"></view>
 
 			<view class="form-item">
-				<view class="label required">列表封面图(130*120px)</view>
+				<view class="label required" style="width: 400rpx;">列表封面图(130*120px)</view>
 				<view class="m-l-a m-r-0 flex">
-					<view class="component-button-upload" @click="uploadIcon('icon')"
-						:style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}">
+					<view class="component-button-upload" @click="uploadIcon('cover')"
+						:style="{'background-image':dto.icon&&`url('${dto.cover}')`||''}">
 
 					</view>
 				</view>
 			</view>
-			<view class="form-item before-line">
-				<view class="label required">商品轮播图(300*160px)</view>
+			<view class="form-item before-line bottom-border-no">
+				<view class="label required" style="width: 400rpx;">商品轮播图(300*160px)</view>
 				<view class="m-l-a m-r-0 flex">
-					<view class="component-button-upload" @click="uploadIcon('icon')"
-						:style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}">
+					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
+					<view class="component-button-upload" @click="uploadIcon('bannerList')">
 
 					</view>
+				</view>
+			</view>
+			<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
+				v-if="dto.bannerList&&dto.bannerList.length>0">
+				<view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.bannerList" :key="index">
+					<image class="banner-img" :src="tBanner" @click.stop="previewImg(tBanner)">
+
+					</image>
+					<view class="t-red text-center" @click.stop="deleteBanner(index)">删除</view>
 				</view>
 			</view>
 			<view class="line-gray-big"></view>
 
 
 			<view class="form-item before-line">
-				<view class="label required">售价</view>
+				<view class="label required">售价(元)</view>
 				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.applicationTitle" placeholder="请输入数字" type="digit"
+					<input v-model="dto.price" placeholder="请输入数字" type="digit"
 						style="margin-top: 16px;text-align: right;"></input>
 				</view>
 			</view>
-			<view class="form-item before-line">
+			<view class="form-item ">
 				<view class="label required">库存</view>
 				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.applicationTitle" placeholder="请输入数字" type="number"
+					<input v-model="dto.stock" placeholder="请输入数字" type="number"
 						style="margin-top: 16px;text-align: right;"></input>
 				</view>
 			</view>
@@ -76,11 +90,18 @@
 			<view class="form-item ">
 				<view class="label required">商品参数详情</view>
 				<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_type=true
+					if(!dto.category){
+						$message.showToast('请先选择分类')
+					}else{
+						if(dto.params&&dto.params.length==0){
+							$message.showToast('暂无参数可以设置')
+						}else{
+							$refs.popup_param.open()
+						}
+						
 					}
 				}">
-					<view>{{dto.applicationTypeStr||dto.applicationType || '去设置'}}</view>
+					<view>{{ '去设置'}}</view>
 					<u-icon class="m-l-a" name="arrow-right"></u-icon>
 				</view>
 
@@ -88,12 +109,10 @@
 			<view class="line-gray-big"></view>
 			<view class="form-item before-line">
 				<view class="label required">商品等级</view>
-				<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_type=true
-					}
+				<view class="m-l-a m-r-0 flex " :class="[!dto.level?'desc-gray':'']" @click="()=>{
+					show_select_level=true
 				}">
-					<view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view>
+					<view>{{dto.levelStr||dto.level || '请选择'}}</view>
 					<u-icon class="m-l-a" name="arrow-right"></u-icon>
 				</view>
 
@@ -103,16 +122,21 @@
 			<view class="form-item before-line">
 				<view class="label required">商品视频</view>
 				<view class="m-l-a m-r-0 flex">
-					<view class="component-button-upload m-r-15" @click="uploadIcon('icon')"
-						:style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}">
+					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
+					<view class="component-button-upload m-r-15" @click="uploadIcon('video')">
 
 					</view>
 
 				</view>
 			</view>
+			<view v-if="dto.video">
+				<video :src="dto.video" style="display: block;margin: 0 auto;"></video>
+			</view>
 
-
-			<view class="button-green-1 m-t-20 button-fixed-bottom before-line" @click="submit" v-if="!dto.id">
+			<view style="min-height: 200rpx;">
+				&nbsp;
+			</view>
+			<view class="button-green-1 m-t-20 button-fixed-bottom " @click="submit" v-if="!dto.id">
 				提交审核
 			</view>
 			<view class="button-green-1 m-t-20 button-fixed-bottom before-line" @click="submit" v-if="dto.id">
@@ -121,12 +145,33 @@
 		</view>
 
 
-		<u-picker @confirm="select_category" keyName="label" @cancel="show_select_category=false" :show="show_select_category"
-			:columns="columns_types"></u-picker>
+		<u-picker @confirm="select_category" keyName="name" @cancel="show_select_category=false"
+			:show="show_select_category" :columns="columns_categorys"></u-picker>
 
-		<u-picker @confirm="select_user" keyName="label" @cancel="show_select_user=false" :show="show_select_user"
-			:columns="userListCols"></u-picker>
+		<u-picker @confirm="select_level" keyName="label" @cancel="show_select_level=false" :show="show_select_level"
+			:columns="columns_levels"></u-picker>
 
+
+		<uni-popup ref="popup_param" type="top">
+			<view class="component-popup_input" v-if="dto.params">
+				<view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view>
+				<!-- 输入框-->
+				<view v-for="(item,i) in dto.params" :key="i" class="m-b-20">
+					<view class="title topic-font" style="font-size: 36rpx;font-weight: 600;">{{item.name}}</view>
+					<view class="m-t-12">
+						<u-radio-group v-model="item.value" placement="row">
+							<u-radio
+								:customStyle="{'margin-bottom': '16rpx','margin-right': '24rpx','font-size':'28rpx'}"
+								v-for="(each, j) in item.values" :key="j" :label="each" :name="each">
+							</u-radio>
+						</u-radio-group>
+					</view>
+				</view>
+
+				<!-- 提交按钮 -->
+				<view class="button-green" @click="closeParamPop">返回</view>
+			</view>
+		</uni-popup>
 
 	</view>
 </template>
@@ -158,15 +203,18 @@
 					params: [], //id,value
 				},
 				show_select_category: false,
-				show_select_user: false,
+				show_select_level: false,
 				columns_categorys: [],
-				columns_levels:[],
-
+				columns_levels: [],
+				// 	columns_params: [], //弹窗选择具体的值
 			}
 		},
 		async onLoad(options) {
 			if (options.id) {
 				this.id = options.id
+				uni.setNavigationBarTitle({
+					title: '商品详情'
+				})
 				this.getDetail()
 			} else {
 				if (options.copyId) {
@@ -174,25 +222,28 @@
 					await this.getDetail()
 					this.id = ''
 					delete this.dto.id
+					uni.setNavigationBarTitle({
+						title: '复制商品并新增'
+					})
+				} else {
+					uni.setNavigationBarTitle({
+						title: '商品新增'
+					})
 				}
-				
+
 				//tree
-				this.$http.request('get', '/api/flower/category/tree', {
-					params: {
-						typeCode: 'FLOWER_LEVEL'
-					}
-				}).then(res => {
+				this.$http.request('get', '/api/flower/category/tree', {}).then(res => {
 					var data = res.data
 					this.columns_categorys = [data || []]
 					this.columns_categorys[0].unshift({
 						label: '全部',
 						value: '',
-						children:[]
+						children: []
 					})
 
 				})
-				
-				this.$http.request('get', '/api/dict/value', {
+
+				this.$http.request('get', '/api/code/value', {
 					params: {
 						typeCode: 'FLOWER_LEVEL'
 					}
@@ -210,17 +261,48 @@
 		},
 
 		methods: {
-
-
-			select_category(e) {
-				this.show_select_category = false
-				this.dto.categoryStr = e.value[0].label
-				this.dto.category = e.value[0].value
+			closeParamPop() {
+				this.$refs.popup_param.close()
 			},
-			select_user(e) {
-				this.show_select_user = false
-				this.dto.auditPersonStr = e.value[0].label
-				this.dto.auditPersonId = e.value[0].value
+
+			async select_category(e) {
+				if (e.value[0].id !== this.dto.category) {
+					if (this.dto.category) {
+						await this.$message.confirm('修改分类将清空商品参数,确定修改吗')
+					}
+					console.log('select_category', e)
+					this.show_select_category = false
+					this.dto.categoryStr = e.value[0].name
+					this.dto.category = e.value[0].id
+					this.$message.showLoading()
+					await this.refresh_category()
+					this.$message.hideLoading()
+				} else {
+
+				}
+
+			},
+			async refresh_category() {
+				// this.columns_params = []
+				this.dto.params = []
+				//获取分类参数
+				if (this.dto.category) {
+					const res = await this.$http.request('get', '/api/supplier/flower/params', {
+						params: {
+							categoryId: this.dto.category
+						}
+					})
+					if (res.code == 0) {
+						// this.columns_params = res.data || []
+						this.dto.params = res.data || []
+					}
+				}
+
+			},
+			select_level(e) {
+				this.show_select_level = false
+				this.dto.levelStr = e.value[0].label
+				this.dto.level = e.value[0].value
 			},
 
 			async getDetail() {
@@ -238,7 +320,12 @@
 					// 	this.dto.applicationDate = this.$util.toDate(new Date(this.dto.applicationDate))
 					// }
 					// // console.log('this.dto', this.dto)
-
+					if (!this.dto.bannerList) {
+						this.dto.bannerList = []
+					}
+					// if (this.dto.category) {
+					// 	await this.refresh_category()
+					// }
 				}
 
 				this.$message.hideLoading()
@@ -279,34 +366,72 @@
 					this.backpage()
 				}
 			},
-
+			async deleteBanner(index) {
+				await this.$message.confirm('是否确认删除此图片')
+				// this.dto.bannerList  = 
+				this.dto.bannerList.splice(index, 1)
+			},
 			uploadIcon(key) {
+				console.log('that dto key', key)
 				const that = this
-				uni.chooseImage({
-					count: 1, // 最多可以选择的图片张数,默认9
-					sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
-					sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
-					success: function({
-						errMsg,
-						tempFiles
-					}) {
-						if (errMsg === 'chooseImage:ok') {
-							// console.log(tempFiles[0])
-							that.$message.showLoading()
-							that.$http.upload(tempFiles[0].path).then(async res => {
-								var pic = res.data && res.data.length > 0 && res.data[
-										0]
-									.url || ''
-								that.$message.hideLoading()
-								that.dto[key] = pic || ''
-								that.$forceUpdate()
-							}).catch(res => {
-								that.$message.hideLoading()
+				if (key == 'video') {
+					uni.chooseVideo({
+						sourceType: ['camera', 'album'],
+						success: function(res) {
+							if (res.tempFilePath) {
+								console.log('res.tempFilePath', res.tempFilePath)
+								that.$message.showLoading()
+								that.$http.upload(res.tempFilePath).then(async res => {
+									console.log('res1', res)
+									var pic = res.data && res.data.length > 0 && res.data[
+											0]
+										.url || ''
+									that.$message.hideLoading()
+									that.dto[key] = pic || ''
 
-							})
+									that.$forceUpdate()
+									console.log('that dto', that.dto)
+								}).catch(res => {
+									that.$message.hideLoading()
+									console.error(res)
+								})
+							}
 						}
-					}
-				})
+					});
+				} else {
+
+					uni.chooseImage({
+						count: 1, // 最多可以选择的图片张数,默认9
+						sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
+						sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
+						success: function({
+							errMsg,
+							tempFiles
+						}) {
+							if (errMsg === 'chooseImage:ok') {
+								// console.log(tempFiles[0])
+								that.$message.showLoading()
+								that.$http.upload(tempFiles[0].path).then(async res => {
+									console.log('res1', res)
+									var pic = res.data && res.data.length > 0 && res.data[
+											0]
+										.url || ''
+									that.$message.hideLoading()
+									if (key == 'bannerList') {
+										that.dto[key].push(pic)
+									} else {
+										that.dto[key] = pic || ''
+									}
+
+									that.$forceUpdate()
+								}).catch(res => {
+									that.$message.hideLoading()
+									console.error(res)
+								})
+							}
+						}
+					})
+				}
 			},
 
 		},
@@ -320,10 +445,18 @@
 </script>
 
 <style lang="scss" scoped>
+	.banner-img {
+		width: 96rpx;
+		height: 96rpx;
+		border-radius: 4rpx;
+		border: 2rpx dashed #CECECE;
+	}
+
 	.form-item {
 		// padding: 40rpx;
 		border-bottom: 1px solid #F3F3F3;
 		display: flex;
+		padding: 20rpx;
 		// height: 100px;
 
 		.label {
@@ -343,6 +476,7 @@
 
 
 		}
+
 	}
 
 	.form-item.bottom-border-no {
diff --git a/pages/farmer/flower-manage/flower-manage.vue b/pages/farmer/flower-manage/flower-manage.vue
index 3b6f2db..2e1e6f1 100644
--- a/pages/farmer/flower-manage/flower-manage.vue
+++ b/pages/farmer/flower-manage/flower-manage.vue
@@ -4,7 +4,7 @@
 			<view @click.stop="clickButton('add')" class="button button-add"></view>
 			<view @click.stop="clickButton('in')" class="button button-search-in"></view>
 			<view @click.stop="clickButton('unpass')" class="button button-search-unpass"></view>
-			<view @click.stop="clickButton('inpass')" class="button button-search-inpass"></view>
+			<view @click.stop="clickButton('inpass')" class="button button-search-inpass" style="flex:5"></view>
 			<view @click.stop="clickButton('delete')" class="button button-search-delete"></view>
 
 		</view>
@@ -14,38 +14,43 @@
 			<view v-for="(item,index) in list" :key="index" class="m-b-24 flow-manage-list">
 				<view class="flow-manage-list-item">
 					<view class="flex">
-						<image class="flower-img img100 m-r-6" :src="item.img" @click="previewImg(item.img)"></image>
-						<view>
-							<view class="flex">
-								<view class="title">{{item.title}}<span class="level">A级别</span></view>
-								<view class="t-red m-l-a m-r-0">
-									¥20.00/扎
+						<image class="flower-img img100 m-r-6" :src="item.cover" @click="previewImg(item.cover)">
+						</image>
+						<view class="flex1">
+							<view class=" flex">
+								<view class="title">{{item.name}}<span class="level">{{item.levelStr}}</span></view>
+								<view class="m-l-a m-r-0">
+									{{item.categoryStr || '-'}}
 								</view>
 							</view>
-							<view class="each-list">
+							<view class="each-list m-t-12">
 								<view class="each-item">
-									<view class="label">分类</view>
-									<view class="value">卡罗拉</view>
+									<view class="label">状态</view>
+									<view class="value">{{item.statusStr || '-'}}</view>
 
 								</view>
 								<view class="each-item">
 									<view class="label">颜色</view>
-									<view class="value">红色</view>
+									<view class="value">{{item.color || '-'}}</view>
 
 								</view>
 								<view class="each-item">
 									<view class="label">规格</view>
-									<view class="value">20支/扎</view>
+									<view class="value">{{item.unit || '-'}}</view>
 
 								</view>
 								<view class="each-item">
 									<view class="label">库存</view>
-									<view class="value">10</view>
+									<view class="value">{{item.stock || 0}}</view>
 
 								</view>
 								<view class="each-item">
 									<view class="label">销量</view>
-									<view class="value">10</view>
+									<view class="value">{{item.sales || 0}}</view>
+								</view>
+								<view class="each-item">
+									<view class="label">价格</view>
+									<view class="value">{{item.price||'-'}}</view>
 								</view>
 							</view>
 						</view>
@@ -54,13 +59,16 @@
 
 					</view>
 					<view class="buttons">
-						<view class="button" @click.stop="toDetailAdd(item)">复制</view>
-						<view class="button" @click.stop="buttonDelete(item)">删除</view>
+						<view class="button" @click.stop="toDetail(item)">编辑</view>
+
 						<view class="button" @click.stop="buttonStatus(item,'off')" v-if="item.status=='UP'">下架</view>
 						<view class="button" @click.stop="buttonStatus(item,'up')" v-if="item.status=='OFF'">上架</view>
-						<view class="button" @click.stop="toDetail(item)">编辑</view>
-						<view class="button" @click.stop="changeValue(item,'price')">价格</view>
-						<view class="button" @click.stop="changeValue(item,'stock')">库存</view>
+						<view class="button" @click.stop="openValue(item,'price')">价格</view>
+						<view class="button" @click.stop="openValue(item,'stock')">库存</view>
+						<view class="button" @click.stop="toDetailAdd(item)">复制</view>
+
+						<view class="button t-red" @click.stop="buttonDelete(item)">删除</view>
+
 					</view>
 				</view>
 			</view>
@@ -68,6 +76,18 @@
 
 		<!-- 判断是否到底了,自动吧 -->
 		<footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
+
+		<uni-popup ref="popup_input" type="bottom">
+			<view class="component-popup_input">
+
+				<!-- 输入框-->
+				<uni-easyinput class="p9-12" maxlength="100" type="textarea" v-model="content"
+					:placeholder="inputplaceholder"></uni-easyinput>
+
+				<!-- 提交按钮 -->
+				<view class="button-green" @click="submitValue">提交</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
@@ -78,7 +98,11 @@
 				type: 'all',
 				query: {
 					type: ''
-				}
+				},
+				content: '',
+				currentInputDto: {},
+				currentInputKey: '',
+				inputplaceholder:'',
 			}
 		},
 		onLoad(options) {
@@ -112,21 +136,31 @@
 			uni.stopPullDownRefresh()
 		},
 		methods: {
-			async changeValue(item, key) {
+			async openValue(item, key) {
+				this.content = item[key] || ''
+				this.currentInputDto = item
+				this.currentInputKey = key
+				this.inputplaceholder = key=='price'&&'请输入价格(元)' || key=='stock'&&'请输入库存(整数)'  || '请输入'
+				this.$refs.popup_input.open('top')
+			},
+			async submitValue() {
+				let item = this.currentInputDto,
+					key = this.currentInputKey
 				const res = await this.$message.confirm(`确定修改此商品的${key==='price'&&'价格'|| key==='stock'&&'库存'}吗`, {
-					editable: true
+					editable: false
 				})
-				if(!res.content){
+
+				if (!this.content) {
 					this.$message.showToast('输入不能为空')
 					return
 				}
 				var value = ''
-				if(key=='price'){
-					value = parseFloat(res.content).toFixed(2)
-				}else{
-					value = parseInt(res.content)
+				if (key == 'price') {
+					value = parseFloat(this.content).toFixed(2)
+				} else {
+					value = parseInt(this.content)
 				}
-				if(isNaN(value)){
+				if (isNaN(value)) {
 					this.$message.showToast('输入格式不正确')
 					return
 				}
@@ -143,6 +177,8 @@
 					if (res.code == 0) {
 						this.$message.showToast('操作成功')
 						item[key] = value
+						this.$refs.popup_input.close()
+
 					}
 				}).finally(() => {
 					this.$message.hideLoading()
@@ -210,11 +246,28 @@
 <style lang="scss" scoped>
 	.flow-manage {
 		.flow-manage-list {
-			margin: 20rpx 30rpx;
+			// padding: 20rpx 30rpx;
 			padding: 22rpx;
+			background-color: #fff;
 
-			.flow-manage-item {
+			.flow-manage-list-item {
+
 				margin-bottom: 20rpx;
+
+				.title {
+					font-weight: 600;
+					font-size: 28rpx;
+					color: #000000;
+					line-height: 40rpx;
+
+					.level {
+						font-weight: 400;
+						font-size: 28rpx;
+						color: #20613D;
+						line-height: 40rpx;
+						margin-left: 20rpx;
+					}
+				}
 
 				.buttons {
 					display: flex;
@@ -222,16 +275,18 @@
 					.button {
 						margin: 0 auto;
 						width: 98rpx;
-						height: 48rpx;
+						line-height: 48rpx;
 						border-radius: 24rpx;
 						border: 2rpx solid #CECECE;
+						text-align: center;
 					}
 				}
 
 				.flower-img {
 					width: 128rpx;
 					height: 118rpx;
-
+					min-width: 128rpx;
+					min-height: 118rpx;
 				}
 
 				.each-list {
@@ -242,11 +297,16 @@
 						min-width: 30%;
 						max-width: 40%;
 						text-align: center;
+						margin-left: 0rpx;
+						margin-right: auto;
+						display: flex;
 
 						.label {
 							font-weight: 400;
 							font-size: 24rpx;
 							color: #666666;
+							text-align: left;
+							padding-right: 10rpx;
 						}
 
 						.label::after {
@@ -261,16 +321,29 @@
 
 		.top-buttons {
 			display: flex;
-			margin: 22rpx 42rpx;
+			padding: 22rpx 42rpx;
+			background-color: #fff;
 
 			.button {
 				// flex:1;
 				margin: 0 auto;
-				width: 96rpx;
-				height: 130rpx;
+				width: 90rpx;
+				height: 146rpx;
 				background-size: 100% 100%;
+				text-align: center;
+				// min-width: 90rpx;
+				flex: 4;
+				// max-width: 90rpx;
+				margin-left:14rpx;
+				margin-right:14rpx;
 			}
 
+			.button:first-child {
+				margin-left: 0rpx
+			}
+			.button:last-child {
+				margin-right: 0rpx
+			}
 			.button-add {
 				background-image: url('@/static/images/farmer/flower/flower-mange-icon-add-flower.png');
 
diff --git a/pages/farmer/order-settlement/order-settlement.vue b/pages/farmer/order-settlement/order-settlement.vue
index e497857..3ee93cc 100644
--- a/pages/farmer/order-settlement/order-settlement.vue
+++ b/pages/farmer/order-settlement/order-settlement.vue
@@ -90,8 +90,9 @@
 		methods: {
 			changeIndex(index) {
 				if (this.tabIndex !== index) {
-					this.changeIndex = index
+					this.tabIndex = index
 					// 刷新 query
+					this.refreshList()
 				}
 			},
 			toDetail(item) {
diff --git a/pages/home/farmer-home.vue b/pages/home/farmer-home.vue
index a78575b..56a6f9e 100644
--- a/pages/home/farmer-home.vue
+++ b/pages/home/farmer-home.vue
@@ -5,27 +5,22 @@
 		</view> -->
 		<!-- 背景图 -->
 		<view class="top-bg" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }">
-			<view class="title" style="position: relative;"  >
-				我<uni-icons type="settings"></uni-icons>
- 
+			<view class="title" style="position: relative;">
+				首页
+
 			</view>
-			<view class="icons">
-				<image class="icon1" src="../../static/imgs/user/usr-icon1.png" mode="aspectFit"></image>
-				<image class="icon2" src="../../static/imgs/home/home-shop-top-icon.png" mode="aspectFit"></image>
-			</view>
-			<view class="flex m-20 user-info" @click="goto('/pages/user/user-info/user-info',true)"
-				v-if="currentInfo&&(currentInfo.id)">
+			<view class="flex m-t-20 user-info" v-if="currentInfo&&(currentInfo.id)">
 				<!-- 头像 -->
 				<image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png"
 					mode="aspectFit"></image>
 				<image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image>
 
-				<view class="name">
-					{{currentInfo.nickName || '-'}}
+				<view class="name" style="margin-top: 12rpx;">
+					<view class="t1">{{currentInfo.nickName || '-'}}</view>
+					<view class="t2 m-t-12">{{currentInfo.tel || '暂无电话'}}</view>
 				</view>
-				<uni-icons class="right-icon" type="right"></uni-icons>
 			</view>
- 
+
 
 		</view>
 		<view class="item-container">
@@ -84,54 +79,53 @@
 				</view>
 			</view>
 		</view>
-		<view class="item-container">
-			<view class="view">
+		<view class="item-container flex m-t-20" style="padding: 34rpx 44rpx;">
+			<view class="rate-view flex1" style="max-width: 140rpx;">
 				<view class="title">售后率</view>
 				<view class="title" style="color: red;">0.02%</view>
 			</view>
-			<view class="tj-panel green">
+			<view class="tj-panel green flex1">
 				<view class="name">今日待配送</view>
 				<view class="title">12扎</view>
 			</view>
-			<view class="tj-panel pink">
-				<view class="name">今日配送汇总</view>
+			<view class="tj-panel pink flex1">
+				<view class="name pink">今日配送汇总</view>
 				<view class="title">12扎</view>
 			</view>
 		</view>
-		<view class="p10">
-			<uni-notice-bar @click="getNoticeMore" class="notice-bar"
-				color="#333" background-color="#fff" show-get-more show-icon :scrollable="scrollable"
-				:text="currentNotice.title" :key="currentNotice.id" />
+		<view class="m-t-12" @click="getNoticeMore" >
+			<uni-notice-bar class="notice-bar" color="#333" background-color="#fff" show-get-more
+				show-icon :scrollable="scrollable" :text="currentNotice.title" :key="currentNotice.id" />
 			<span v-if="!currentNotice||!currentNotice.id">&nbsp;</span>
 		</view>
 		<view class="item-container">
 			<view class="title">常用功能</view>
 			<view class="flex order-icons m-t-12">
-				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-settlement',true)">
+				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-settlement/order-settlement',true)">
 					<view class="img-c">
-						<image class="icon margin-bottom order-icon zdjs" src="/static/images/farmer/user/user-icon-kkjl.png"
-							mode="scaleToFill" />
+						<image class="icon margin-bottom order-icon zdjs"
+							src="/static/images/farmer/user/user-icon-kkjl.png" mode="scaleToFill" />
 					</view>
 					<view class="order-desc tg">账单结算</view>
 				</view>
-				<view class="nav row margin-tb" @click="goto('/pages/farmer/flower-manage',true)">
+				<view class="nav row margin-tb" @click="goto('/pages/farmer/flower-manage/flower-manage',true)">
 					<view class="img-c">
-						<image class="icon margin-bottom order-icon spgl" src="/static/images/farmer/user/user-icon-spgl.png"
-							mode="scaleToFill" />
+						<image class="icon margin-bottom order-icon spgl"
+							src="/static/images/farmer/user/user-icon-spgl.png" mode="scaleToFill" />
 					</view>
 					<view class="order-desc cqw">商品管理</view>
 				</view>
-				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-sale',true)">
+				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-sale/order-sale',true)">
 					<view class="img-c">
-						<image class="icon margin-bottom order-icon shlp" src="/static/images/farmer/user/user-icon-shlp.png"
-							mode="scaleToFill" />
+						<image class="icon margin-bottom order-icon shlp"
+							src="/static/images/farmer/user/user-icon-shlp.png" mode="scaleToFill" />
 					</view>
 					<view class="order-desc syst">售后理赔</view>
 				</view>
-				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-records',true)">
+				<view class="nav row margin-tb" @click="goto('/pages/farmer/order-records/order-records',true)">
 					<view class="img-c">
-						<image class="icon margin-bottom order-icon kkjl" src="/static/images/farmer/user/user-icon-kkjl.png"
-							mode="scaleToFill" />
+						<image class="icon margin-bottom order-icon kkjl"
+							src="/static/images/farmer/user/user-icon-kkjl.png" mode="scaleToFill" />
 					</view>
 					<view class="order-desc wbsp">扣款记录</view>
 				</view>
@@ -142,7 +136,7 @@
 		</view>
 		<farmer-footer flg="0"></farmer-footer>
 
-	 
+
 	</view>
 </template>
 
@@ -155,25 +149,25 @@
 				tcode: '',
 				inviterName: '',
 				// StatusBar:0,
-				
+
 				//公告的
 				noticeList: [],
 				currentNoticeIndex: 0,
 				currentNotice: {
-				
+
 				},
 				scrollable: false,
-				
+
 			};
 		},
- 
+
 		onLoad(options) {
 			const url = options.q ? decodeURIComponent(options.q) : '';
-			const urlcode = options.url&&decodeURIComponent(options.url) || ''
+			const urlcode = options.url && decodeURIComponent(options.url) || ''
 		},
 		created() {
 			//公告
-			this.$http.request('get', '/api/ua/announcement/list', {
+			this.$http.request('get', '/api/announcement/page', {
 				params: {
 					size: 5,
 					status: 'A'
@@ -221,14 +215,16 @@
 				})
 			},
 
-		
 
-	
+
+
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
+	@import "../user/user.scss";
+
 	@import "./home.scss";
 </style>
 
diff --git a/pages/home/home.scss b/pages/home/home.scss
index cfb5ac2..8640718 100644
--- a/pages/home/home.scss
+++ b/pages/home/home.scss
@@ -1,6 +1,13 @@
 
-.main-container.home{
-	background-image: url('../../static/images/farmer/home/bg.png');
+.main-container{
+	// background-image: url('../../static/images/farmer/home/bg.png');
+	background: #E1F0E7;
+	.top-bg{
+		background-image: unset;
+		max-height: unset;
+		height: unset;
+		background-color: unset;
+	}
 	
 	.home-banner-image{
 		width: 750rpx;
@@ -78,11 +85,12 @@
 
 
 .main-container.farmer.home{
-	background-image: url('../../static/images/farmer/home/bg.png');
+	// background-image: url('../../static/images/farmer/home/bg.png');
 	min-height: 99vh;
-	
+	padding: 30rpx;
 	.item-container{
 		padding: 22rpx 28rpx;
+		background-color: #fff;
 		.title{
 			font-weight: 600;
 			font-size: 32rpx;
@@ -99,6 +107,8 @@
 			.tj-each{
 				flex:1;
 				text-align: center;
+				margin-top: 20rpx;
+				margin-bottom: 20rpx;
 				.num{
 					font-weight: 400;
 					font-size: 32rpx;
@@ -110,100 +120,125 @@
 					font-size: 24rpx;
 					color: #000000;
 					line-height: 34rpx;
+					margin-top: 12rpx;
 				}
 			}
-			.tj-panel{
-				border-radius: 6rpx;
-				.name{
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #000000;
-					line-height: 34rpx;
-				}
-				.name::after{
-				  width: 0;
-				  height: 0;
-				  border-top: 0px solid transparent;
-				  border-right: 12rpx solid transparent;
-				  border-left: 18rpx solid var(--topicdarkgray);
-				  border-bottom: 12rpx solid transparent; 
-				}
-				.num{
-					font-weight: 400;
-					font-size: 32rpx;
-					color: #20613D;
-					line-height: 44rpx;
-				}
-				
-			}
-			.tj-panel.pink{
-				background: #E7F6EB;
-			}
-			.tj-panel.green{
-				background: #FDF4E5;
-			}
+
 			
 			
-			.order-icon{
-				width: 80rpx;
-				height: 80rpx;
-				margin: 0 auto;
-				display: block;
+	
+		}
+		.rate-view{
+			padding-top: 16rpx;
+		}
+		.tj-panel{
+			border-radius: 6rpx;
+			max-width: 234rpx;
+			text-align: center;
+			margin-left: 20rpx;
+			padding-top: 16rpx;
+			height: 102rpx;
+			.name{
+				position: relative;
+				font-weight: 400;
+				font-size: 24rpx;
+				color: #000000;
+				line-height: 34rpx;
 			}
+			.name::after{
+				  content: '';
+				  position: absolute;
+				  top: 50%; /* 将三角形垂直居中 */
+				  left: 180rpx;
+				  transform: translateY(-50%) rotate(0deg); /* 旋转90度使三角形指向右,并垂直居中 */
+				  border-top: 12rpx solid transparent;
+				  border-left: 12rpx solid #20613D;
+				  border-bottom: 12rpx solid transparent;
+			}
+			.name.pink::after{
+				  content: '';
+				  position: absolute;
+				  top: 50%; /* 将三角形垂直居中 */
+				  transform: translateY(-50%) rotate(0deg); /* 旋转90度使三角形指向右,并垂直居中 */
+				  border-top: 12rpx solid transparent;
+				  border-left: 12rpx solid #936E32;
+				  border-bottom: 12rpx solid transparent;
+			}
+			.num{
+				font-weight: 400;
+				font-size: 32rpx;
+				color: #20613D;
+				line-height: 44rpx;
+			}
+			.title{
+				margin-top: 12rpx;
 				
-			.order-icons{
-				margin-top: 40rpx;
-				.nav{
-					flex: 1;
-				}
-				.margin-tb{
-					// margin-top: 24rpx;
-				}
-				.order-desc{
-					font-size: 28rpx;
-					color: #000000;
-					text-align: center;
-				}
-				.img-c{
-					// min-height: 68rpx;
-					// width: fit-content;
-					// margin: 0 auto;
-				}
-				.order-icon{
-					background-size: 100% 100%;
-					// display: inline-block;
-					// margin-left: auto;
-					// margin-right: auto;
-				}
-				.order-icon.zdjs{
-					margin-top: -8rpx;
-				width: 32rpx;
-				height: 42rpx;
-				}
-				.order-icon.spgl{
-					margin-top: -8rpx;
-					width: 48rpx;
-					height: 48rpx;
-				}
-				.order-icon.cqw{
-					// margin-top: 16rpx;
-					margin-top: -2rpx;
-					width: 54rpx;
-					height: 58rpx;
-				}
-				.order-icon.syst{
-					// margin-top: 12rpx;
-					// margin-top: 0rpx;
-					width: 58rpx;
-					height: 58rpx;
-				}
-				.order-icon.wbsp{
-					margin-top: -10rpx;
-					width: 52rpx;
-					height: 52rpx;
-				}
 			}
 			
 		}
+		.tj-panel.pink{
+			background: #E7F6EB;
+		}
+		.tj-panel.green{
+			background: #FDF4E5;
+		}
 	}
+	.order-icon{
+		width: 80rpx;
+		height: 80rpx;
+		margin: 0 auto;
+		display: block;
+	}
+		
+	.order-icons{
+		margin-top: 40rpx;
+		.nav{
+			flex: 1;
+		}
+		.margin-tb{
+			// margin-top: 24rpx;
+		}
+		.order-desc{
+			font-size: 28rpx;
+			color: #000000;
+			text-align: center;
+			margin-top: 12rpx;
+		}
+		.img-c{
+			// min-height: 68rpx;
+			// width: fit-content;
+			// margin: 0 auto;
+		}
+		.order-icon{
+			background-size: 100% 100%;
+			// display: inline-block;
+			// margin-left: auto;
+			// margin-right: auto;
+		}
+		.order-icon.zdjs{
+			// margin-top: -8rpx;
+			width: 54rpx;
+			height: 58rpx;
+		}
+		.order-icon.spgl{
+			margin-top: 6rpx;
+			width: 52rpx;
+			height: 52rpx;
+		}
+		.order-icon.shlp{
+			// margin-top: 16rpx;
+			margin-top: -4rpx;
+			width: 54rpx;
+			height: 58rpx;
+		}
+		.order-icon.kkjl{
+			// margin-top: 12rpx;
+			// margin-top: 0rpx;
+			margin-top: -6rpx;
+			width: 58rpx;
+			height: 58rpx;
+		}
+
+	}
+	
 }
\ No newline at end of file
diff --git a/pages/login/farmer-login.vue b/pages/login/farmer-login.vue
index 36c80da..caf2acc 100644
--- a/pages/login/farmer-login.vue
+++ b/pages/login/farmer-login.vue
@@ -32,8 +32,8 @@
 					<button @tap="login()" class="bottom-button">登 录</button>
 
 					<view class="flex">
-						<view class="topic-font" @click="loginType='code'">手机验证码登录</view>
-						<view class="topic-font" @click="loginType='pwd'">账号密码登录</view>
+						<view class="topic-font" v-if="loginType=='pwd'" @click="loginType='code'">手机验证码登录</view>
+						<view class="topic-font" v-if="loginType=='code'" @click="loginType='pwd'">账号密码登录</view>
 						
 						<view class="topic-font m-l-a m-r-0" @click="toReg">前往注册</view>
 					</view>
@@ -50,12 +50,14 @@
 		data() {
 			return {
 				openId: '-1',
-				// userName: '12345678',
-				// password: '12345678',
-				userName: '',
+				userName: 'gzm',
+				password: '123456',
+				// userName: '',
+				// password: '',
+				
 				phoneNumber: '',
 				smsCode:'',
-				password: '',
+				
 				checked: false,
 				loginType: 'pwd', //pwd和code,密码和验证码登录
 				pcfvalue: undefined,
@@ -154,7 +156,7 @@
 				// const {
 				// code
 				// } = await this.$http.request('get', '/api/login/admin')
-				const resp = await this.$store.dispatch('loginShop', post);
+				const resp = await this.$store.dispatch('loginSupplier', post);
 				// uni.hideLoading()
 
 				if (resp.code == 0) {
@@ -258,6 +260,11 @@
 
 	.t-login .t-a {
 		position: relative;
+		.get-code{
+			position: absolute;
+			right: 40rpx;
+			top: 20rpx;
+		}
 	}
 
 	.t-login .t-a .icon {
diff --git a/pages/login/farmer-reg.vue b/pages/login/farmer-reg.vue
index 877af58..a7871d8 100644
--- a/pages/login/farmer-reg.vue
+++ b/pages/login/farmer-reg.vue
@@ -22,8 +22,8 @@
 				</view>
 			</view>
 			<view class="form-item before-line">
-				<view class="label required">店铺头像(750*750px)</view>
-				<view class="m-l-a m-r-0 flex">
+				<view class="label required" style="width: 300rpx;">店铺头像(750*750px)</view>
+				<view class="m-l-a m-r-0 flex m-t-20 m-b-20">
 					<view class="component-button-upload" @click="uploadIcon('icon')"
 						:style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}">
 
@@ -83,19 +83,19 @@
 			</view>
 			<view class="flex">
 				<u--textarea v-model="dto.ps" placeholder="请输入店铺简介"></u--textarea>
-
 			</view>
-			<view class="form-item before-line">
+			<view class="form-item before-line m-t-20">
 				<view class="label required">选择审核方式</view>
 				<view class="m-l-a m-r-0 flex">
+					
 					<u-radio-group v-model="dto.idcardType" placement="row">
-						<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in shTypeList" :key="index"
+						<u-radio :customStyle="{'margin-bottom': '8px','margin-right': '8px','font-size':'28rpx'}" v-for="(item, index) in shTypeList" :key="index"
 							:label="item.name" :name="item.name">
 						</u-radio>
 					</u-radio-group>
 				</view>
 			</view>
-			<view class="form-item before-line" v-if="dto.idcardType=='身份证'">
+			<view class="form-item before-line m-t-20 p-b-20" v-if="dto.idcardType=='身份证'">
 				<view class="label required">身份证正反面</view>
 				<view class="m-l-a m-r-0 flex">
 					<view class="component-button-upload m-r-15" @click="uploadIcon('icon')"
@@ -108,7 +108,7 @@
 					</view>
 				</view>
 			</view>
-			<view class="form-item before-line" v-if="dto.idcardType=='营业执照'">
+			<view class="form-item before-line m-t-20 p-b-20" v-if="dto.idcardType=='营业执照'">
 				<view class="label required">营业执照</view>
 				<view class="m-l-a m-r-0 flex">
 					<view class="component-button-upload m-r-15" @click="uploadIcon('icon')"
@@ -122,7 +122,7 @@
 
 
 
-			<view class="button-green-1 m-t-20 button-fixed-bottom before-line" @click="submit">
+			<view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit">
 				提交审核
 			</view>
 
@@ -141,7 +141,6 @@
 
 <script>
 	import environments from '@/environments'
-	import xflSelect from '@/components/xfl-select/xfl-select.vue'; //导入
 
 	import {
 		mapState
@@ -214,7 +213,7 @@
 				// })
 
 
-				this.$http.request('get', '/api/dict/value', {
+				this.$http.request('get', '/api/code/value', {
 					params: {
 						typeCode: 'APPLICATION_TYPE'
 					}
@@ -359,7 +358,6 @@
 			...mapState(['currentInfo'])
 		},
 		components: {
-			xflSelect
 		}
 	}
 </script>
@@ -367,7 +365,7 @@
 <style lang="scss" scoped>
 	.form-item {
 		// padding: 40rpx;
-		border-bottom: 1px solid #F3F3F3;
+		border-bottom: 2rpx solid #F3F3F3;
 		display: flex;
 		// height: 100px;
 
diff --git a/pages/notice/list.vue b/pages/notice/list.vue
index 0c511f0..5b48e4a 100644
--- a/pages/notice/list.vue
+++ b/pages/notice/list.vue
@@ -1,7 +1,7 @@
 <template>
 	<!-- 列表页面 -->
 	<view>
-		<view class="p15"  style="min-height: calc(100vh - 160rpx);">
+		<view class="p15"  style="min-height: calc(100vh - 260rpx);">
 			<no-data  v-if="!list||list.length==0" style="width: 100%;"></no-data>
 			<view v-for="(item,index) in list" :key="index" class="m-b-24">
 				<view @click.stop="toDetail(item)" class="notice-item">
@@ -25,7 +25,7 @@
 		},
 		onLoad() {
 			// this.list = [{},{}]
-			this.listApi = '/api/ua/announcement/list'
+			this.listApi = '/api/announcement/page'
 			this.getList()
 
 		},
diff --git a/pages/notice/notice.vue b/pages/notice/notice.vue
index b95915d..fd4e569 100644
--- a/pages/notice/notice.vue
+++ b/pages/notice/notice.vue
@@ -45,7 +45,7 @@
 				this.$message.showLoading()
 				const {
 					data
-				} = await this.$http.request('get', '/api/ua/announcement/get/' + this.id, {
+				} = await this.$http.request('get', '/api/announcement/page/view?id=' + this.id, {
 
 				})
 
diff --git a/pages/user/bussincess-user.vue b/pages/user/bussincess-user.vue
index ba36baa..e0d8e38 100644
--- a/pages/user/bussincess-user.vue
+++ b/pages/user/bussincess-user.vue
@@ -34,35 +34,6 @@
 			</view>
 
 
-			<!-- 其他 -->
-			<view class="user-utils m-20" v-if="false">
-				<view class="flex user-util">
-					<view class="m-r-2">
-						<uni-icons type="location-filled"></uni-icons>
-					</view>
-					<view class="name">
-						我送达的todo?
-					</view>
-					<view class="right-icon">
-						<uni-icons type="right"></uni-icons>
-					</view>
-				</view>
-				<!-- @click="goto('/pages/user/other/contact',true)" -->
-				<view class="flex user-util">
-					<view class="m-r-2">
-						<uni-icons type="location-filled"></uni-icons>
-					</view>
-					<view class="name">
-						我核销的todo?
-					</view>
-					<view class="right-icon">
-						<uni-icons type="right"></uni-icons>
-
-					</view>
-				</view>
-
-			</view>
-
 		</view>
 
 
diff --git a/pages/user/farmer-user.vue b/pages/user/farmer-user.vue
index 58507ae..0245c43 100644
--- a/pages/user/farmer-user.vue
+++ b/pages/user/farmer-user.vue
@@ -4,33 +4,28 @@
 			我的
 		</view> -->
 		<!-- 背景图 -->
-		<view class="top-bg" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }">
-			<view class="title" style="position: relative;"  >
-				我<uni-icons type="settings"></uni-icons>
- 
+		<view class="top-bg img100" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }">
+			<view class="title" style="position: relative;">
+				我的
+
 			</view>
-			<view class="icons">
-				<image class="icon1" src="../../static/imgs/user/usr-icon1.png" mode="aspectFit"></image>
-				<image class="icon2" src="../../static/imgs/home/home-shop-top-icon.png" mode="aspectFit"></image>
-			</view>
-			<view class="flex m-20 user-info" @click="goto('/pages/user/user-info/user-info',true)"
-				v-if="currentInfo&&(currentInfo.id)">
+			<view class="flex m-t-20 user-info" v-if="currentInfo&&(currentInfo.id)">
 				<!-- 头像 -->
 				<image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png"
 					mode="aspectFit"></image>
 				<image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image>
 
-				<view class="name">
-					{{currentInfo.nickName || '-'}}
+				<view class="name" style="margin-top: 12rpx;">
+					<view class="t1">{{currentInfo.nickName || '-'}}</view>
+					<view class="t2 m-t-12">{{currentInfo.tel || '暂无电话'}}</view>
 				</view>
-				<uni-icons class="right-icon" type="right"></uni-icons>
 			</view>
- 
+
 
 		</view>
 		<view class="user-utils m-20">
 			<view class="user-util">
-				<view>我的客服</view>
+				<view class="title">我的客服</view>
 				<view class="flex">
 					<image class="icon-clock m-r-6 m-t-2" src="../../static/common/icon-call.png"></image>
 					<view class="name">
@@ -41,7 +36,7 @@
 		</view>
 
 
-		<view class="button-login-ou topic-gray" @click="clearlogout">
+		<view class="button-login-out topic-gray" @click="clearlogout">
 			退出登录
 		</view>
 
diff --git a/pages/user/user.scss b/pages/user/user.scss
index 7ab8232..9d4488b 100644
--- a/pages/user/user.scss
+++ b/pages/user/user.scss
@@ -1,20 +1,35 @@
-.user-container{
+.main-container{
 	
 	.right-icon{
 		margin-left: auto;
 		margin-right: 0rpx;
 	}
 	.top-bg{
-		// background: linear-gradient( 180deg, #BBE9E6 0%, rgba(245,245,245,0) 100%, rgba(245,245,245,0) 100%);
-		background-image: url('../../static/images/farmer/home/bg.png');
-		
-		width: 750rpx;
+	
+		padding: 32rpx;
+		background-image: url('../../static/images/farmer/user/bg.png');
+
 		height: 438rpx;
 		max-height: 438rpx;
-		
+		.user-icon{
+			width: 116rpx;
+			height: 116rpx;
+			margin-right: 30rpx;
+			border-radius: 50%;
+		}
 		.title{
 			text-align: center;
 			font-weight: 600;
+			font-size: 32rpx;
+		}
+		.name{
+			.t1{
+				font-size: 36rpx;
+				font-weight: 600;
+			}
+			.t2{
+				font-size: 28rpx;;
+			}
 		}
 		.icons{
 			width: fit-content;
@@ -38,11 +53,12 @@
 			}
 		}
 	}
+	
 	.user-info{
 		padding: 28rpx 24rpx;
-		background: #FFFFFF;
+		// background: #FFFFFF;
 		border-radius: 16rpx;
-		line-height:  116rpx;
+		// line-height:  116rpx;
 		.name{
 			font-weight: 600;
 			font-size: 32rpx;
@@ -131,6 +147,11 @@
 	.button-login-out{
 		width: 690rpx;
 		height: 86rpx;
+		margin: 0 auto;
+		position: fixed;
+		bottom: 220rpx;
+		left: 0;
+		right: 0;
 		background: #FFFFFF;
 		border-radius: 8rpx;
 		text-align: center;
@@ -140,10 +161,16 @@
 	.user-utils{
 		background: #FFFFFF;
 		border-radius: 16rpx;
-		padding: 12rpx 28rpx;
+		padding: 22rpx 28rpx;
 		.user-util{
 			border-bottom: 2rpx solid #EEEEEE;
-			
+			.title{
+				font-weight: 600;
+				font-size: 32rpx;
+				color: #000000;
+				line-height: 44rpx;
+				margin-bottom: 20rpx;
+			}
 			.name{
 				font-size: 600;
 				font-size: 28rpx;
diff --git a/plugins/http.js b/plugins/http.js
index 58e3162..7d532e9 100644
--- a/plugins/http.js
+++ b/plugins/http.js
@@ -191,7 +191,7 @@
 		let header = {
 			Authorization: token ? `Bearer ${token}` : null,
 		}
-		var url = environments.httpBaseUri + '/wxkj/upload/file'
+		var url = environments.httpBaseUri + '/api/upload/file'
 		if (environments.type == 'prod') {
 			//需要拼接
 			var year = utils.toYear(new Date())
@@ -210,11 +210,12 @@
 				filePath: filePath,
 				name: 'file',
 				success: (res) => {
-					console.log('res', res)
+					console.log('res debug', res)
 					message.hideLoading()
 					if (res.statusCode === 200) {
 						const obj = JSON.parse(res.data)
-						if (obj.code.startsWith('200')) {
+						console.log('res debug2', obj)
+						if (obj.code.startsWith('200')||obj.code==='0') {
 							resolve({
 								data: obj.data,
 								code: 0,
@@ -257,6 +258,7 @@
 		try {
 			return await http.uploadTemp(filePath, dto)
 		} catch (e) {
+			console.log('error',e)
 			return e
 		}
 	},
diff --git a/static/common/nodata.png b/static/common/nodata.png
index 48db3c3..d74eed7 100644
--- a/static/common/nodata.png
+++ b/static/common/nodata.png
Binary files differ
diff --git a/static/images/farmer/user/bg.png b/static/images/farmer/user/bg.png
new file mode 100644
index 0000000..7ed7735
--- /dev/null
+++ b/static/images/farmer/user/bg.png
Binary files differ
diff --git a/store/index.js b/store/index.js
index fd022d1..acd54c7 100644
--- a/store/index.js
+++ b/store/index.js
@@ -294,7 +294,7 @@
 								// 	url: '/views/app/app-home/app-home'
 								// })
 								uni.reLaunch({
-									url: '/pages/home/home'
+									url: '/pages/home/farmer-home'
 								})
 							} else {
 								// this.$message.showToast('登录失败')
diff --git a/uni.scss b/uni.scss
index c24ca6b..ce00c66 100644
--- a/uni.scss
+++ b/uni.scss
@@ -1 +1,4 @@
+/* uni.scss */
+@import 'uview-ui/theme.scss';
+
 @import '@/uni_modules/uni-scss/variables.scss';
\ No newline at end of file
diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss
index 80ee62f..8b082ff 100644
--- a/uni_modules/uni-scss/theme.scss
+++ b/uni_modules/uni-scss/theme.scss
@@ -29,3 +29,8 @@
 $uni-black: #000000;
 $uni-white: #ffffff;
 $uni-transparent: rgba($color: #000000, $alpha: 0);
+
+@import "uview-ui/theme.scss";
+@import "uview-ui/index.scss";
+
+@import '@/node_modules/uview-ui/theme.scss';
\ No newline at end of file

--
Gitblit v1.9.3