Browse Source

vue3版本

孙旺 2 years ago
parent
commit
eea2d54bdb
98 changed files with 19193 additions and 5821 deletions
  1. 21 0
      .gitignore
  2. 0 80
      App.vue
  3. 0 118
      api/commodity/goods.js
  4. 0 66
      api/commodity/goodsMode.js
  5. 0 50
      api/commodity/mercGoods.js
  6. 0 57
      api/commodity/point.js
  7. 0 88
      api/commoditylist/commoditylist.js
  8. 0 383
      api/device/device.js
  9. 0 9
      api/dict.js
  10. 0 11
      api/download.js
  11. 0 50
      api/login.js
  12. 0 142
      api/order/order.js
  13. 0 50
      api/order/riskorder.js
  14. 0 9
      api/oss.js
  15. 0 38
      api/point/area.js
  16. 0 56
      api/point/line.js
  17. 0 57
      api/point/point.js
  18. 0 156
      api/replenishment/replenishment.js
  19. 0 22
      api/system.js
  20. 0 49
      api/system/employee.js
  21. 0 22
      api/system/menu.js
  22. 0 50
      api/system/user.js
  23. 0 687
      components/classify/index.vue
  24. 0 108
      components/tki-tree/style.css
  25. 0 50
      components/tki-tree/tki-tree.vue
  26. 0 160
      components/xy-button/index.vue
  27. 0 1369
      components/xy-imgResiz/index.vue
  28. 0 114
      components/xy-popup/index.vue
  29. 0 30
      config.js
  30. 1 1
      index.html
  31. 9 0
      jsconfig.json
  32. 0 57
      main.js
  33. 11878 0
      package-lock.json
  34. 71 0
      package.json
  35. 0 226
      pages/globalPages/components/account.vue
  36. 0 75
      pages/globalPages/components/commodity.vue
  37. 0 195
      pages/globalPages/components/equipment.vue
  38. 0 292
      pages/globalPages/components/home.vue
  39. 0 134
      pages/globalPages/home.vue
  40. 0 276
      pages/login.vue
  41. 0 15
      plugins/index.js
  42. 0 42
      plugins/xy.js
  43. 74 0
      src/App.vue
  44. 33 0
      src/config.js
  45. 16 0
      src/main.js
  46. 5 5
      src/manifest.json
  47. 9 6
      src/pages.json
  48. 251 0
      src/pages/globalPages/components/account.vue
  49. 81 0
      src/pages/globalPages/components/commodity.vue
  50. 200 0
      src/pages/globalPages/components/equipment.vue
  51. 36 0
      src/pages/globalPages/components/home.vue
  52. 0 0
      src/pages/globalPages/errCode.vue
  53. 153 0
      src/pages/globalPages/home.vue
  54. 0 0
      src/pages/globalPages/logs.vue
  55. 292 0
      src/pages/login.vue
  56. 0 0
      src/plugins/auth.js
  57. 35 0
      src/plugins/dict.js
  58. 21 0
      src/plugins/index.js
  59. 0 0
      src/plugins/modal.js
  60. 56 54
      src/plugins/request.js
  61. 0 0
      src/plugins/tab.js
  62. 16 0
      src/plugins/xy.js
  63. 6 0
      src/shime-uni.d.ts
  64. 0 0
      src/static/images/global/first-class.png
  65. 0 0
      src/static/images/global/second-class.png
  66. 0 0
      src/static/images/global/third-class.png
  67. 0 0
      src/static/images/global/total-before.png
  68. 0 0
      src/static/images/tabbar/commodity.png
  69. 0 0
      src/static/images/tabbar/commodity_.png
  70. 0 0
      src/static/images/tabbar/equipment.png
  71. 0 0
      src/static/images/tabbar/equipment_.png
  72. 0 0
      src/static/images/tabbar/home.png
  73. 0 0
      src/static/images/tabbar/home_.png
  74. 0 0
      src/static/images/tabbar/mine.png
  75. 0 0
      src/static/images/tabbar/mine_.png
  76. 0 0
      src/static/logo.png
  77. 0 3
      src/static/scss/colorui.css
  78. 0 0
      src/static/scss/global.scss
  79. 0 0
      src/static/scss/index.scss
  80. 56 0
      src/stores/dict.js
  81. 5408 0
      src/stores/permission.js
  82. 93 0
      src/stores/user.js
  83. 24 22
      src/uni.scss
  84. 0 0
      src/utils/auth.js
  85. 171 0
      src/utils/common.js
  86. 0 0
      src/utils/constant.js
  87. 0 0
      src/utils/download.js
  88. 0 0
      src/utils/errorCode.js
  89. 0 0
      src/utils/getDict.js
  90. 0 0
      src/utils/permission.js
  91. 170 0
      src/utils/request.js
  92. 0 0
      src/utils/share.js
  93. 0 0
      src/utils/storage.js
  94. 0 0
      src/utils/upload.js
  95. 0 96
      stores/permission.js
  96. 0 94
      stores/user.js
  97. 0 147
      utils/common.js
  98. 7 0
      vite.config.js

+ 21 - 0
.gitignore

@@ -0,0 +1,21 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 0 - 80
App.vue

@@ -1,80 +0,0 @@
-<script>
-	import config from './config'
-	import {
-		getToken
-	} from '@/utils/auth'
-	import usePermissionStore from '@/stores/permission.js';
-
-	export default {
-		onLaunch: function() {
-			this.initApp();
-		},
-
-		methods: {
-			// 初始化应用
-			initApp() {
-				console.log('初始化应用开始~')
-				// 是否有版本更新
-				this.isUpdate()
-				// 初始化应用配置
-				this.initConfig()
-				// 免登录
-				this.checkLogin()
-			},
-
-			initConfig() {
-				this.globalData.config = config
-			},
-			async checkLogin() {
-				console.log('检测是否登录开始!')
-				if (getToken() && uni.getStorageSync('sysId')) {
-					console.log('已登录!')
-					await usePermissionStore().GetPermis()
-					//判断用户是否有任一菜单权限
-					if (usePermissionStore().permissions_menu && usePermissionStore().permissions_menu != '[]') {
-						// 开发模式下取消免登录,直接跳转调试页面,生产免登录跳转主页
-						if (process.env.NODE_ENV == 'production') {
-							this.$tab.reLaunch('/pages/globalPages/home')
-						}
-					} else {
-						this.$modal.msg('该用户无权限~')
-					}
-				} else {
-					console.log('未登录!')
-				}
-			},
-
-			isUpdate() {
-				console.log('检测更新开始~')
-				const updateManager = wx.getUpdateManager()
-				updateManager.onCheckForUpdate(function(res) {
-					// 请求完新版本信息的回调
-					console.log(res.hasUpdate)
-				})
-
-				updateManager.onUpdateReady(function() {
-					wx.showModal({
-						title: '更新提示',
-						content: '新版本已经准备好,是否重启应用?',
-						success(res) {
-							if (res.confirm) {
-								// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
-								updateManager.applyUpdate()
-							}
-						}
-					})
-				})
-
-				updateManager.onUpdateFailed(function() {
-					// 新版本下载失败
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	/*每个页面公共css */
-	@import "./uni_modules/vk-uview-ui/index.scss";
-	@import "static/scss/index.scss"
-</style>

+ 0 - 118
api/commodity/goods.js

@@ -1,118 +0,0 @@
-import request from '@/utils/request'
-
-// 商品分页
-export function ownerGoodsList(data) {
-  return request({
-    url: '/goods/merc-mini/goods/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品类目
-export function goodsCategory(data) {
-  return request({
-    url: '/goods/merc-mini/goods/categoryLevel1 ',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表(内部服务调用) 
-export function listById(data) {
-  return request({
-    url: '/mini/mercLine/listById',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表
-export function lineListByMerc(data) {
-  return request({
-    url: '/mini/mercLine/listByMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-// 删除
-export function lineDel(data) {
-  return request({
-    url: '/mini/mercLine/del',
-    method: 'post',
-    data:data
-  })
-}
-//设备 分类列表
-export function categoryList(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/categoryList',
-    method: 'post',
-    data:data
-  })
-}
-//设备  商品类别
-export function list(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/list',
-    method: 'post',
-    data:data
-  })
-}
-
-//销售统计汇总
-export function sumCount(data) {
-  return request({
-    url: '/goods/merc-mini/goodsData/sumCount',
-    method: 'post',
-    data:data
-  })
-}
-
-//销售统计列表
-export function sumPage(data) {
-  return request({
-    url: '/goods/merc-mini/goodsData/sumPage',
-    method: 'post',
-    data:data
-  })
-}
-
-//设备商品公库分页
-export function pageByGoods(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/pageByGoods',
-    method: 'post',
-    data:data
-  })
-}
-
-//设备商品私库分页
-export function pageByGoodsMerc(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/pageByGoodsMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-//私库到设备
-export function bindDeviceByMercGoods(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/bindDeviceByMercGoods',
-    method: 'post',
-    data:data
-  })
-}
-
-//公库到设备
-export function bindDeviceByGoods(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/bindDeviceByGoods',
-    method: 'post',
-    data:data
-  })
-}
-
-

+ 0 - 66
api/commodity/goodsMode.js

@@ -1,66 +0,0 @@
-import request from '@/utils/request'
-
-// 新增
-export function save(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMode/save',
-    method: 'post',
-	data:data
-  })
-}
-
-// 修改
-export function update(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMode/update',
-    method: 'post',
-	data:data
-  })
-}
-
-// 对象查询
-export function searchObj(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMode/obj',
-    method: 'post',
-	data:data
-  })
-}
-
-// 分页
-export function goodsPage(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMode/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品类目
-export function categoryTree(data) {
-  return request({
-    url: '/goods/merc-mini/goods/category/tree',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品规格
-export function listIdName(data) {
-  return request({
-    url: '/goods/merc-mini/goods/unit/listIdName',
-    method: 'post',
-	data:data
-  })
-}
-
-// 设备商品价格修改
-export function changePrice(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/update',
-    method: 'post',
-	data:data
-  })
-}
-
-

+ 0 - 50
api/commodity/mercGoods.js

@@ -1,50 +0,0 @@
-import request from '@/utils/request'
-
-// 商品分页
-export function ownerGoodsList(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品类目
-export function goodsCategory(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/categoryList',
-    method: 'post',
-    data:data
-  })
-}
-
-// 对象查询
-export function searchObj(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/obj',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品添加到私库
-export function bindMerc(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/bindMerc',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商品修改
-export function update(data) {
-  return request({
-    url: '/goods/merc-mini/goodsMerc/update',
-    method: 'post',
-	data:data
-  })
-}
-
-
-
-

+ 0 - 57
api/commodity/point.js

@@ -1,57 +0,0 @@
-import request from '@/utils/request'
-
-// 分页
-export function pointPage(data) {
-  return request({
-    url: '/mini/mercPlace/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 新增修改点位
-export function pointSave(data) {
-  return request({
-    url: '/mini/mercPlace/save',
-    method: 'post',
-	data:data
-  })
-}
-
-
-
-// 绑定/解绑设备 
-export function bindDevice(data) {
-  return request({
-    url: '/mini/mercPlace/bindDevice',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表(内部服务调用) 
-export function listById(data) {
-  return request({
-    url: '/mini/mercPlace/listById',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表
-export function pointListByMerc(data) {
-  return request({
-    url: '/mini/mercPlace/listByMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-// 删除
-export function pointDel(data) {
-  return request({
-    url: '/mini/mercPlace/del',
-    method: 'post',
-    data:data
-  })
-}

+ 0 - 88
api/commoditylist/commoditylist.js

@@ -1,88 +0,0 @@
-import request from '@/utils/request'
-
-// 分页查询
-export function page(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/page',
-		method: 'post',
-		data: data
-	})
-}
-//清单关联商品列表
-export function refGoods(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/refGoods',
-		method: 'post',
-		data: data
-	})
-}
-// 新增商品清单 
-export function save(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/save',
-		method: 'post',
-		data: data
-	})
-}
-// 商品清单应用设备
-export function saveGoodsDevice(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/saveGoodsDevice',
-		method: 'post',
-		data: data
-	})
-}
-// 修改商品清单 
-export function update(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/update',
-		method: 'post',
-		data: data
-	})
-}
-// 保存清单商品(每次传全量数据)
-export function saveListingGoods(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/saveListingGoods',
-		method: 'post',
-		data: data
-	})
-}
-
-//获取区域下设备列表
-export function regionDevices(data) {
-	return request({
-		url: '/merc/mini/mercLine/regionDevices',
-		method: 'post',
-		data: data
-	})
-}
-//获取商户线路列表
-export function mercLineDevices(data) {
-	return request({
-		url: '/goods/merc-mini/goodsMercModel/mercLineDevices',
-		method: 'post',
-		data: data
-	})
-}
-
-//商品清单应用到设备
-export function goodsListApply(data) {
-	return request({
-		url: '/goods/goodsDevice/save',
-		method: 'post',
-		data: data
-	})
-}
-
-//删除清单
-export function del(data) {
-	return request({
-		url: '/goods/goods-merc-model/del ',
-		method: 'post',
-		data: data
-	})
-}
-
-
-

+ 0 - 383
api/device/device.js

@@ -1,383 +0,0 @@
-import request from '@/utils/request'
-// 设备列表
-export function mercHomeList(data) {
-  return request({
-    url: '/merc/mini/device/mercHomeList',
-    method: 'post',
-	data:data
-  })
-}
-
-// 商户设备首页统计
-export function mercHomeStatistical(data) {
-  return request({
-    url: '/device/merc-mini/device/mercHomeStatistical',
-    method: 'post',
-	data:data
-  })
-}
-
-// 增加商品到设备  
-export function bindDevice(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/bindDevice',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备商品列表
-export function goodsList(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/page',
-    method: 'post',
-    data:data
-  })
-}
-
-// 商户设备列表
-export function searchPage(data) {
-  return request({
-    url: '/device/merc-mini/device/searchPage',
-    method: 'post',
-    data:data
-  })
-}
-
-// 商户设备详情
-export function detail(data) {
-  return request({
-    url: '/device/merc-mini/device/detail',
-    method: 'post',
-    data:data
-  })
-}
-
-// 数据统计
-export function dataCount(data) {
-  return request({
-    url: '/device/merc-mini/device/dataCount',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备操作记录
-export function indexDeviceRecords(data) {
-  return request({
-    url: '/device/merc-mini/deviceRecords/indexDeviceRecords',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备联网记录
-export function indexDeviceNetRecords(data) {
-  return request({
-    url: '/device/merc-mini/deviceRecords/indexDeviceNetRecords',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备故障情况
-export function indexDeviceError(data) {
-  return request({
-    url: '/device/merc-mini/deviceRecords/indexDeviceError',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备温度记录
-export function indexDeviceTempRecords(data) {
-  return request({
-    url: '/device/merc-mini/deviceRecords/indexDeviceTempRecords ',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备激活
-export function deviceActive(data) {
-  return request({
-    url: '/device/merc-mini/device/active',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备详情
-export function deviceDetail(data) {
-  return request({
-    url: '/device/device-info/obj',
-    method: 'post',
-    data:data
-  })
-}
-
-// 运营状态修改
-export function modifyBusyStage(data) {
-  return request({
-    url: '/device/merc-mini/device/modifyBusyStage',
-    method: 'post',
-    data:data
-  })
-}
-
-// 首页统计数据
-export function allCount(data) {
-  return request({
-    url: '/order/order-merc-sales-count-more/count',
-    method: 'post',
-    data:data
-  })
-}
-
-// 设备商品分类
-export function categoryList(data) {
-  return request({
-    url: '/goods/merc-mini/goodsDevice/categoryList',
-    method: 'post',
-    data:data
-  })
-}
-
-// 修改设备信息
-export function updateInfo(data) {
-  return request({
-    url: '/device/merc-mini/device/updateInfo',
-    method: 'post',
-    data:data
-  })
-}
-
-export function sendCommand(data) {
-  return request({
-    url: '/device/mqtt/senCommand',
-    method: 'post',
-    data:data
-  })
-}
-//查询指令操作结果
-export function queryCommandResult(data) {
-  return request({
-    url: '/device/mqtt/snByCmdAndResult',
-    method: 'post',
-    data:data
-  })
-}
-
-//销售统计汇总
-export function sumCount(data) {
-  return request({
-    url: '/device/merc-mini/deviceData/sumCount',
-    method: 'post',
-    data:data
-  })
-}
-
-//销售统计列表
-export function sumPage(data) {
-  return request({
-    url: '/device/merc-mini/deviceData/sumPage',
-    method: 'post',
-    data:data
-  })
-}
-
-//设备激活情况
-export function getActiveInfo(data) {
-  return request({
-    url: '/device/merc-mini/device/getActiveInfo',
-    method: 'post',
-    data:data
-  })
-}
-
-//设备是否属于商户
-export function isMerc(data) {
-  return request({
-    url: '/device/merc-mini/device/isMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-
-//设备二维码
-export function getQrCode(data) {
-  return request({
-    url: '/device/device-quality/getQrCode',
-    method: 'post',
-    data:data
-  })
-}
-
-//导出设备二维码
-export function exportQrCode(data) {
-  return request({
-    url: '/device/device-create-ids/exportQrCode',
-    method: 'post',
-    data:data
-  })
-}
-
-//清除故障
-export function abort(data) {
-  return request({
-    url: '/order/activity-info/abort',
-    method: 'post',
-    data:data
-  })
-}
-
-//统计数据图表
-export function salesData(data) {
-  return request({
-    url: '/merc/mini/data/salesData',
-    method: 'post',
-    data:data
-  })
-}
-
-//支付宝设备激活分页
-export function aliDeviceActivePage(data) {
-  return request({
-    url: '/merc/mini/device/aliDeviceActivePage',
-    method: 'post',
-    data:data
-  })
-}
-
-//获取商家信息
-export function userInfoBySelf(data) {
-  return request({
-    url: '/merc/mini/mercUser/userInfoBySelf',
-    method: 'post',
-    data:data
-  })
-}
-
-//绑定支付宝
-export function updateByAli(data) {
-  return request({
-    url: '/merc/mini/mercUser/updateByAli',
-    method: 'post',
-    data:data
-  })
-}
-
-//支付宝设备详情查询
-export function aliDeviceObj(data) {
-  return request({
-    url: '/merc//mini/device/aliDeviceObj',
-    method: 'post',
-    data:data
-  })
-}
-
-
-//商品销售统计汇总
-export function goodSumCount(data) {
-  return request({
-    url: '/goods/goodsDeviceData/sumCount',
-    method: 'post',
-    data:data
-  })
-}
-
-//商品销售统计列表
-export function goodSumPage(data) {
-  return request({
-    url: '/goods/goodsDeviceData/sumPage',
-    method: 'post',
-    data:data
-  })
-}
-
-export function mercDeviceList(data) {
-  return request({
-    url: '/merc/mini/mercUserDevice/mercDeviceList',
-    method: 'post',
-    data:data
-  })
-}
-
-export function addDevice(data) {
-  return request({
-    url: '/merc/mini/mercUserDevice/add',
-    method: 'post',
-    data:data
-  })
-}
-
-export function userDeviceList(data) {
-  return request({
-    url: '/merc/mini/mercUserDevice/userDeviceList',
-    method: 'post',
-    data:data
-  })
-}
-
-export function delDevice(data) {
-  return request({
-    url: '/merc/mini/mercUserDevice/del',
-    method: 'post',
-    data:data
-  })
-}
-
-export function listOfIdName(data) {
-  return request({
-    url: '/device/merc-mini/device/listOfIdName',
-    method: 'post',
-    data:data
-  })
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 9
api/dict.js

@@ -1,9 +0,0 @@
-import request from '@/utils/request'
-//数据字典
-export function list2(data) {
-	return request({
-		url: '/sys/sys-dict/list2',
-		method: 'post',
-		data: data
-	})
-}

+ 0 - 11
api/download.js

@@ -1,11 +0,0 @@
-import {
-	downLoadReq
-} from '@/utils/request'
-
-export function exportQrCode(data) {
-	return downLoadReq({
-		url: '/device/device-create-ids/exportQrCode',
-		method: 'post',
-		data: data
-	})
-}

+ 0 - 50
api/login.js

@@ -1,50 +0,0 @@
-import request from '@/utils/request'
-
-// 登录方法
-export function login(loginName, password, code, clientType,pointJson) {
-  const data = {
-    loginName,
-    password,
-    code,
-    clientType,
-	pointJson
-  }
-  return request({
-    'url': '/merc/mini/login',
-    headers: {
-      isToken: false
-    },
-    'method': 'post',
-    'data': data
-  })
-}
-
-// 获取用户详细信息
-export function getInfo() {
-  return request({
-    'url': '/getInfo',
-    'method': 'get'
-  })
-}
-
-// 退出方法
-export function logout() {
-  return request({
-    'url': '/authorize/sysWorkUser/logout',
-    'method': 'post'
-  })
-}
-
-// 获取验证码
-export function getCodeImg() {
-  return request({
-    'url': '/captchaImage',
-    headers: {
-      isToken: false
-    },
-    method: 'get',
-    timeout: 20000
-  })
-}
-
-

+ 0 - 142
api/order/order.js

@@ -1,142 +0,0 @@
-import request from '@/utils/request'
-
-//商户订单查询 
-export function page(data) {
-	return request({
-		url: '/merc/mini/orders/page',
-		method: 'post',
-		data: data
-	})
-}
-
-
-//订单详情
-export function byId(data) {
-	return request({
-		url: '/order/order-merc-mini/byId',
-		method: 'post',
-		data: data
-	})
-}
-
-//退款列表
-export function refundList(data) {
-	return request({
-		url: '/order/order-refund-merc-mini/page',
-		method: 'post',
-		data: data
-	})
-}
-
-//订单列表
-export function orderPage(data) {
-	return request({
-		url: '/order/orders/mini/page',
-		method: 'post',
-		data: data
-	})
-}
-
-//订单列表-统计 
-export function orderPageCount(data) {
-	return request({
-		url: '/device/merc-mini/device/order/count',
-		method: 'post',
-		data: data
-	})
-}
-
-//退款处理
-export function hendel(data) {
-	return request({
-		url: '/order/order-refund/hendel',
-		method: 'post',
-		data: data
-	})
-}
-
-//退款情况
-export function refundDetail(data) {
-	return request({
-		url: '/order/order-refund-merc-mini/detail',
-		method: 'post',
-		data: data
-	})
-}
-
-//订单日志
-export function orderLogs(data) {
-	return request({
-		url: '/order/activity-info-og/list',
-		method: 'post',
-		data: data
-	})
-}
-
-//拉黑
-export function setBlacklist(data) {
-	return request({
-		url: '/merc/mini/member/setBlacklist',
-		method: 'post',
-		data: data
-	})
-}
-
-//拉黑解除
-export function removeBlackList(data) {
-	return request({
-		url: '/merc/mini/member/blackListRemove ',
-		method: 'post',
-		data: data
-	})
-}
-
-//订单用户信息
-export function userInfo(data) {
-	return request({
-		url: '/merc/mini/member/obj',
-		method: 'post',
-		data: data
-	})
-}
-
-//首页角标
-export function tipsCount(data) {
-	return request({
-		url: '/order/order-merc-homepage-mini/tipsCount',
-		method: 'post',
-		data: data
-	})
-}
-
-//首页(本月销售)统计
-export function countByMonth(data) {
-	return request({
-		url: '/order/order-merc-sales-count-more/countByMonth',
-		method: 'post',
-		data: data
-	})
-}
-
-//首页(今日销售)统计
-export function countByDay(data) {
-	return request({
-		url: '/order/order-merc-sales-count-more/dayCountDetail',
-		method: 'post',
-		data: data
-	})
-}
-
-//订单主动退款
-export function refundByMerc(data) {
-	return request({
-		url: '/order/order-refund-merc-mini/refundByMerc',
-		method: 'post',
-		data: data
-	})
-}
-
-
-
-
-

+ 0 - 50
api/order/riskorder.js

@@ -1,50 +0,0 @@
-import request from '@/utils/request'
-
-// 异常单补扣申请 
-export function apply(data) {
-	return request({
-		url: '/order/order-risk-cut/apply',
-		method: 'post',
-		data: data
-	})
-}
-
-//风险订单-分页 
-export function page(data) {
-	return request({
-		url: '/order/order-riskCut-merc-mini/page',
-		method: 'post',
-		data: data
-	})
-}
-
-//所有待处理异常单
-export function todoNum(data) {
-	return request({
-		url: '/order/order-riskCut-merc-mini/todoNum',
-		method: 'post',
-		data: data
-	})
-}
-
-//风险订单结束
-export function cancelOrder(data) {
-	return request({
-		url: '/order/orders/cancel',
-		method: 'post',
-		data: data
-	})
-}
-
-//风险订单补扣申请撤回
-export function rollback(data) {
-	return request({
-		url: '/order/order-riskCut-merc-mini/rollback ',
-		method: 'post',
-		data: data
-	})
-}
-
-
-
-

+ 0 - 9
api/oss.js

@@ -1,9 +0,0 @@
-import request from '@/utils/request'
-
-// 获取用户详细信息
-export function ossInfo() {
-  return request({
-    'url': '/sys/oss/aliOSS/policy',
-    'method': 'get'
-  })
-}

+ 0 - 38
api/point/area.js

@@ -1,38 +0,0 @@
-import request from '@/utils/request'
-
-// 新增区域
-export function areaSave(data) {
-  return request({
-    url: '/merc/mini/mercRegion/save',
-    method: 'post',
-	data:data
-  })
-}
-
-// 区域树
-export function areaTree() {
-  return request({
-    'url': '/merc/mini/mercRegion/tree',
-    'method': 'post'
-  })
-}
-
-// 区域删除
-export function areaDel(data) {
-  return request({
-    url: '/merc/mini/mercRegion/del',
-    method: 'post',
-    data:data
-  })
-}
-
-// 新区域线路接口
-export function allLineWithRegion(data) {
-  return request({
-    url: '/merc/mini/mercLine/allLineWithRegion',
-    method: 'post',
-    data:data
-  })
-}
-
-

+ 0 - 56
api/point/line.js

@@ -1,56 +0,0 @@
-import request from '@/utils/request'
-// 新增修改线路
-export function lineSave(data) {
-  return request({
-    url: '/merc/mini/mercLine/save',
-    method: 'post',
-	data:data
-  })
-}
-
-// 分页
-export function linePage(data) {
-  return request({
-    url: '/merc/mini/mercLine/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 绑定/解绑设备 
-export function bindDevice(data) {
-  return request({
-    url: '/merc/mini/mercLine/bindDevice',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表(内部服务调用) 
-export function listById(data) {
-  return request({
-    url: '/merc/mini/mercLine/listById',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表
-export function lineListByMerc(data) {
-  return request({
-    url: '/merc/mini/mercLine/listByMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-// 删除
-export function lineDel(data) {
-  return request({
-    url: '/merc/mini/mercLine/del',
-    method: 'post',
-    data:data
-  })
-}
-
-

+ 0 - 57
api/point/point.js

@@ -1,57 +0,0 @@
-import request from '@/utils/request'
-
-// 分页
-export function pointPage(data) {
-  return request({
-    url: '/merc/mini/mercPlace/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 新增修改点位
-export function pointSave(data) {
-  return request({
-    url: '/merc/mini/mercPlace/save',
-    method: 'post',
-	data:data
-  })
-}
-
-
-
-// 绑定/解绑设备 
-export function bindDevice(data) {
-  return request({
-    url: '/merc/mini/mercPlace/bindDevice',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表(内部服务调用) 
-export function listById(data) {
-  return request({
-    url: '/merc/mini/mercPlace/listById',
-    method: 'post',
-    data:data
-  })
-}
-
-// 列表
-export function pointListByMerc(data) {
-  return request({
-    url: '/merc/mini/mercPlace/listByMerc',
-    method: 'post',
-    data:data
-  })
-}
-
-// 删除
-export function pointDel(data) {
-  return request({
-    url: '/merc/mini/mercPlace/del',
-    method: 'post',
-    data:data
-  })
-}

+ 0 - 156
api/replenishment/replenishment.js

@@ -1,156 +0,0 @@
-import request from '@/utils/request'
-
-// 补货首页
-export function supplyPage(data) {
-	return request({
-		url: '/goods/merc-mini/goodsDevice/supplyPage',
-		method: 'post',
-		data: data
-	})
-}
-
-//补货删除
-export function delGoods(data) {
-	return request({
-		url: '/goods/merc-mini/goodsDevice/delGoods',
-		method: 'post',
-		data: data
-	})
-}
-// 补货保存
-export function save(data) {
-	return request({
-		url: '/merc/mini/mercSupply/save',
-		method: 'post',
-		data: data
-	})
-}
-// 一键开柜
-export function saveByOpenDoor(data) {
-	return request({
-		url: '/merc/mini/mercSupply/saveByOpenDoor',
-		method: 'post',
-		data: data
-	})
-}
-
-//补货记录分页查询
-export function page(data) {
-	return request({
-		url: '/merc/mini/mercSupply/page',
-		method: 'post',
-		data: data
-	})
-}
-//补货记录对象查询
-export function obj(data) {
-	return request({
-		url: '/merc/mini/mercSupply/obj',
-		method: 'post',
-		data: data
-	})
-}
-
-// 效验
-export function check(data) {
-	return request({
-		'url': '/order/activity-info/check',
-		'method': 'post',
-		'data': data
-	})
-}
-// 按线路+商品分组 
-export function stockByLineAndGoods(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByLineAndGoods',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 按设备+商品分组 
-export function stockByDeviceAndGoods(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByDeviceAndGoods',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 按设备分组 
-export function stockByDevice(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByDevice',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 按商品分组 
-export function stockByGoods(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByGoods',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 按线路分组 
-export function stockByLine(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/StockByLine',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 补货首页全部列表
-export function deviceStockList(data) {
-	return request({
-		'url': '/goods/merc-mini/goodsDevice/deviceStockList',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 补货首页缺货列表
-export function deviceStockOutList(data) {
-	return request({
-		'url': '/goods/merc-mini/goodsDevice/deviceStockOutList',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 补货首页缺货列表
-export function create(data) {
-	return request({
-		'url': '/order/activity-info/create',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 库存详情设备
-export function stockByDeviceDetail(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByDeviceDetail',
-		'method': 'post',
-		'data': data
-	})
-}
-
-// 库存详情商品
-export function stockByGoodsDetail(data) {
-	return request({
-		'url': '/goods/merc-mini/stockData/stockByGoodsDetail',
-		'method': 'post',
-		'data': data
-	})
-}
-
-
-
-
-
-

+ 0 - 22
api/system.js

@@ -1,22 +0,0 @@
-import request from '@/utils/request'
-
-// tab主菜单
-export function tabMenu(data) {
-  return request({
-    url: '/authorize/sys-system/list',
-    method: 'post',
-	data:data
-  })
-}
-
-// tab主菜单
-export function workMenuList(data) {
-  return request({
-    url: '/authorize/sys-menu/workMenuList',
-    method: 'post',
-	data:data
-  })
-}
-
-
-

+ 0 - 49
api/system/employee.js

@@ -1,49 +0,0 @@
-import request from '@/utils/request'
-
-// 获取用户菜单
-export function save(data) {
-  return request({
-    url: '/merc/mini/mercUser/save',
-    method: 'post',
-	data:data
-  })
-}
-
-// 获取用户列表
-export function list(data) {
-  return request({
-    url: '/merc/mini/mercUser/list',
-    method: 'post',
-	data:data
-  })
-}
-
-// 角色列表
-export function roleList(data) {
-  return request({
-    url: '/authorize/sysRole/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 用户详情
-export function objByUserId(data) {
-  return request({
-    url: '/merc/mini/mercUser/objByUserId',
-    method: 'post',
-	data:data
-  })
-}
-
-// 更新用户
-export function update(data) {
-  return request({
-    url: '/merc/mini/mercUser/update',
-    method: 'post',
-	data:data
-  })
-}
-
-
-

+ 0 - 22
api/system/menu.js

@@ -1,22 +0,0 @@
-import upload from '@/utils/upload'
-import request from '@/utils/request'
-
-// 获取系统权限菜单
-export function workMenuList(data) {
-  return request({
-    url: '/authorize/sys-menu/workMenuList',
-    method: 'post',
-    data: data
-  })
-}
-
-// 获取系统集合
-export function sysList(data) {
-  return request({
-    url: '/authorize/sys-system/list',
-    method: 'post',
-    data: data
-  })
-}
-
-

+ 0 - 50
api/system/user.js

@@ -1,50 +0,0 @@
-import request from '@/utils/request'
-
-// 获取用户菜单
-export function workMenuList() {
-  return request({
-    url: '/authorize/sys-menu/workMenuList',
-    method: 'post'
-  })
-}
-
-// 获取用户信息
-export function userInfo() {
-  return request({
-    url: '/merc/mini/orders/my',
-    method: 'post'
-  })
-}
-
-// 协议
-export function agreement(data) {
-  return request({
-    url: '/sys/sys-agreement/obj',
-    method: 'post',
-	data:data
-  })
-}
-
-// 协议列表
-export function agreementPage(data) {
-  return request({
-    url: '/sys/sys-agreement/page',
-    method: 'post',
-	data:data
-  })
-}
-
-// 修改用户密码等信息
-export function updateUserInfo(data) {
-  return request({
-    url: '/merc/mini/orders/updateUserInfo',
-    method: 'post',
-	data:data
-  })
-}
-
-
-
-
-
-

+ 0 - 687
components/classify/index.vue

@@ -1,687 +0,0 @@
-<template>
-	<view class="wrap">
-		<view class="u-menu-wrap">
-			<scroll-view :style="{height:height}" scroll-y scroll-with-animation class="u-tab-view menu-scroll-view"
-				:scroll-top="scrollTop" v-if="leftShow">
-				<view v-for="(item,index) in newTabList" :key="index" class="u-tab-item"
-					:class="[current==index ? 'u-tab-item-active' : '']" :data-current="index"
-					@tap.stop="swichMenu(index,item)">
-					<text class="u-line-1">{{item.categoryName}}</text>
-					<view class="u-tab-num">
-						({{item.num}})
-					</view>
-					<u-badge type="error" max="99" :value="item.selectNum" :absolute="true" :offset="[4,4]"></u-badge>
-				</view>
-			</scroll-view>
-
-			<scroll-view lower-threshold="150" :style="{height:height}" scroll-y class="right-box"
-				@scrolltolower="lowerBottom">
-				<view class="page-view">
-					<view class="class-item" v-if="newCommList.length>0">
-						<view class="item-container">
-							<view class="thumb-box" v-for="(item, index) in newCommList" :key="index"
-								@click.stop="commItemClick(item)">
-								<view v-if="selectShow">
-									<image class="select-img"
-										src="https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/commodity/no_selected.png"
-										mode="widthFix" v-show="item.noSelect"></image>
-									<image class="select-img"
-										src="https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/commodity/selected.png"
-										mode="widthFix" v-show="!item.noSelect&&item.checked"></image>
-									<image class="select-img"
-										src="https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/commodity/select.png"
-										mode="widthFix" v-show="!item.noSelect&&!item.checked"></image>
-								</view>
-
-								<view class="check-content">
-									<view class="comm-img">
-										<u--image radius="4" width="130rpx" height="130rpx" :src="item.cover"
-											mode="aspectFit" :lazy-lord="true"></u--image>
-									</view>
-									<view class="comm-main">
-										<view>
-											{{item.name}}
-										</view>
-										<view>
-											条形码:{{item.barcode}}
-										</view>
-										<!-- <view>
-											商品类型:{{item.categoryName}}
-										</view> -->
-										<view v-if="item.price!=null">
-											价格:<text>¥{{item.price}}</text>
-										</view>
-									</view>
-								</view>
-							</view>
-							<u-loadmore :status="status" v-if="newCommList.length>=1" />
-						</view>
-					</view>
-					<view class="empty" v-else>
-						<u-empty></u-empty>
-					</view>
-				</view>
-
-			</scroll-view>
-
-			<view class="cart" v-if="selectShow" @click="cartShow=true">
-				<image class="cart-img"
-					src="https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/commodity/buy.png"
-					mode="widthFix"></image>
-				<u-badge type="error" max="99" :value="selectList.length" :absolute="true" :offset="[4,4]"></u-badge>
-			</view>
-		</view>
-
-		<xpopup :show="cartShow" @close="close" :showBtn="false">
-			<view class="pop-top" slot="title">
-				<view class="left">
-					已选商品
-				</view>
-				<xbutton size="mini" class="clear" @click="clearCart">清空</xbutton>
-			</view>
-			<view class="pop-content">
-				<u-list height="440rpx">
-					<u-list-item v-for="(item, index) in selectList" :key="item.id">
-						<view class="list-item">
-							<view class="comm-item">
-								<view class="comm-img">
-									<u--image radius="4" width="110rpx" height="110rpx" :src="item.cover"
-										mode="aspectFit" :lazy-lord="true"></u--image>
-								</view>
-								<view class="item-content">
-									<view>
-										{{item.name}}
-									</view>
-									<view>
-										条形码:{{item.barcode}}
-									</view>
-									<view>
-										商品类型:{{item.categoryName}}
-									</view>
-									<view v-if="item.price">
-										价格:<text>¥{{item.price}}</text>
-									</view>
-								</view>
-							</view>
-							<xbutton color="red" size="mini" bgColor="#fff" borderColor="red" @click="delCom(item)">删除
-							</xbutton>
-						</view>
-					</u-list-item>
-					<view class="empty" v-if="selectList.length==0">
-						<u-empty mode="car" text="没有商品!"></u-empty>
-					</view>
-				</u-list>
-			</view>
-		</xpopup>
-
-		<xpopup :show="delPopShow" :showBtn="true" @confirm="delSure" @close="delClose">
-			<view class="del-content">
-				是否确定要{{delTitle}}?
-			</view>
-		</xpopup>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				scrollTop: 0, //tab标题的滚动条位置
-				current: 0, // 预设当前项的值
-				menuHeight: 0, // 左边菜单的高度
-				menuItemHeight: 0, // 左边菜单item的高度
-				keyword: '',
-				checkedList: [], //当前类目选中商品
-				cartShow: false, //购物车
-
-				delPopShow: false, //删除弹框
-				delTitle: undefined, //删除或清空提示
-				selectList: [], //已选中商品
-			}
-		},
-		props: {
-			value: {
-				type: Array,
-				required: false
-			},
-			selectShow: {
-				type: Boolean,
-				default: false,
-				require: false
-			},
-			leftShow: {
-				type: Boolean,
-				default: true,
-				require: false
-			},
-			height: {
-				type: String,
-				require: false,
-				default: 'auto'
-			},
-
-			tabList: {
-				type: Array,
-				require: true,
-				default () {
-					return []
-				}
-			},
-
-			commList: {
-				type: Array,
-				require: true,
-				default () {
-					return []
-				}
-			},
-
-			status: {
-				type: String,
-				require: false,
-				default: 'loadmore'
-			},
-
-			storeName: {
-				type: String,
-				require: false,
-				default: 'commStor'
-			},
-			
-			isModal:{
-				type: Boolean,
-				require: false,
-				default: false
-			},
-		},
-
-		computed: {
-			newTabList() {
-				if (this.tabList.length > 0) {
-					let newTabList = JSON.parse(JSON.stringify(this.tabList));
-					if (this.selectShow) {
-						const idMapping = newTabList.reduce((acc, el, i) => {
-							el.selectNum = 0;
-							acc[el.categoryCode] = i;
-							return acc;
-						}, {});
-						this.selectList.forEach(i => {
-							if (i.categoryCode == null) {
-								i.categoryCode = '0'
-							}
-							newTabList[idMapping[i.categoryCode]].selectNum++
-						})
-						return newTabList
-					} else {
-						return newTabList
-					}
-				} else {
-					return []
-				}
-			},
-
-			newCommList() {
-				let newCommList = [];
-				if (this.selectList && this.selectList.length > 0) {
-					let selectList = this.selectList
-					const idMapping = selectList.reduce((acc, el, i) => {
-						acc[el.id] = i;
-						return acc;
-					}, {});
-					this.commList.forEach(i => {
-						if (idMapping[i.id] != undefined) { //重复值
-							i.checked = true
-						} else {
-							i.checked = false
-						}
-						newCommList.push(i)
-					})
-				} else {
-					newCommList = this.commList.map(i => {
-						i.checked = false;
-						return i
-					})
-				}
-				return newCommList
-			}
-		},
-
-		watch: {
-			commList: {
-				handler(newVal, oldVal) {
-
-				},
-				immediate: true,
-				deep: true,
-			},
-		},
-
-		created() {
-			this.onshow()
-		},
-
-		methods: {
-			//搜索页来回跳转,刷新已选商品数据
-			onshow() {
-				if (uni.getStorageSync(this.storeName) && JSON.parse(uni.getStorageSync(
-						this.storeName)).length > 0) {
-					let commStor = JSON.parse(uni.getStorageSync(this.storeName))
-					this.selectList = commStor;
-				}
-			},
-
-			// 商品点击
-			commItemClick(e) {
-				if (e.noSelect) {
-					this.$modal.msg('当前商品已存在!')
-					return
-				}
-				if (this.selectShow) { //有选中框
-					if (this.isModal) { //私库中新建模商品,需要设置价格
-						if (e.price == null || e.price == undefined) {
-							this.$emit('comClick', e)
-							return
-						}
-					}
-
-					if (!e.checked && this.selectList && this.selectList.length >= 10) {
-						this.$modal.msg('一次最多添加10个商品!')
-						return
-					}
-
-					e.checked = !e.checked
-					//选中商品存储到内存中,以便取用
-					let commStor = []
-					if (e.checked) { //选中添加到存储中
-						if (uni.getStorageSync(this.storeName)) {
-							commStor = JSON.parse(uni.getStorageSync(this.storeName));
-						}
-						commStor.push(e);
-					} else { //取消选中删除,并且从存储中删除
-						commStor = JSON.parse(uni.getStorageSync(this.storeName));
-						for (let i = 0; i < commStor.length; i++) {
-							let item = commStor[i]
-							if (item.id == e.id) {
-								commStor.splice(i, 1);
-								break
-							}
-						}
-					}
-					//收集选中商品,更新存储
-					this.selectList = commStor;
-					commStor.length > 0 ? uni.setStorageSync(this.storeName, JSON.stringify(commStor)) : uni
-						.setStorageSync(
-							this.storeName, '')
-					if (commStor.length > 0) {
-						console.log('commStor', commStor)
-						uni.setStorageSync(this.storeName, JSON.stringify(commStor))
-					}
-				} else { //无选中框
-					this.$emit('comClick', e)
-				}
-			},
-
-			lowerBottom() {
-				this.$emit('lowerBottom')
-			},
-
-			// 点击左边的栏目切换
-			async swichMenu(index, item) {
-				if (index == this.current) return;
-				this.current = index;
-				this.$emit('switchMenu', item)
-				// 如果为0,意味着尚未初始化
-				if (this.menuHeight == 0 || this.menuItemHeight == 0) {
-					await this.getElRect('menu-scroll-view', 'menuHeight');
-					await this.getElRect('u-tab-item', 'menuItemHeight');
-				}
-				// 将菜单菜单活动item垂直居中
-				this.scrollTop = index * this.menuItemHeight + this.menuItemHeight / 2 - this.menuHeight / 2;
-			},
-			// 获取一个目标元素的高度
-			getElRect(elClass, dataVal) {
-				new Promise((resolve, reject) => {
-					const query = uni.createSelectorQuery().in(this);
-					query.select('.' + elClass).fields({
-						size: true
-					}, res => {
-						// 如果节点尚未生成,res值为null,循环调用执行
-						if (!res) {
-							setTimeout(() => {
-								this.getElRect(elClass);
-							}, 10);
-							return;
-						}
-						this[dataVal] = res.height;
-					}).exec();
-				})
-			},
-
-			// 关闭购物车
-			close() {
-				this.cartShow = false
-			},
-
-			// 删除当前商品
-			delCom(item) {
-				//删除选中商品,更新存储
-				let commStor = JSON.parse(uni.getStorageSync(this.storeName));
-				for (let i = 0; i < commStor.length; i++) {
-					let stor = commStor[i];
-					if (stor.id == item.id) {
-						commStor.splice(i, 1);
-						break
-					}
-				}
-				this.selectList = commStor;
-				uni.setStorageSync(this.storeName, JSON.stringify(commStor));
-				this.$modal.msg('删除成功~');
-			},
-
-			//清空购物车
-			clearCart() {
-				if (this.selectList.length > 0) {
-					this.delPopShow = true
-					this.delTitle = '清空已选商品'
-				} else {
-					this.$modal.msg('您没有选择任何商品!');
-				}
-			},
-
-			delSure() {
-				this.delPopShow = false
-				this.selectList = [];
-				uni.setStorageSync(this.storeName, '')
-				this.close()
-				this.$modal.msg('清空成功~');
-			},
-
-			delClose() {
-				this.delPopShow = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.u-menu-wrap {
-		flex: 1;
-		display: flex;
-		overflow: hidden;
-	}
-
-	.u-tab-view {
-		width: 200rpx;
-		height: 100%;
-	}
-
-	.u-tab-item {
-		height: 110rpx;
-		background: #f6f6f6;
-		box-sizing: border-box;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		font-size: 26rpx;
-		color: #444;
-		font-weight: 400;
-		line-height: 1;
-		position: relative;
-
-		&::after {
-			content: '';
-			height: 1rpx;
-			width: 100%;
-			background-color: #fafafa;
-			position: absolute;
-			left: 0;
-			bottom: 0;
-		}
-
-		.u-tab-num {
-			font-size: 20rpx;
-			margin-top: 6rpx;
-		}
-	}
-
-	.u-tab-item-active {
-		position: relative;
-		background: #fff;
-		color: #000;
-		font-weight: bold;
-	}
-
-	.u-tab-item-active::before {
-		content: "";
-		position: absolute;
-		border-left: 4px solid $uni-color-primary;
-		height: 32rpx;
-		left: 0;
-		top: 39rpx;
-	}
-
-	.u-tab-view {
-		height: 100%;
-	}
-
-	.right-box {
-		background-color: rgb(250, 250, 250);
-		padding-bottom: 20rpx;
-		position: relative;
-	}
-
-	.page-view {
-		padding: 16rpx 16rpx 0;
-	}
-
-	.class-item {
-		background-color: #fff;
-		padding: 16rpx;
-		border-radius: 8rpx;
-	}
-
-	.item-title {
-		font-size: 30rpx;
-		color: $u-main-color;
-		font-weight: bold;
-		margin: 10rpx 0;
-	}
-
-	.item-menu-name {
-		font-weight: normal;
-		font-size: 24rpx;
-		color: $u-main-color;
-	}
-
-	.item-container {
-		display: flex;
-		flex-direction: column;
-		flex-wrap: wrap;
-	}
-
-	.empty {
-		position: absolute;
-		left: 50%;
-		top: 50%;
-		transform: translate(-50%, -50%);
-	}
-
-	.item-menu-image {
-		width: 120rpx;
-		height: 120rpx;
-		border-radius: 100rpx;
-	}
-
-	.thumb-box {
-		display: flex;
-		flex-flow: row nowrap;
-		padding: 12rpx 0;
-		align-items: center;
-
-		&:not(:last-child) {
-			border-bottom: 1rpx solid #f4f4f4;
-			margin-bottom: 10rpx;
-		}
-	}
-
-	.select-img {
-		width: 40rpx;
-		height: 40rpx;
-	}
-
-	.check-content {
-		display: flex;
-		flex-direction: row;
-		align-items: center;
-		padding-left: 12rpx;
-
-		.comm-img {
-			width: 130rpx;
-			height: 130rpx;
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: space-around;
-
-			image {
-				width: 100%;
-			}
-		}
-
-		.comm-main {
-			box-sizing: border-box;
-			padding-left: 18rpx;
-			color: #999;
-
-			>view {
-				padding: 4rpx 0;
-			}
-
-			>view:nth-child(1) {
-				font-size: 28rpx;
-				font-weight: bold;
-				color: #333;
-			}
-
-			>view:nth-child(2) {
-				font-size: 24rpx;
-				max-width: 380rpx;
-			}
-
-			>view:nth-child(3) {
-				font-size: 24rpx;
-			}
-
-			>view:nth-child(4) {
-				font-size: 24rpx;
-
-				text {
-					font-weight: bold;
-					color: red;
-				}
-			}
-		}
-	}
-
-	.cart {
-		width: 120rpx;
-		height: 120rpx;
-		display: flex;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		border-radius: 120rpx;
-		position: fixed;
-		right: 24rpx;
-		bottom: 250rpx;
-
-		.cart-img {
-			width: 80rpx;
-			height: 80rpx;
-		}
-	}
-
-	.pop-top {
-		padding: 24rpx;
-		position: relative;
-
-		.left {
-			font-size: 28rpx;
-			font-weight: bold;
-		}
-
-		.clear {
-			position: absolute;
-			right: 24rpx;
-			top: 24rpx;
-		}
-	}
-
-	.pop-content {
-		// height: 200rpx;
-		padding: 0 24rpx;
-	}
-
-	.list-item {
-		display: flex;
-		flex-flow: row nowrap;
-		justify-content: space-between;
-		align-items: center;
-		width: 100%;
-	}
-
-	.comm-item {
-		display: flex;
-		flex-direction: row;
-		justify-content: flex-start;
-		align-items: center;
-		background-color: #fff;
-		margin-bottom: 12rpx;
-		border-radius: 12rpx;
-		box-sizing: border-box;
-		padding: 12rpx;
-
-		.comm-img {
-			width: 110rpx;
-		}
-
-		.item-content {
-			width: 480rpx;
-			padding-left: 24rpx;
-			color: #999;
-
-			>view:nth-child(1) {
-				font-size: 28rpx;
-				font-weight: bold;
-				color: #333;
-			}
-
-			>view:nth-child(2) {
-				font-size: 24rpx;
-				margin-top: 12rpx;
-			}
-
-			>view:nth-child(3) {
-				font-size: 24rpx;
-				margin-top: 12rpx;
-			}
-
-			>view:nth-child(4) {
-				font-size: 24rpx;
-				margin-top: 12rpx;
-
-				text {
-					font-weight: bold;
-					color: red;
-				}
-			}
-		}
-	}
-
-	.del-content {
-		padding: 48rpx;
-		font-size: 32rpx;
-		text-align: center;
-	}
-</style>

+ 0 - 108
components/tki-tree/style.css

@@ -1,108 +0,0 @@
-.tki-tree-mask {
-  position: fixed;
-  top: 0rpx;
-  right: 0rpx;
-  bottom: 0rpx;
-  left: 0rpx;
-  z-index: 9998;
-  background-color: rgba(0, 0, 0, 0.6);
-  opacity: 0;
-  transition: all 0.3s ease;
-  visibility: hidden;
-}
-.tki-tree-mask.show {
-  visibility: visible;
-  opacity: 1;
-}
-.tki-tree-cnt {
-  position: fixed;
-  top: 0rpx;
-  right: 0rpx;
-  bottom: 0rpx;
-  left: 0rpx;
-  z-index: 9999;
-  top: 160rpx;
-  transition: all 0.3s ease;
-  transform: translateY(100%);
-}
-.tki-tree-cnt.show {
-  transform: translateY(0);
-}
-.tki-tree-bar {
-  background-color: #fff;
-  height: 72rpx;
-  padding-left: 20rpx;
-  padding-right: 20rpx;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  box-sizing: border-box;
-  border-bottom-width: 1rpx !important;
-  border-bottom-style: solid;
-  border-bottom-color: #f5f5f5;
-  font-size: 32rpx;
-  color: #757575;
-  line-height: 1;
-}
-.tki-tree-bar-confirm {
-  color: #07bb07;
-}
-.tki-tree-view {
-  position: absolute;
-  top: 0rpx;
-  right: 0rpx;
-  bottom: 0rpx;
-  left: 0rpx;
-  top: 72rpx;
-  background-color: #fff;
-  padding-top: 20rpx;
-  padding-right: 20rpx;
-  padding-bottom: 20rpx;
-  padding-left: 20rpx;
-}
-.tki-tree-view-sc {
-  height: 100%;
-  overflow: hidden;
-}
-.tki-tree-item {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  font-size: 26rpx;
-  color: #757575;
-  line-height: 1;
-  height: 0;
-  opacity: 0;
-  transition: 0.2s;
-  position: relative;
-  overflow: hidden;
-}
-.tki-tree-item.show {
-  height: 80rpx;
-  opacity: 1;
-}
-.tki-tree-item.showchild:before {
-  transform: rotate(90deg);
-}
-.tki-tree-item.last:before {
-  opacity: 0;
-}
-.tki-tree-icon {
-  width: 26rpx;
-  height: 26rpx;
-  margin-right: 8rpx;
-}
-.tki-tree-label {
-  flex: 1;
-  display: flex;
-  align-items: center;
-  height: 100%;
-  line-height: 1.2;
-}
-.tki-tree-check {
-  width: 40px;
-  height: 40px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}

File diff suppressed because it is too large
+ 0 - 50
components/tki-tree/tki-tree.vue


+ 0 - 160
components/xy-button/index.vue

@@ -1,160 +0,0 @@
-<template>
-	<button @click="btnClick" :class="['cu-btn',size,icon?'has-icon':'']"
-		:style="{backgroundColor:bgColor,padding:padding,color:color,borderRadius:round,width:delWidth,border:delBorder}">
-		<slot></slot>
-		<view class="image" v-if="icon">
-			<u--image width="32rpx" height="32rpx" :src="icon" mode="widthFix"
-				:lazy-load="true">
-			</u--image>
-		</view>
-	</button>
-</template>
-
-<script>
-	import {
-		debounce
-	} from '@/utils/common.js'
-	export default {
-		data() {
-			return {
-				bflag: false,
-				timer: null,
-			}
-		},
-		props: {
-			text: {
-				type: String,
-				require: true,
-				default: ''
-			},
-			color: {
-				type: String,
-				require: true,
-				default: '#fff'
-			},
-			bgColor: {
-				type: String,
-				require: true,
-				default: '#2C6FF3'
-			},
-			padding: {
-				type: String
-			},
-			round: {
-				type: [Number, String],
-				default: 'none'
-			},
-			size: {
-				type: String,
-				require: true,
-				default: 'normal'
-			},
-			width: {
-				type: String
-			},
-			borderColor: {
-				type: String
-			},
-			delay: {
-				type: [Number, String],
-				require: false,
-				default: 0
-			},
-			icon:{
-				type: String,
-				require: false
-			}
-		},
-
-		computed: {
-			delWidth() {
-				let width = this.width;
-				if (this.size == 'mini' && !this.width) {
-					width = "auto"
-				}
-				if (this.size != 'mini' && !this.width) {
-					width = "100%"
-				}
-				return width
-			},
-			delBorder() {
-				let border = this.borderColor;
-				if (!this.borderColor) {
-					border = '0'
-				} else {
-					border = `1rpx solid ${border}`
-				}
-				return border
-			}
-		},
-
-		methods: {
-			btnClick() {
-				if(this.bflag) return
-				console.log('确定提交')
-				this.$emit('click')
-				this.bflag=true;
-				this.timer=setTimeout(()=>{
-					this.bflag=false;
-				},this.delay)
-			}
-		},
-		
-		destroyed() {
-			if(this.timer){
-				clearTimeout(this.timer)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.mini {
-		font-size: 24rpx;
-		border-radius: 6rpx;
-		padding: 0 12rpx;
-		height: 40rpx;
-		line-height: 38rpx;
-		display: inline-block;
-		width: 100rpx;
-	}
-	.medium {
-		font-size: 24rpx;
-		border-radius: 8rpx;
-		padding: 0 12rpx;
-		height: 50rpx;
-		line-height: 48rpx;
-		display: inline-block;
-		width: 100rpx;
-	}
-	.normal {
-		padding: 0 14rpx;
-		font-size: 26rpx;
-		height: 60rpx;
-		line-height: 58rpx;
-		border-radius: 8rpx;
-	}
-
-	.large {
-		border-radius: 12rpx;
-		height:80rpx;
-		line-height: 80rpx;
-		font-size: 28rpx;
-	}
-	
-	.cu-btn{
-		&.has-icon{
-			padding-left: 54rpx;
-			padding-right: 22rpx;
-			position: relative;
-			.image{
-				width:32rpx;
-				height:32rpx;
-				position: absolute;
-				left:13rpx;
-				top:50%;
-				transform: translateY(-50%);
-			}
-		}
-	}
-</style>

+ 0 - 1369
components/xy-imgResiz/index.vue

@@ -1,1369 +0,0 @@
-<template name="xy-imgResiz">
-	<view>
-		<canvas canvas-id="avatar-canvas" id="avatar-canvas" class="my-canvas" :style="{top: sT, height: csH}"
-			disable-scroll="false"></canvas>
-		<canvas canvas-id="oper-canvas" id="oper-canvas" class="oper-canvas" :style="{top: sT, height: csH}"
-			disable-scroll="false" @touchstart="fStart" @touchmove="fMove" @touchend="fEnd"></canvas>
-		<canvas canvas-id="prv-canvas" id="prv-canvas" class="prv-canvas" disable-scroll="false" @touchstart="fHideImg"
-			:style="{ height: csH, top: pT }"></canvas>
-		<view class="oper-wrapper" :style="{display: sD, top:tp}">
-			<view class="oper">
-				<view class="btn-wrapper" v-if="sO">
-					<view @click="fSelect" hover-class="hover" :style="{width: bW}"><text>重选</text></view>
-					<view @click="fClose" hover-class="hover" :style="{width: bW}"><text>关闭</text></view>
-					<view @click="fRotate" hover-class="hover" :style="{width: bW, display: bD}"><text>旋转</text></view>
-					<view @click="fPreview" hover-class="hover" :style="{width: bW}"><text>预览</text></view>
-					<view @click="fUpload" hover-class="hover" :style="{width: bW}"><text>上传</text></view>
-				</view>
-				<view class="clr-wrapper" v-else>
-					<slider class="my-slider" @change="fColorChange" block-size="25" value="0" min="-100" max="100"
-						activeColor="red" backgroundColor="green" block-color="grey" show-value></slider>
-					<view @click="fPrvUpload" hover-class="hover" :style="{width: bW}"><text>上传</text></view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	"use strict";
-	const tH = 50;
-	export default {
-		name: "xy-imgResiz",
-		data() {
-			return {
-				csH: '0px',
-				sD: 'none',
-				sT: '-10000px',
-				pT: '-10000px',
-				iS: {},
-				sS: {},
-				sO: true,
-				bW: '19%',
-				bD: 'flex',
-				tp: 0,
-				imgSrc: {
-					imgSrc: ''
-				},
-			};
-		},
-		watch: {
-			avatarSrc() {
-				this.imgSrc.imgSrc = this.avatarSrc;
-			}
-		},
-		props: {
-			avatarSrc: '',
-			avatarStyle: '',
-			selWidth: '',
-			selHeight: '',
-			expWidth: '',
-			expHeight: '',
-			minScale: '',
-			maxScale: '',
-			canScale: '',
-			canRotate: '',
-			lockWidth: '',
-			lockHeight: '',
-			stretch: '',
-			lock: '',
-			fileType: '',
-			noTab: '',
-			inner: '',
-			quality: '',
-			index: '',
-			bgImage: '',
-		},
-		created() {
-			this.cc = uni.createCanvasContext('avatar-canvas', this);
-			this.cco = uni.createCanvasContext('oper-canvas', this);
-			this.ccp = uni.createCanvasContext('prv-canvas', this);
-			this.qlty = parseFloat(this.quality) || 1;
-			this.imgSrc.imgSrc = this.avatarSrc;
-			this.letRotate = (this.canRotate === false || this.inner === true || this.inner === 'true' || this
-				.canRotate === 'false') ? 0 : 1;
-			this.letScale = (this.canScale === false || this.canScale === 'false') ? 0 : 1;
-			this.isin = (this.inner === true || this.inner === 'true') ? 1 : 0;
-			this.indx = this.index || undefined;
-			this.mnScale = parseFloat(this.minScale) || 0.3;
-			this.mxScale = parseFloat(this.maxScale) || 4;
-			this.noBar = (this.noTab === true || this.noTab === 'true') ? 1 : 0;
-			this.stc = this.stretch;
-			this.lck = this.lock;
-			this.fType = this.fileType === 'jpg' ? 'jpg' : 'png';
-			if (this.isin || !this.letRotate) {
-				this.bW = '24%';
-				this.bD = 'none';
-			} else {
-				this.bW = '19%';
-				this.bD = 'flex';
-			}
-
-			if (this.noBar) {
-				this.fWindowResize();
-			} else {
-				uni.showTabBar({
-					fail: () => {
-						this.noBar = 1;
-					},
-					success: () => {
-						this.noBar = 0;
-					},
-					complete: (res) => {
-						this.fWindowResize();
-					}
-				});
-			}
-		},
-		methods: {
-			fWindowResize() {
-				let sysInfo = uni.getSystemInfoSync();
-				this.platform = sysInfo.platform;
-				this.wW = sysInfo.windowWidth;
-
-				// #ifdef H5
-				this.drawTop = sysInfo.windowTop;
-				// #endif
-				// #ifndef H5
-				this.drawTop = 0;
-				// #endif
-
-				// #ifdef MP-ALIPAY
-				this.wH = sysInfo.screenHeight - sysInfo.statusBarHeight - sysInfo.titleBarHeight;
-				this.csH = this.wH - tH + 'px';
-				// #endif
-
-				// #ifndef MP-ALIPAY
-				this.wH = sysInfo.windowHeight;
-				if (!this.noBar) this.wH += tH;
-				this.csH = this.wH - tH + 'px';
-				// #endif
-
-				this.tp = this.csH;
-				// #ifdef H5
-				this.tp = sysInfo.windowTop + parseInt(this.csH) + 'px';
-				// #endif
-
-				this.pxRatio = this.wW / 750;
-
-				let style = this.avatarStyle;
-				if (style && style !== true && (style = style.trim())) {
-					style = style.split(';');
-					let obj = {};
-					for (let v of style) {
-						if (!v) continue;
-						v = v.trim().split(':');
-						if (v[1].toString().indexOf('upx') >= 0) {
-							let arr = v[1].trim().split(' ');
-							for (let k in arr) {
-								if (!arr[k]) continue;
-								if (arr[k].toString().indexOf('upx') >= 0) {
-									arr[k] = parseFloat(arr[k]) * this.pxRatio + 'px';
-								}
-							}
-							v[1] = arr.join(' ');
-						}
-						obj[v[0].trim()] = v[1].trim();
-					}
-					this.iS = obj;
-				}
-
-				this.expWidth && (this.eW = this.expWidth.toString().indexOf('upx') >= 0 ? parseInt(this.expWidth) * this
-					.pxRatio :
-					parseInt(this.expWidth));
-				this.expHeight && (this.eH = this.expHeight.toString().indexOf('upx') >= 0 ? parseInt(this.expHeight) *
-					this.pxRatio :
-					parseInt(this.expHeight));
-
-				if (this.sD === 'flex') {
-					this.fDrawInit(true);
-				}
-				this.fHideImg();
-			},
-			fSelect() {
-				if (this.fSelecting) return;
-				this.fSelecting = true;
-				setTimeout(() => {
-					this.fSelecting = false;
-				}, 500);
-
-				uni.chooseImage({
-					count: 1,
-					sizeType: ['original', 'compressed'],
-					sourceType: ['album', 'camera'],
-					success: (r) => {
-						// #ifdef MP-ALIPAY
-						uni.showLoading();
-						// #endif
-						// #ifndef MP-ALIPAY
-						uni.showLoading({
-							title: '加载中...',
-							mask: true
-						});
-						// #endif
-
-						let path = this.imgPath = r.tempFilePaths[0];
-						uni.getImageInfo({
-							src: path,
-							success: r => {
-								this.imgWidth = r.width;
-								this.imgHeight = r.height;
-								this.path = path;
-								if (!this.hasSel) {
-									let style = this.sS || {};
-									if (this.selWidth && this.selHeight) {
-										let sW = this.selWidth.toString().indexOf('upx') >= 0 ?
-											parseInt(this.selWidth) * this.pxRatio : parseInt(
-												this.selWidth),
-											sH = this.selHeight.toString().indexOf('upx') >= 0 ?
-											parseInt(this.selHeight) * this.pxRatio : parseInt(
-												this.selHeight);
-										style.width = sW + 'px';
-										style.height = sH + 'px';
-										style.top = ((this.wH - sH - tH) | 0) / 2 + 'px';
-										style.left = ((this.wW - sW) | 0) / 2 + 'px';
-									} else {
-										uni.showModal({
-											title: '裁剪框的宽或高没有设置',
-											showCancel: false
-										})
-										return;
-									}
-									this.sS = style;
-								}
-
-								if (this.noBar) {
-									this.fDrawInit(true);
-								} else {
-									uni.hideTabBar({
-										complete: () => {
-											this.fDrawInit(true);
-										}
-									});
-								}
-							},
-							fail: () => {
-								uni.showToast({
-									title: "请选择正确图片",
-									duration: 2000,
-								})
-							},
-							complete() {
-								uni.hideLoading();
-							}
-						});
-
-					}
-				})
-			},
-			fUpload() {
-				if (this.fUploading) return;
-				this.fUploading = true;
-				setTimeout(() => {
-					this.fUploading = false;
-				}, 1000)
-
-				let style = this.sS,
-					x = parseInt(style.left),
-					y = parseInt(style.top),
-					width = parseInt(style.width),
-					height = parseInt(style.height),
-					expWidth = this.eW || (width * this.pixelRatio),
-					expHeight = this.eH || (height * this.pixelRatio);
-
-				// #ifdef MP-ALIPAY
-				uni.showLoading();
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.showLoading({
-					title: '加载中...',
-					mask: true
-				});
-				// #endif
-
-				this.sD = 'none';
-				this.sT = '-10000px';
-				this.hasSel = false;
-				this.fHideImg();
-				// #ifdef MP-ALIPAY
-				this.cc.toTempFilePath({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					destWidth: expWidth,
-					destHeight: expHeight,
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						r = r.apFilePath;
-						this.$emit("upload", {
-							avatar: this.imgSrc,
-							path: r,
-							index: this.indx,
-							data: this.rtn,
-							base64: this.base64 || null
-						});
-					},
-					fail: (res) => {
-						uni.showToast({
-							title: "error1",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-						this.noBar || uni.showTabBar();
-						this.$emit("end");
-					}
-				});
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.canvasToTempFilePath({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					destWidth: expWidth,
-					destHeight: expHeight,
-					canvasId: 'avatar-canvas',
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						r = r.tempFilePath;
-						// #ifdef H5
-						this.btop(r).then((r) => {
-							this.$emit("upload", {
-								avatar: this.imgSrc,
-								path: r,
-								index: this.indx,
-								data: this.rtn,
-								base64: this.base64 || null
-							});
-							return;
-						})
-						// #endif
-						// #ifndef H5
-						this.$emit("upload", {
-							avatar: this.imgSrc,
-							path: r,
-							index: this.indx,
-							data: this.rtn,
-							base64: this.base64 || null
-						});
-						// #endif
-					},
-					fail: (res) => {
-						uni.showToast({
-							title: "error1",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-						this.noBar || uni.showTabBar();
-						this.$emit("end");
-					}
-				}, this);
-				// #endif
-			},
-			fPrvUpload() {
-				if (this.fPrvUploading) return;
-				this.fPrvUploading = true;
-				setTimeout(() => {
-					this.fPrvUploading = false;
-				}, 1000)
-
-				let style = this.sS,
-					destWidth = parseInt(style.width),
-					destHeight = parseInt(style.height),
-					prvX = this.prvX,
-					prvY = this.prvY,
-					prvWidth = this.prvWidth,
-					prvHeight = this.prvHeight,
-					expWidth = this.eW || (parseInt(style.width) * this.pixelRatio),
-					expHeight = this.eH || (parseInt(style.height) * this.pixelRatio);
-
-				// #ifdef MP-ALIPAY
-				uni.showLoading();
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.showLoading({
-					title: '加载中...',
-					mask: true
-				});
-				// #endif
-
-				this.sD = 'none';
-				this.sT = '-10000px';
-				this.hasSel = false;
-				this.fHideImg();
-				// #ifdef MP-ALIPAY
-				this.ccp.toTempFilePath({
-					x: prvX,
-					y: prvY,
-					width: prvWidth,
-					height: prvHeight,
-					destWidth: expWidth,
-					destHeight: expHeight,
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						r = r.apFilePath;
-						this.$emit("upload", {
-							avatar: this.imgSrc,
-							path: r,
-							index: this.indx,
-							data: this.rtn,
-							base64: this.base64 || null
-						});
-					},
-					fail: () => {
-						uni.showToast({
-							title: "error_prv",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-						this.noBar || uni.showTabBar();
-						this.$emit("end");
-					}
-				});
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.canvasToTempFilePath({
-					x: prvX,
-					y: prvY,
-					width: prvWidth,
-					height: prvHeight,
-					destWidth: expWidth,
-					destHeight: expHeight,
-					canvasId: 'prv-canvas',
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						r = r.tempFilePath;
-						// #ifdef H5
-						this.btop(r).then((r) => {
-							this.$emit("upload", {
-								avatar: this.imgSrc,
-								path: r,
-								index: this.indx,
-								data: this.rtn,
-								base64: this.base64 || null
-							});
-						})
-						// #endif
-						// #ifndef H5
-						this.$emit("upload", {
-							avatar: this.imgSrc,
-							path: r,
-							index: this.indx,
-							data: this.rtn,
-							base64: this.base64 || null
-						});
-						// #endif
-					},
-					fail: () => {
-						uni.showToast({
-							title: "error_prv",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-						this.noBar || uni.showTabBar();
-						this.$emit("end");
-					}
-				}, this);
-				// #endif
-			},
-			fDrawInit(ini = false) {
-				let allWidth = this.wW,
-					allHeight = this.wH,
-					imgWidth = this.imgWidth,
-					imgHeight = this.imgHeight,
-					imgRadio = imgWidth / imgHeight,
-					useWidth = allWidth - 40,
-					useHeight = allHeight - tH - 80,
-					useRadio = useWidth / useHeight,
-					sW = parseInt(this.sS.width),
-					sH = parseInt(this.sS.height);
-
-				this.fixWidth = 0;
-				this.fixHeight = 0;
-				this.lckWidth = 0;
-				this.lckHeight = 0;
-				switch (this.stc) {
-					case 'x':
-						this.fixWidth = 1;
-						break;
-					case 'y':
-						this.fixHeight = 1;
-						break;
-					case 'long':
-						if (imgRadio > 1) this.fixWidth = 1;
-						else this.fixHeight = 1;
-						break;
-					case 'short':
-						if (imgRadio > 1) this.fixHeight = 1;
-						else this.fixWidth = 1;
-						break;
-					case 'longSel':
-						if (sW > sH) this.fixWidth = 1;
-						else this.fixHeight = 1;
-						break;
-					case 'shortSel':
-						if (sW > sH) this.fixHeight = 1;
-						else this.fixWidth = 1;
-						break;
-				}
-				switch (this.lck) {
-					case 'x':
-						this.lckWidth = 1;
-						break;
-					case 'y':
-						this.lckHeight = 1;
-						break;
-					case 'long':
-						if (imgRadio > 1) this.lckWidth = 1;
-						else this.lckHeight = 1;
-						break;
-					case 'short':
-						if (imgRadio > 1) this.lckHeight = 1;
-						else this.lckWidth = 1;
-						break;
-					case 'longSel':
-						if (sW > sH) this.lckWidth = 1;
-						else this.lckHeight = 1;
-						break;
-					case 'shortSel':
-						if (sW > sH) this.lckHeight = 1;
-						else this.lckWidth = 1;
-						break;
-				}
-				if (this.fixWidth) {
-					useWidth = sW;
-					useHeight = useWidth / imgRadio;
-				} else if (this.fixHeight) {
-					useHeight = sH;
-					useWidth = useHeight * imgRadio;
-				} else if (imgRadio < useRadio) {
-					if (imgHeight < useHeight) {
-						useWidth = imgWidth;
-						useHeight = imgHeight;
-					} else {
-						useWidth = useHeight * imgRadio;
-					}
-				} else {
-					if (imgWidth < useWidth) {
-						useWidth = imgWidth;
-						useHeight = imgHeight;
-					} else {
-						useHeight = useWidth / imgRadio;
-					}
-				}
-				if (this.isin) {
-					if (useWidth < sW) {
-						useWidth = sW;
-						useHeight = useWidth / imgRadio;
-						this.lckHeight = 0;
-					}
-					if (useHeight < sH) {
-						useHeight = sH;
-						useWidth = useHeight * imgRadio;
-						this.lckWidth = 0;
-					}
-				}
-
-				this.scaleSize = 1;
-				this.rotateDeg = 0;
-				this.posWidth = (allWidth - useWidth) / 2 | 0;
-				this.posHeight = (allHeight - useHeight - tH) / 2 | 0;
-				this.useWidth = useWidth | 0;
-				this.useHeight = useHeight | 0;
-				this.centerX = this.posWidth + useWidth / 2;
-				this.centerY = this.posHeight + useHeight / 2;
-				this.focusX = 0;
-				this.focusY = 0;
-
-				let style = this.sS,
-					left = parseInt(style.left),
-					top = parseInt(style.top),
-					width = parseInt(style.width),
-					height = parseInt(style.height),
-					canvas = this.canvas,
-					canvasOper = this.canvasOper,
-					cc = this.cc,
-					cco = this.cco;
-
-				cco.beginPath();
-				cco.setLineWidth(3);
-				cco.setGlobalAlpha(1);
-				cco.setStrokeStyle('white');
-				cco.strokeRect(left, top, width, height);
-
-				cco.setFillStyle('black');
-				cco.setGlobalAlpha(0.5);
-				cco.fillRect(0, 0, this.wW, top);
-				cco.fillRect(0, top, left, height);
-				cco.fillRect(0, top + height, this.wW, this.wH - height - top - tH);
-				cco.fillRect(left + width, top, this.wW - width - left, height);
-
-				cco.setGlobalAlpha(1);
-				cco.setStrokeStyle('red');
-				cco.moveTo(left + 15, top);
-				cco.lineTo(left, top);
-				cco.lineTo(left, top + 15);
-				cco.moveTo(left + width - 15, top);
-				cco.lineTo(left + width, top);
-				cco.lineTo(left + width, top + 15);
-				cco.moveTo(left + 15, top + height);
-				cco.lineTo(left, top + height);
-				cco.lineTo(left, top + height - 15);
-				cco.moveTo(left + width - 15, top + height);
-				cco.lineTo(left + width, top + height);
-				cco.lineTo(left + width, top + height - 15);
-				cco.stroke();
-
-				cco.draw(false, () => {
-					if (ini) {
-						this.sD = 'flex';
-						this.sT = this.drawTop + 'px';
-						this.fDrawImage(true);
-					}
-				});
-				this.$emit("init");
-			},
-			fDrawImage(ini = false) {
-				let tm_now = Date.now();
-				if (tm_now - this.drawTm < 20) return;
-				this.drawTm = tm_now;
-
-				let cc = this.cc,
-					imgWidth = this.useWidth * this.scaleSize,
-					imgHeight = this.useHeight * this.scaleSize;
-
-				// #ifdef MP-ALIPAY	
-				cc.save();
-				// #endif
-
-				if (this.bgImage) {
-					// #ifdef MP-ALIPAY
-					cc.clearRect(0, 0, this.wW, this.wH - tH);
-					// #endif
-					// #ifndef MP-ALIPAY
-					cc.drawImage(this.bgImage, 0, 0, this.wW, this.wH - tH);
-					// #endif
-				} else {
-					cc.fillRect(0, 0, this.wW, this.wH - tH);
-				}
-
-				if (this.isin) {
-					let cx = this.focusX * (this.scaleSize - 1),
-						cy = this.focusY * (this.scaleSize - 1);
-
-					cc.translate(this.centerX, this.centerY);
-					cc.rotate(this.rotateDeg * Math.PI / 180);
-					cc.drawImage(this.imgPath, this.posWidth - this.centerX - cx, this.posHeight - this.centerY - cy,
-						imgWidth, imgHeight);
-
-				} else {
-					cc.translate(this.posWidth + imgWidth / 2, this.posHeight + imgHeight / 2);
-					cc.rotate(this.rotateDeg * Math.PI / 180);
-					cc.drawImage(this.imgPath, -imgWidth / 2, -imgHeight / 2, imgWidth, imgHeight);
-				}
-
-				cc.draw(false);
-
-				// #ifdef MP-ALIPAY
-				cc.restore();
-				// #endif
-			},
-			fPreview() {
-				if (this.fPreviewing) return;
-				this.fPreviewing = true;
-				setTimeout(() => {
-					this.fPreviewing = false;
-				}, 1000);
-
-				let style = this.sS,
-					x = parseInt(style.left),
-					y = parseInt(style.top),
-					width = parseInt(style.width),
-					height = parseInt(style.height);
-
-				// #ifdef MP-ALIPAY
-				uni.showLoading();
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.showLoading({
-					title: '加载中...',
-					mask: true
-				});
-				// #endif
-
-				// #ifdef MP-ALIPAY
-				this.cc.toTempFilePath({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					expWidth: width * this.pixelRatio,
-					expHeight: height * this.pixelRatio,
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						this.prvImgTmp = r = r.apFilePath;
-						let ccp = this.ccp,
-							prvX = this.wW,
-							prvY = parseInt(this.csH),
-							prvWidth = parseInt(this.sS.width),
-							prvHeight = parseInt(this.sS.height),
-							useWidth = prvX - 40,
-							useHeight = prvY - 80,
-							radio = useWidth / prvWidth,
-							rHeight = prvHeight * radio;
-						if (rHeight < useHeight) {
-							prvWidth = useWidth;
-							prvHeight = rHeight;
-						} else {
-							radio = useHeight / prvHeight;
-							prvWidth *= radio;
-							prvHeight = useHeight;
-						}
-						ccp.fillRect(0, 0, prvX, prvY);
-						this.prvX = prvX = ((prvX - prvWidth) / 2) | 0;
-						this.prvY = prvY = ((prvY - prvHeight) / 2) | 0;
-						this.prvWidth = prvWidth = prvWidth | 0;
-						this.prvHeight = prvHeight = prvHeight | 0;
-						ccp.drawImage(r, prvX, prvY, prvWidth, prvHeight);
-						ccp.draw(false);
-
-						this.sO = false;
-						this.pT = '0';
-					},
-					fail: () => {
-						uni.showToast({
-							title: "error2",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-					}
-				});
-				// #endif
-
-				// #ifndef MP-ALIPAY
-				uni.canvasToTempFilePath({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					expWidth: width * this.pixelRatio,
-					expHeight: height * this.pixelRatio,
-					canvasId: 'avatar-canvas',
-					fileType: this.fType,
-					quality: this.qlty,
-					success: (r) => {
-						this.prvImgTmp = r = r.tempFilePath;
-
-						let ccp = this.ccp,
-							prvX = this.wW,
-							prvY = parseInt(this.csH);
-
-						// #ifndef H5||MP-WEIXIN||APP-PLUS
-						prvY += tH;
-						// #endif
-						// #ifdef APP-PLUS
-						if (this.platform === 'android') {
-							prvY += tH;
-						}
-						// #endif
-
-						let prvWidth = parseInt(this.sS.width),
-							prvHeight = parseInt(this.sS.height),
-							useWidth = prvX - 40,
-							useHeight = prvY - 80,
-							radio = useWidth / prvWidth,
-							rHeight = prvHeight * radio;
-						if (rHeight < useHeight) {
-							prvWidth = useWidth;
-							prvHeight = rHeight;
-						} else {
-							radio = useHeight / prvHeight;
-							prvWidth *= radio;
-							prvHeight = useHeight;
-						}
-
-						ccp.fillRect(0, 0, prvX, prvY);
-						this.prvX = prvX = ((prvX - prvWidth) / 2) | 0;
-						this.prvY = prvY = ((prvY - prvHeight) / 2) | 0;
-						this.prvWidth = prvWidth = prvWidth | 0;
-						this.prvHeight = prvHeight = prvHeight | 0;
-						ccp.drawImage(r, prvX, prvY, prvWidth, prvHeight);
-						ccp.draw(false);
-
-						// #ifdef H5
-						this.btop(r).then((r) => {
-							this.sO = false;
-							this.pT = this.drawTop + 'px';
-						})
-						// #endif
-
-						this.sO = false;
-						// if (this.platform === 'android') this.sO = false;
-						this.pT = this.drawTop + 'px';
-					},
-					fail: () => {
-						uni.showToast({
-							title: "error2",
-							duration: 2000,
-						})
-					},
-					complete: () => {
-						uni.hideLoading();
-					}
-				}, this);
-				// #endif
-			},
-			fChooseImg(params = undefined, data = undefined, index = undefined, ) {
-				if (params) {
-					let sW = params.selWidth,
-						sH = params.selHeight,
-						expWidth = params.expWidth,
-						expHeight = params.expHeight,
-						quality = params.quality,
-						canRotate = params.canRotate,
-						canScale = params.canScale,
-						minScale = params.minScale,
-						maxScale = params.maxScale,
-						stretch = params.stretch,
-						fileType = params.fileType,
-						inner = params.inner,
-						lock = params.lock;
-
-					expWidth && (this.eW = expWidth.toString().indexOf('upx') >= 0 ? parseInt(expWidth) * this.pxRatio :
-						parseInt(
-							expWidth));
-					expHeight && (this.eH = expHeight.toString().indexOf('upx') >= 0 ? parseInt(expHeight) * this.pxRatio :
-						parseInt(
-							expHeight));
-					this.letRotate = (canRotate === false || inner === true || inner === 'true' || canRotate === 'false') ?
-						0 : 1;
-					this.letScale = (canScale === false || canScale === 'false') ? 0 : 1;
-					this.qlty = parseFloat(quality) || 1;
-					this.mnScale = parseFloat(minScale) || 0.3;
-					this.mxScale = parseFloat(maxScale) || 4;
-					this.stc = stretch;
-					this.isin = (inner === true || inner === 'true') ? 1 : 0;
-					this.fType = fileType === 'jpg' ? 'jpg' : 'png';
-					this.lck = lock;
-					if (this.isin || !this.letRotate) {
-						this.bW = '24%';
-						this.bD = 'none';
-					} else {
-						this.bW = '19%';
-						this.bD = 'flex';
-					}
-
-					if (sW && sH) {
-						sW = sW.toString().indexOf('upx') >= 0 ? parseInt(sW) * this.pxRatio : parseInt(sW);
-						sH = sH.toString().indexOf('upx') >= 0 ? parseInt(sH) * this.pxRatio : parseInt(sH);
-						this.sS.width = sW + 'px';
-						this.sS.height = sH + 'px';
-						this.sS.top = ((this.wH - sH - tH) | 0) / 2 + 'px';
-						this.sS.left = ((this.wW - sW) | 0) / 2 + 'px';
-						this.hasSel = true;
-					}
-				}
-				this.rtn = data;
-				this.indx = index;
-				this.fSelect();
-			},
-			fRotate() {
-				this.rotateDeg += 90 - this.rotateDeg % 90;
-				this.fDrawImage();
-			},
-			fStart(e) {
-				let touches = e.touches,
-					touch0 = touches[0],
-					touch1 = touches[1];
-
-				this.touch0 = touch0;
-				this.touch1 = touch1;
-
-				if (touch1) {
-					let x = touch1.x - touch0.x,
-						y = touch1.y - touch0.y;
-					this.fgDistance = Math.sqrt(x * x + y * y);
-				}
-			},
-			fMove(e) {
-				let touches = e.touches,
-					touch0 = touches[0],
-					touch1 = touches[1];
-
-				if (touch1) {
-					let x = touch1.x - touch0.x,
-						y = touch1.y - touch0.y,
-						fgDistance = Math.sqrt(x * x + y * y),
-						scaleSize = 0.005 * (fgDistance - this.fgDistance),
-						beScaleSize = this.scaleSize + scaleSize;
-
-					do {
-						if (!this.letScale) break;
-						if (beScaleSize < this.mnScale) break;
-						if (beScaleSize > this.mxScale) break;
-
-						let growX = this.useWidth * scaleSize / 2,
-							growY = this.useHeight * scaleSize / 2;
-						if (this.isin) {
-							let imgWidth = this.useWidth * beScaleSize,
-								imgHeight = this.useHeight * beScaleSize,
-								l = this.posWidth - growX,
-								t = this.posHeight - growY,
-								r = l + imgWidth,
-								b = t + imgHeight,
-								left = parseInt(this.sS.left),
-								top = parseInt(this.sS.top),
-								width = parseInt(this.sS.width),
-								height = parseInt(this.sS.height),
-								right = left + width,
-								bottom = top + height,
-								cx, cy;
-
-							if (imgWidth <= width || imgHeight <= height) break;
-							this.cx = cx = this.focusX * beScaleSize - this.focusX,
-								this.cy = cy = this.focusY * beScaleSize - this.focusY;
-							this.posWidth -= growX;
-							this.posHeight -= growY;
-							if (this.posWidth - cx > left) {
-								this.posWidth = left + cx;
-							}
-							if (this.posWidth + imgWidth - cx < right) {
-								this.posWidth = right - imgWidth + cx;
-							}
-							if (this.posHeight - cy > top) {
-								this.posHeight = top + cy;
-							}
-							if (this.posHeight + imgHeight - cy < bottom) {
-								this.posHeight = bottom - imgHeight + cy;
-							}
-						} else {
-							this.posWidth -= growX;
-							this.posHeight -= growY;
-						}
-
-						this.scaleSize = beScaleSize;
-					} while (0);
-					this.fgDistance = fgDistance;
-					if (touch1.x !== touch0.x && this.letRotate) {
-						x = (this.touch1.y - this.touch0.y) / (this.touch1.x - this.touch0.x);
-						y = (touch1.y - touch0.y) / (touch1.x - touch0.x);
-						this.rotateDeg += Math.atan((y - x) / (1 + x * y)) * 180 / Math.PI;
-						this.touch0 = touch0;
-						this.touch1 = touch1;
-					}
-
-					this.fDrawImage();
-				} else if (this.touch0) {
-					let x = touch0.x - this.touch0.x,
-						y = touch0.y - this.touch0.y,
-						beX = this.posWidth + x,
-						beY = this.posHeight + y;
-					if (this.isin) {
-						let imgWidth = this.useWidth * this.scaleSize,
-							imgHeight = this.useHeight * this.scaleSize,
-							l = beX,
-							t = beY,
-							r = l + imgWidth,
-							b = t + imgHeight,
-							left = parseInt(this.sS.left),
-							top = parseInt(this.sS.top),
-							right = left + parseInt(this.sS.width),
-							bottom = top + parseInt(this.sS.height),
-							cx, cy;
-
-						this.cx = cx = this.focusX * this.scaleSize - this.focusX;
-						this.cy = cy = this.focusY * this.scaleSize - this.focusY;
-
-						if (!this.lckWidth && Math.abs(x) < 100) {
-							if (left < l - cx) {
-								this.posWidth = left + cx;
-							} else if (right > r - cx) {
-								this.posWidth = right - imgWidth + cx;
-							} else {
-								this.posWidth = beX;
-								this.focusX -= x;
-							}
-						}
-						if (!this.lckHeight && Math.abs(y) < 100) {
-							if (top < t - cy) {
-								this.focusY -= (top + cy - this.posHeight);
-								this.posHeight = top + cy;
-							} else if (bottom > b - cy) {
-								this.focusY -= (bottom + cy - (this.posHeight + imgHeight));
-								this.posHeight = bottom - imgHeight + cy;
-							} else {
-								this.posHeight = beY;
-								this.focusY -= y;
-							}
-						}
-					} else {
-						if (Math.abs(x) < 100 && !this.lckWidth) this.posWidth = beX;
-						if (Math.abs(y) < 100 && !this.lckHeight) this.posHeight = beY;
-						this.focusX -= x;
-						this.focusY -= y;
-					}
-
-					this.touch0 = touch0;
-					this.fDrawImage();
-				}
-			},
-			fEnd(e) {
-				let touches = e.touches,
-					touch0 = touches && touches[0],
-					touch1 = touches && touches[1];
-				if (touch0) {
-					this.touch0 = touch0;
-				} else {
-					this.touch0 = null;
-					this.touch1 = null;
-				}
-			},
-			fHideImg() {
-				this.prvImg = '';
-				this.pT = '-10000px';
-				this.sO = true;
-				this.prvImgData = null;
-				this.target = null;
-			},
-			fClose() {
-				this.sD = 'none';
-				this.sT = '-10000px';
-				this.hasSel = false;
-				this.fHideImg();
-				this.noBar || uni.showTabBar();
-				this.$emit("end");
-			},
-			fGetImgData() {
-				return new Promise((resolve, reject) => {
-					let prvX = this.prvX,
-						prvY = this.prvY,
-						prvWidth = this.prvWidth,
-						prvHeight = this.prvHeight;
-					// #ifdef MP-ALIPAY
-					this.ccp.getImageData({
-						x: prvX,
-						y: prvY,
-						width: prvWidth,
-						height: prvHeight,
-						success(res) {
-							resolve(res.data);
-						},
-						fail(err) {
-							reject(err);
-						}
-					}, this);
-					// #endif
-					// #ifndef MP-ALIPAY
-					uni.canvasGetImageData({
-						canvasId: 'prv-canvas',
-						x: prvX,
-						y: prvY,
-						width: prvWidth,
-						height: prvHeight,
-						success(res) {
-							resolve(res.data);
-						},
-						fail(err) {
-							reject(err);
-						}
-					}, this);
-					// #endif
-				});
-			},
-			async fColorChange(e) {
-				let tm_now = Date.now();
-				if (tm_now - this.prvTm < 100) return;
-				this.prvTm = tm_now;
-
-				// #ifdef MP-ALIPAY
-				uni.showLoading();
-				// #endif
-				// #ifndef MP-ALIPAY
-				uni.showLoading({
-					title: '加载中...',
-					mask: true
-				});
-				// #endif
-
-				if (!this.prvImgData) {
-					if (!(this.prvImgData = await this.fGetImgData().catch(() => {
-							uni.showToast({
-								title: "error_read",
-								duration: 2000,
-							})
-						}))) return;
-
-					this.target = new Uint8ClampedArray(this.prvImgData.length);
-				}
-
-				let data = this.prvImgData,
-					target = this.target,
-					i = e.detail.value,
-					r, g, b, a, h, s, l, d, p, q, t, min, max, hK, tR, tG, tB;
-
-				if (i === 0) {
-					target = data;
-				} else {
-					i = (i + 100) / 200;
-					if (i < 0.005) i = 0;
-					if (i > 0.995) i = 1;
-					for (let n = data.length - 1; n >= 0; n -= 4) {
-						r = data[n - 3] / 255;
-						g = data[n - 2] / 255;
-						b = data[n - 1] / 255;
-						max = Math.max(r, g, b);
-						min = Math.min(r, g, b);
-						d = max - min;
-						if (max === min) {
-							h = 0;
-						} else if (max === r && g >= b) {
-							h = 60 * ((g - b) / d);
-						} else if (max === r && g < b) {
-							h = 60 * ((g - b) / d) + 360;
-						} else if (max === g) {
-							h = 60 * ((b - r) / d) + 120;
-						} else if (max === b) {
-							h = 60 * ((r - g) / d) + 240;
-						}
-						l = (max + min) / 2;
-						if (l === 0 || max === min) {
-							s = 0;
-						} else if (0 < l && l <= 0.5) {
-							s = d / (2 * l);
-						} else if (l > 0.5) {
-							s = d / (2 - 2 * l);
-						}
-						data[n] && (a = data[n]);
-
-						if (i < 0.5) {
-							s = s * i / 0.5;
-						} else if (i > 0.5) {
-							s = 2 * s + 2 * i - (s * i / 0.5) - 1;
-						}
-
-						if (s === 0) {
-							r = g = b = Math.round(l * 255);
-						} else {
-							if (l < 0.5) {
-								q = l * (1 + s);
-							} else if (l >= 0.5) {
-								q = l + s - (l * s);
-							}
-							p = 2 * l - q;
-							hK = h / 360;
-							tR = hK + 1 / 3;
-							tG = hK;
-							tB = hK - 1 / 3;
-							let correctRGB = (t) => {
-								if (t < 0) {
-									return t + 1.0;
-								}
-								if (t > 1) {
-									return t - 1.0;
-								}
-								return t;
-							};
-							let createRGB = (t) => {
-								if (t < (1 / 6)) {
-									return p + ((q - p) * 6 * t);
-								} else if (t >= (1 / 6) && t < (1 / 2)) {
-									return q;
-								} else if (t >= (1 / 2) && t < (2 / 3)) {
-									return p + ((q - p) * 6 * ((2 / 3) - t));
-								}
-								return p;
-							};
-							r = tR = Math.round(createRGB(correctRGB(tR)) * 255);
-							g = tG = Math.round(createRGB(correctRGB(tG)) * 255);
-							b = tB = Math.round(createRGB(correctRGB(tB)) * 255);
-						}
-						a && (target[n] = a);
-						target[n - 3] = r;
-						target[n - 2] = g;
-						target[n - 1] = b;
-					}
-				}
-
-				let prvX = this.prvX,
-					prvY = this.prvY,
-					prvWidth = this.prvWidth,
-					prvHeight = this.prvHeight;
-
-				// #ifdef MP-ALIPAY
-				this.ccp.putImageData({
-					x: prvX,
-					y: prvY,
-					width: prvWidth,
-					height: prvHeight,
-					data: target,
-					fail() {
-						uni.showToast({
-							title: 'error_put',
-							duration: 2000
-						})
-					},
-					complete() {
-						uni.hideLoading();
-					}
-				}, this);
-				// #endif
-
-				// #ifndef MP-ALIPAY
-				uni.canvasPutImageData({
-					canvasId: 'prv-canvas',
-					x: prvX,
-					y: prvY,
-					width: prvWidth,
-					height: prvHeight,
-					data: target,
-					fail() {
-						uni.showToast({
-							title: 'error_put',
-							duration: 2000
-						})
-					},
-					complete() {
-						uni.hideLoading();
-					}
-				}, this);
-				// #endif
-			},
-			btop(base64) {
-				this.base64 = base64;
-				return new Promise(function(resolve, reject) {
-					var arr = base64.split(','),
-						mime = arr[0].match(/:(.*?);/)[1],
-						bstr = atob(arr[1]),
-						n = bstr.length,
-						u8arr = new Uint8Array(n);
-					while (n--) {
-						u8arr[n] = bstr.charCodeAt(n);
-					}
-					return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([u8arr], {
-						type: mime
-					})));
-				});
-			},
-		}
-	}
-</script>
-
-<style>
-	.my-canvas {
-		display: flex;
-		position: fixed !important;
-		background: #000000;
-		left: 0;
-		z-index: 100000;
-		width: 100%;
-	}
-
-	.my-avatar {
-		width: 160rpx;
-		height: 160rpx;
-	}
-
-	.oper-canvas {
-		display: flex;
-		position: fixed !important;
-		left: 0;
-		z-index: 100001;
-		width: 100%;
-	}
-
-	.prv-canvas {
-		display: flex;
-		position: fixed !important;
-		background: #000000;
-		left: 0;
-		z-index: 200000;
-		width: 100%;
-	}
-
-	.oper-wrapper {
-		height: 50px;
-		position: fixed !important;
-		box-sizing: border-box;
-		border: 1px solid #F1F1F1;
-		background: #ffffff;
-		width: 100%;
-		left: 0;
-		bottom: 0;
-		z-index: 100009;
-		flex-direction: row;
-	}
-
-	.oper {
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		padding: 10upx 20upx;
-		width: 100%;
-		height: 100%;
-		box-sizing: border-box;
-		align-self: center;
-	}
-
-	.btn-wrapper {
-		display: flex;
-		flex-direction: row;
-		/* #ifndef H5 */
-		flex-grow: 1;
-		/* #endif */
-		/* #ifdef H5 */
-		height: 50px;
-		/* #endif */
-		justify-content: space-between;
-	}
-
-	.btn-wrapper view {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		font-size: 16px;
-		color: #333;
-		border: 1px solid #f1f1f1;
-		border-radius: 6%;
-	}
-
-	.hover {
-		background: #f1f1f1;
-		border-radius: 6%;
-	}
-
-	.clr-wrapper {
-		display: flex;
-		flex-direction: row;
-		flex-grow: 1;
-	}
-
-	.clr-wrapper view {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		font-size: 16px;
-		color: #333;
-		border: 1px solid #f1f1f1;
-		border-radius: 6%;
-	}
-
-	.my-slider {
-		flex-grow: 1;
-	}
-</style>

+ 0 - 114
components/xy-popup/index.vue

@@ -1,114 +0,0 @@
-<template>
-	<u-popup :show="show" @close="close" :safeAreaInsetBottom="safeAreaInsetBottom&&mode=='bottom'" @open="open" :mode="mode">
-		<view class="pop-content">
-			<slot name="title">
-				<view class="popup-title" v-if="title">
-					{{title}}
-				</view>
-			</slot>
-			<slot />
-			<slot name="botton">
-				<view class="popup-btn" v-if="showBtn">
-					<xbutton width="200rpx" size="large" bgColor="#fff" color="#2C6FF3" borderColor="#2C6FF3" @click="close">取消</xbutton>
-					<xbutton delay="1500" width="200rpx" size="large" @click="submit">确定</xbutton>
-				</view>
-			</slot>
-		</view>
-	</u-popup>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-			}
-		},
-		props: {
-			mode: {
-				type: String,
-				require: false,
-				default: 'bottom'
-			},
-			show: {
-				type: Boolean,
-				require: true,
-				default: false
-			},
-			showBtn: {
-				type: Boolean,
-				require: true,
-				default: true
-			},
-			title: {
-				type: String,
-				require: true,
-				default: ''
-			},
-			safeAreaInsetBottom:{
-				type: Boolean,
-				require: false,
-				default: true
-			}
-		},
-
-		model: {
-			prop: 'value',
-			event: 'change'
-		},
-
-		watch: {
-			value: {
-				handler(newVal, oldVal) {
-					this.fileList = newVal
-				},
-				immediate: true,
-				deep: true
-			}
-		},
-
-		methods: {
-			close() {
-				this.$emit('close', false)
-			},
-			open() {
-				this.$emit('open', true)
-			},
-			
-			submit(){
-				this.$emit('confirm')
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.pop-content{
-		box-shadow: 0 2rpx 10rpx 0 rgba(0,0,0,0.1);
-	}
-	
-	.popup-title {
-		font-size: 32rpx;
-		font-weight: bold;
-		padding: 24rpx;
-	}
-
-	.popup-btn {
-		display: flex;
-		flex-flow: row nowrap;
-		justify-content: space-around;
-		width: 100%;
-		padding:50rpx 24rpx 24rpx;
-
-		.cu-btn {
-			background-color: #2C6FF3;
-			color: #fff;
-			width: 200rpx;
-		}
-
-		.cu-btn1 {
-			background-color: green;
-		}
-
-	}
-</style>

+ 0 - 30
config.js

@@ -1,30 +0,0 @@
-// 应用全局配置
-export default {
-	baseUrl: process.env.NODE_ENV=='production'?'https://api.mxrvending.com:9050':'https://ai.tanbin.vip', 
-	// baseUrl: 'https://api.mxrvending.com:9050',
-	//mock数据
-	// baseUrl: 'http://119.96.213.127:9010/mock',
-	// 应用信息
-	appInfo: {
-		// 应用名称
-		name: "MXR-app",
-		// 应用版本
-		version: "1.0.0",
-		// 应用logo
-		logo: "/static/logo.png",
-		// 官方网站
-		site_url: "http://www.xyvending.com/",
-		// 政策协议
-		agreements: [
-			{
-				title: "隐私政策",
-				url: "https://ruoyi.vip/protocol.html"
-			},
-			
-			{
-				title: "用户服务协议",
-				url: "https://ruoyi.vip/protocol.html"
-			}
-		]
-	}
-}

+ 1 - 1
index.html

@@ -15,6 +15,6 @@
   </head>
   <body>
     <div id="app"><!--app-html--></div>
-    <script type="module" src="/main.js"></script>
+    <script type="module" src="/src/main.js"></script>
   </body>
 </html>

+ 9 - 0
jsconfig.json

@@ -0,0 +1,9 @@
+{
+  "compilerOptions": {
+    "types": [
+      "@dcloudio/types",
+      "miniprogram-api-typings",
+      "mini-types"
+    ]
+  }
+}

+ 0 - 57
main.js

@@ -1,57 +0,0 @@
-import App from './App'
-import uView from './uni_modules/vk-uview-ui';
-import * as Pinia from 'pinia';
-import plugins from './plugins' // plugins
-
-// #ifndef VUE3
-import Vue from 'vue'
-Vue.config.productionTip = false
-App.mpType = 'app'
-
-try {
-  function isPromise(obj) {
-    return (
-      !!obj &&
-      (typeof obj === "object" || typeof obj === "function") &&
-      typeof obj.then === "function"
-    );
-  }
-
-  // 统一 vue2 API Promise 化返回格式与 vue3 保持一致
-  uni.addInterceptor({
-    returnValue(res) {
-      if (!isPromise(res)) {
-        return res;
-      }
-      return new Promise((resolve, reject) => {
-        res.then((res) => {
-          if (res[0]) {
-            reject(res[0]);
-          } else {
-            resolve(res[1]);
-          }
-        });
-      });
-    },
-  });
-} catch (error) { }
-
-const app = new Vue({
-  ...App
-})
-app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-export function createApp() {
-  const app = createSSRApp(App)
-  app.use(uView)
-  app.use(Pinia.createPinia());
-  app.use(plugins)
-  return {
-    app,
-	Pinia
-  }
-}
-// #endif

+ 11878 - 0
package-lock.json

@@ -0,0 +1,11878 @@
+{
+  "name": "uni-preset-vue",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "uni-preset-vue",
+      "version": "0.0.0",
+      "dependencies": {
+        "@dcloudio/uni-app": "3.0.0-3080320230526001",
+        "@dcloudio/uni-app-plus": "3.0.0-3080320230526001",
+        "@dcloudio/uni-components": "3.0.0-3080320230526001",
+        "@dcloudio/uni-h5": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-alipay": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-baidu": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-jd": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-kuaishou": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-lark": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-qq": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-toutiao": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-weixin": "3.0.0-3080320230526001",
+        "@dcloudio/uni-quickapp-webview": "3.0.0-3080320230526001",
+        "clipboard": "^2.0.11",
+        "dayjs": "^1.11.7",
+        "pinia": "^2.0.36",
+        "uview-plus": "^3.1.30",
+        "vue": "3.3.4",
+        "vue-i18n": "9.2.2"
+      },
+      "devDependencies": {
+        "@dcloudio/types": "3.3.3",
+        "@dcloudio/uni-automator": "3.0.0-3080320230526001",
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-stacktracey": "3.0.0-3080320230526001",
+        "@dcloudio/vite-plugin-uni": "3.0.0-3080320230526001",
+        "sass": "^1.62.1",
+        "sass-loader": "^10.4.1",
+        "vite": "4.1.4"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.21.4",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.21.4.tgz",
+      "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+      "dependencies": {
+        "@babel/highlight": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.3.tgz",
+      "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.1.tgz",
+      "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==",
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.21.4",
+        "@babel/generator": "^7.22.0",
+        "@babel/helper-compilation-targets": "^7.22.1",
+        "@babel/helper-module-transforms": "^7.22.1",
+        "@babel/helpers": "^7.22.0",
+        "@babel/parser": "^7.22.0",
+        "@babel/template": "^7.21.9",
+        "@babel/traverse": "^7.22.1",
+        "@babel/types": "^7.22.0",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.2",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.3.tgz",
+      "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==",
+      "dependencies": {
+        "@babel/types": "^7.22.3",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.3.tgz",
+      "integrity": "sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz",
+      "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==",
+      "dependencies": {
+        "@babel/compat-data": "^7.22.0",
+        "@babel/helper-validator-option": "^7.21.0",
+        "browserslist": "^4.21.3",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz",
+      "integrity": "sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.22.1",
+        "@babel/helper-function-name": "^7.21.0",
+        "@babel/helper-member-expression-to-functions": "^7.22.0",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.22.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.1.tgz",
+      "integrity": "sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "regexpu-core": "^5.3.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
+      "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.17.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0-0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz",
+      "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+      "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+      "dependencies": {
+        "@babel/template": "^7.20.7",
+        "@babel/types": "^7.21.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+      "dependencies": {
+        "@babel/types": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz",
+      "integrity": "sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.21.4",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
+      "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
+      "dependencies": {
+        "@babel/types": "^7.21.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz",
+      "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.1",
+        "@babel/helper-module-imports": "^7.21.4",
+        "@babel/helper-simple-access": "^7.21.5",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/helper-validator-identifier": "^7.19.1",
+        "@babel/template": "^7.21.9",
+        "@babel/traverse": "^7.22.1",
+        "@babel/types": "^7.22.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz",
+      "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
+      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-wrap-function": "^7.18.9",
+        "@babel/types": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz",
+      "integrity": "sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.1",
+        "@babel/helper-member-expression-to-functions": "^7.22.0",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/template": "^7.21.9",
+        "@babel/traverse": "^7.22.1",
+        "@babel/types": "^7.22.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+      "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
+      "dependencies": {
+        "@babel/types": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+      "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.20.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+      "dependencies": {
+        "@babel/types": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
+      "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.19.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+      "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
+      "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-function-name": "^7.19.0",
+        "@babel/template": "^7.18.10",
+        "@babel/traverse": "^7.20.5",
+        "@babel/types": "^7.20.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.3.tgz",
+      "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==",
+      "dependencies": {
+        "@babel/template": "^7.21.9",
+        "@babel/traverse": "^7.22.1",
+        "@babel/types": "^7.22.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz",
+      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.3.tgz",
+      "integrity": "sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
+      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.3.tgz",
+      "integrity": "sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+        "@babel/plugin-transform-optional-chaining": "^7.22.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz",
+      "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-create-class-features-plugin": "^7.21.0",
+        "@babel/helper-plugin-utils": "^7.20.2",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-assertions": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
+      "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.19.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-attributes": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.3.tgz",
+      "integrity": "sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.21.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz",
+      "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.20.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.21.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz",
+      "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.20.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz",
+      "integrity": "sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-generator-functions": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.3.tgz",
+      "integrity": "sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-remap-async-to-generator": "^7.18.9",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
+      "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.20.2",
+        "@babel/helper-remap-async-to-generator": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz",
+      "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.20.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-properties": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.3.tgz",
+      "integrity": "sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-static-block": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.3.tgz",
+      "integrity": "sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz",
+      "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-compilation-targets": "^7.20.7",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.21.0",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.20.2",
+        "@babel/helper-replace-supers": "^7.20.7",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz",
+      "integrity": "sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/template": "^7.20.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz",
+      "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.20.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
+      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dynamic-import": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.1.tgz",
+      "integrity": "sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-export-namespace-from": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.3.tgz",
+      "integrity": "sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz",
+      "integrity": "sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
+      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.18.9",
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/helper-plugin-utils": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-json-strings": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.3.tgz",
+      "integrity": "sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
+      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.3.tgz",
+      "integrity": "sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.20.11",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
+      "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.20.11",
+        "@babel/helper-plugin-utils": "^7.20.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz",
+      "integrity": "sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.21.5",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-simple-access": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.3.tgz",
+      "integrity": "sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-module-transforms": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-validator-identifier": "^7.19.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.3.tgz",
+      "integrity": "sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.3.tgz",
+      "integrity": "sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.3.tgz",
+      "integrity": "sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-numeric-separator": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.3.tgz",
+      "integrity": "sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-rest-spread": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.3.tgz",
+      "integrity": "sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.3",
+        "@babel/helper-compilation-targets": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.22.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-catch-binding": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.3.tgz",
+      "integrity": "sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-chaining": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.3.tgz",
+      "integrity": "sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.3.tgz",
+      "integrity": "sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-methods": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.3.tgz",
+      "integrity": "sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-property-in-object": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.3.tgz",
+      "integrity": "sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-create-class-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz",
+      "integrity": "sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "regenerator-transform": "^0.15.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
+      "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.20.2",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
+      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
+      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.18.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typescript": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz",
+      "integrity": "sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-create-class-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/plugin-syntax-typescript": "^7.21.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.21.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz",
+      "integrity": "sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-property-regex": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.3.tgz",
+      "integrity": "sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.3.tgz",
+      "integrity": "sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.22.2",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.2.tgz",
+      "integrity": "sha512-UPNK9pgphMULvA2EMKIWHU90C47PKyuvQ8pE1MzH7l9PgFcRabdrHhlePpBuWxYZQ+TziP2nycKoI5C1Yhdm9Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.0",
+        "@babel/helper-compilation-targets": "^7.22.1",
+        "@babel/helper-plugin-utils": "^7.21.5",
+        "@babel/helper-validator-option": "^7.21.0",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.0",
+        "@babel/plugin-proposal-private-property-in-object": "^7.21.0",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-import-assertions": "^7.20.0",
+        "@babel/plugin-syntax-import-attributes": "^7.22.0",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+        "@babel/plugin-transform-arrow-functions": "^7.21.5",
+        "@babel/plugin-transform-async-generator-functions": "^7.22.0",
+        "@babel/plugin-transform-async-to-generator": "^7.20.7",
+        "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+        "@babel/plugin-transform-block-scoping": "^7.21.0",
+        "@babel/plugin-transform-class-properties": "^7.22.0",
+        "@babel/plugin-transform-class-static-block": "^7.22.0",
+        "@babel/plugin-transform-classes": "^7.21.0",
+        "@babel/plugin-transform-computed-properties": "^7.21.5",
+        "@babel/plugin-transform-destructuring": "^7.21.3",
+        "@babel/plugin-transform-dotall-regex": "^7.18.6",
+        "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+        "@babel/plugin-transform-dynamic-import": "^7.22.1",
+        "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+        "@babel/plugin-transform-export-namespace-from": "^7.22.0",
+        "@babel/plugin-transform-for-of": "^7.21.5",
+        "@babel/plugin-transform-function-name": "^7.18.9",
+        "@babel/plugin-transform-json-strings": "^7.22.0",
+        "@babel/plugin-transform-literals": "^7.18.9",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.22.0",
+        "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+        "@babel/plugin-transform-modules-amd": "^7.20.11",
+        "@babel/plugin-transform-modules-commonjs": "^7.21.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.22.0",
+        "@babel/plugin-transform-modules-umd": "^7.18.6",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.0",
+        "@babel/plugin-transform-new-target": "^7.22.0",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.0",
+        "@babel/plugin-transform-numeric-separator": "^7.22.0",
+        "@babel/plugin-transform-object-rest-spread": "^7.22.0",
+        "@babel/plugin-transform-object-super": "^7.18.6",
+        "@babel/plugin-transform-optional-catch-binding": "^7.22.0",
+        "@babel/plugin-transform-optional-chaining": "^7.22.0",
+        "@babel/plugin-transform-parameters": "^7.22.0",
+        "@babel/plugin-transform-private-methods": "^7.22.0",
+        "@babel/plugin-transform-private-property-in-object": "^7.22.0",
+        "@babel/plugin-transform-property-literals": "^7.18.6",
+        "@babel/plugin-transform-regenerator": "^7.21.5",
+        "@babel/plugin-transform-reserved-words": "^7.18.6",
+        "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+        "@babel/plugin-transform-spread": "^7.20.7",
+        "@babel/plugin-transform-sticky-regex": "^7.18.6",
+        "@babel/plugin-transform-template-literals": "^7.18.9",
+        "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+        "@babel/plugin-transform-unicode-escapes": "^7.21.5",
+        "@babel/plugin-transform-unicode-property-regex": "^7.22.0",
+        "@babel/plugin-transform-unicode-regex": "^7.18.6",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.22.0",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.22.0",
+        "babel-plugin-polyfill-corejs2": "^0.4.2",
+        "babel-plugin-polyfill-corejs3": "^0.8.1",
+        "babel-plugin-polyfill-regenerator": "^0.5.0",
+        "core-js-compat": "^3.30.2",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/regjsgen": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+      "dev": true
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.3.tgz",
+      "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.11"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.21.9",
+      "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.21.9.tgz",
+      "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==",
+      "dependencies": {
+        "@babel/code-frame": "^7.21.4",
+        "@babel/parser": "^7.21.9",
+        "@babel/types": "^7.21.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.22.1",
+      "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.1.tgz",
+      "integrity": "sha512-lAWkdCoUFnmwLBhIRLciFntGYsIIoC6vIbN8zrLPqBnJmPu7Z6nzqnKd7FsxQUNAvZfVZ0x6KdNvNp8zWIOHSQ==",
+      "dependencies": {
+        "@babel/code-frame": "^7.21.4",
+        "@babel/generator": "^7.22.0",
+        "@babel/helper-environment-visitor": "^7.22.1",
+        "@babel/helper-function-name": "^7.21.0",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/parser": "^7.22.0",
+        "@babel/types": "^7.22.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.22.3",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.3.tgz",
+      "integrity": "sha512-P3na3xIQHTKY4L0YOG7pM8M8uoUIB910WQaSiiMCZUC2Cy8XFEQONGABFnHWBa2gpGKODTAJcNhi5Zk0sLRrzg==",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.21.5",
+        "@babel/helper-validator-identifier": "^7.19.1",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@dcloudio/types": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-3.3.3.tgz",
+      "integrity": "sha512-xfp88QOJ2fgCzv49HhEGrX0L+3xDsCyyvcoApL7z0J1Lr7tqPUkxqAVBe9zBlKsDX/mO9mNj7NzKIisHfp+fNQ=="
+    },
+    "node_modules/@dcloudio/uni-app": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app/-/uni-app-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-OE2Rmx2xbBcNiWapaLwJA//f6IkZvFrMLAPHkYDdJK3f8O6s4claCWz2eDcIwoytrGwGGR1fK7x5Tj3Pv/PzIA==",
+      "dependencies": {
+        "@dcloudio/uni-cloud": "3.0.0-3080320230526001",
+        "@dcloudio/uni-components": "3.0.0-3080320230526001",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-push": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-stat": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47"
+      },
+      "peerDependencies": {
+        "@dcloudio/types": "^3.3.2"
+      }
+    },
+    "node_modules/@dcloudio/uni-app-plus": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-OkdiytPew4AqRYcv8u0VVuWMU1X9v9Fryq3xoXLXT974aKndYk1XKevZ7CxD8xGanoeoZuHoLCEBEPLeQMvN+w==",
+      "dependencies": {
+        "@dcloudio/uni-app-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-app-vue": "3.0.0-3080320230526001",
+        "debug": "^4.3.3",
+        "fs-extra": "^10.0.0",
+        "licia": "^1.29.0",
+        "postcss-selector-parser": "^6.0.6"
+      }
+    },
+    "node_modules/@dcloudio/uni-app-vite": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-HIuM7EvCm/rkNKaatAKGB3ymjvvz97MyjhiMuRUh2NPepdgw+h3FM5Ycn2+fKqbeRO2gS1exT30fkGCb1/9ccQ==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-nvue-styler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@rollup/pluginutils": "^4.2.0",
+        "@vitejs/plugin-vue": "^4.1.0",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "debug": "^4.3.3",
+        "fs-extra": "^10.0.0",
+        "picocolors": "^1.0.0"
+      }
+    },
+    "node_modules/@dcloudio/uni-app-vue": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-sZEnS+STEtDjzRXHSFHQUVdw4BHn8+WumZFNlpd5uXopgLg0qwPQRVtKhrXmukj5S0jNUQ+YKXV3K47j/XUYrA=="
+    },
+    "node_modules/@dcloudio/uni-automator": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-automator/-/uni-automator-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-dfpbHHZMNR+o6EXYM0XD9UA/Ui9c68v9jylFd200IsB1eC9Rl/ubbPfuVMyyUl5c7ZWylbM3j2iyJPKEN/kHEQ==",
+      "dev": true,
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "address": "^1.1.2",
+        "cross-env": "^7.0.3",
+        "debug": "^4.3.3",
+        "default-gateway": "^6.0.3",
+        "fs-extra": "^10.0.0",
+        "licia": "^1.29.0",
+        "qrcode-reader": "^1.0.4",
+        "qrcode-terminal": "^0.12.0",
+        "ws": "^8.4.2"
+      },
+      "peerDependencies": {
+        "jest": "27.0.4",
+        "jest-environment-node": "27.5.1"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-Pc3IU5kf7YoVjO1bVA4vMSPNgwlg+RrEVgEFuiwT1MiJDnnSFgXgZXYxU7LyvHDuiUQGM3DRDwGhDmh4z+20VA==",
+      "dependencies": {
+        "@ampproject/remapping": "^2.1.2",
+        "@babel/core": "^7.20.5",
+        "@babel/parser": "^7.20.5",
+        "@babel/types": "^7.20.7",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@intlify/core-base": "9.1.9",
+        "@intlify/shared": "9.1.9",
+        "@intlify/vue-devtools": "9.1.9",
+        "@rollup/pluginutils": "^4.2.0",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "autoprefixer": "^10.4.14",
+        "base64url": "^3.0.1",
+        "chokidar": "^3.5.3",
+        "compare-versions": "^3.6.0",
+        "debug": "^4.3.3",
+        "es-module-lexer": "^0.9.3",
+        "esbuild": "^0.17.5",
+        "estree-walker": "^2.0.2",
+        "fast-glob": "^3.2.11",
+        "fs-extra": "^10.0.0",
+        "hash-sum": "^2.0.0",
+        "jsonc-parser": "^3.0.0",
+        "magic-string": "^0.27.0",
+        "merge": "^2.1.1",
+        "mime": "^3.0.0",
+        "module-alias": "^2.2.2",
+        "os-locale-s-fix": "^1.0.8-fix-1",
+        "picocolors": "^1.0.0",
+        "postcss-import": "^14.0.2",
+        "postcss-load-config": "^3.1.1",
+        "postcss-modules": "^4.3.0",
+        "postcss-selector-parser": "^6.0.6",
+        "resolve": "^1.22.1",
+        "tapable": "^2.2.0",
+        "xregexp": "3.1.0"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/android-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+      "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/android-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+      "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/android-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+      "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/darwin-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+      "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/darwin-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+      "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+      "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/freebsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+      "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+      "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+      "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+      "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-loong64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+      "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+      "cpu": [
+        "loong64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-mips64el": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+      "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+      "cpu": [
+        "mips64el"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-ppc64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+      "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+      "cpu": [
+        "ppc64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-riscv64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+      "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-s390x": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+      "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/linux-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+      "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/netbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/openbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/sunos-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+      "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/win32-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+      "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/win32-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+      "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@esbuild/win32-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+      "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/reactivity": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+      "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-core": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+      "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-dom": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+      "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "csstype": "^2.6.8"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/server-renderer": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+      "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.2.47",
+        "@vue/shared": "3.2.47"
+      },
+      "peerDependencies": {
+        "vue": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/csstype": {
+      "version": "2.6.21",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+      "peer": true
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/esbuild": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+      "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.17.19",
+        "@esbuild/android-arm64": "0.17.19",
+        "@esbuild/android-x64": "0.17.19",
+        "@esbuild/darwin-arm64": "0.17.19",
+        "@esbuild/darwin-x64": "0.17.19",
+        "@esbuild/freebsd-arm64": "0.17.19",
+        "@esbuild/freebsd-x64": "0.17.19",
+        "@esbuild/linux-arm": "0.17.19",
+        "@esbuild/linux-arm64": "0.17.19",
+        "@esbuild/linux-ia32": "0.17.19",
+        "@esbuild/linux-loong64": "0.17.19",
+        "@esbuild/linux-mips64el": "0.17.19",
+        "@esbuild/linux-ppc64": "0.17.19",
+        "@esbuild/linux-riscv64": "0.17.19",
+        "@esbuild/linux-s390x": "0.17.19",
+        "@esbuild/linux-x64": "0.17.19",
+        "@esbuild/netbsd-x64": "0.17.19",
+        "@esbuild/openbsd-x64": "0.17.19",
+        "@esbuild/sunos-x64": "0.17.19",
+        "@esbuild/win32-arm64": "0.17.19",
+        "@esbuild/win32-ia32": "0.17.19",
+        "@esbuild/win32-x64": "0.17.19"
+      }
+    },
+    "node_modules/@dcloudio/uni-cli-shared/node_modules/vue": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+      "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/runtime-dom": "3.2.47",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-cloud": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-9ZlDvMngHjVKsKJtKnySseD48dZFj00w2KNeUZxm3VNgP7hbWcF+gslcvKX+thkG1TrQWoh9WzwO+UKmtpJ46g==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47",
+        "fast-glob": "^3.2.11"
+      }
+    },
+    "node_modules/@dcloudio/uni-components": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-components/-/uni-components-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-6d5cL7VVaxvnEMo4nFRZbx5rDEujotbzWtX8g2nDv3CK6+0gQLJsPyZ6t7fiqIBomWMdy+Q+rwuVBt6+G+ep/A=="
+    },
+    "node_modules/@dcloudio/uni-h5": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5/-/uni-h5-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-YqTDR3fWyB9t8cIkmYKOAlDDSrE7mdFsMwo0zUWrqURgojpu2W4ScPQKjaP3g/sDROCi30uwTgiVow2Ve8YYUQ==",
+      "dependencies": {
+        "@dcloudio/uni-h5-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-h5-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "debug": "^4.3.3",
+        "localstorage-polyfill": "^1.0.1",
+        "postcss-selector-parser": "^6.0.6",
+        "safe-area-insets": "^1.4.1",
+        "vue-router": "^4.1.6",
+        "xmlhttprequest": "^1.8.0"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-vY/2FOAEyEK+5AZ9QCQnFIS8t/XCAXj3TueW3LKMyjyBzyXQPhqjLpyjI1ci5PB52FiVxedDt1CiYPrcEzdwtQ==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@rollup/pluginutils": "^4.2.0",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "debug": "^4.3.3",
+        "fs-extra": "^10.0.0",
+        "mime": "^3.0.0",
+        "module-alias": "^2.2.2"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/reactivity": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+      "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-core": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+      "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-dom": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+      "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "csstype": "^2.6.8"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/server-renderer": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+      "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.2.47",
+        "@vue/shared": "3.2.47"
+      },
+      "peerDependencies": {
+        "vue": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/csstype": {
+      "version": "2.6.21",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+      "peer": true
+    },
+    "node_modules/@dcloudio/uni-h5-vite/node_modules/vue": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+      "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/runtime-dom": "3.2.47",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5-vue": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-azYuYzk4nF/I7hTa/Q4LaTETrAAXZLJCQYrnEDp052yxwBWgDMHEpaHf11PqmX7lR24IuhRrh3nKpxRI1wRufQ==",
+      "dependencies": {
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/@vue/reactivity": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+      "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-core": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+      "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-dom": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+      "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "csstype": "^2.6.8"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/@vue/server-renderer": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+      "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.2.47",
+        "@vue/shared": "3.2.47"
+      },
+      "peerDependencies": {
+        "vue": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/csstype": {
+      "version": "2.6.21",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+      "peer": true
+    },
+    "node_modules/@dcloudio/uni-h5/node_modules/vue": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+      "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/runtime-dom": "3.2.47",
+        "@vue/server-renderer": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-i18n": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-IDvgU39Q6XB0QMKJDvfOckwz6Giq2dwAc8NI0SjZ7K7MBNCfmXCw9a4nC+Z1yI9FFTJ1P77Udlnftd0tVzntDg=="
+    },
+    "node_modules/@dcloudio/uni-mp-alipay": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-xPjpY5RIOF8U4r9hvBOPF1tkMV4iokX2Dd/0klwupHNhq+zKAf9cC5uAYFfgNQsxeXWnKkdyCnJwUkkpdeTl8Q==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-baidu": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-Zpqw4EG+dQIjmSNRg7LPmVTu8c5PErBp/nhZzrdXU7C/mKU/Txjj1xLjAKpFaoyDQIrO78yn5GbPnJA6rVOldg==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-weixin": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "jimp": "^0.10.1",
+        "licia": "^1.29.0",
+        "qrcode-reader": "^1.0.4",
+        "qrcode-terminal": "^0.12.0",
+        "ws": "^8.4.2"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-compiler": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-gIDmL9UCFUU2pVTY0lqszZHuV52OqZS4NzGMGqgR2ZuFNdCpjJAG+1FGM8Od7yEeBubUZ6zdv/v7UAF23H6N6A==",
+      "dependencies": {
+        "@babel/generator": "^7.20.5",
+        "@babel/parser": "^7.20.5",
+        "@babel/types": "^7.20.7",
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "estree-walker": "^2.0.2"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-jd": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-c10UyG+OdQfumpGOcOjUpfj2GuaYaBhCeIJkpNS443cRRRxa1UK5kc7t00XTLVGRitLCewFEmj8D7dUcP3/9Pg==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-kuaishou": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-RaN14Z4/woyjR21KMNAARIN8BzRouoL3lSRV6YNri0EOYwg44KVy/P4/SndfrGsQCPIppe8VtsRCsBROYg9tLg==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-weixin": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-lark": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-5V6IBHSfQjPE8Fe9uC11JE7HBGcerDst3Y4RMgcC4l+ykSlL0qoJLYLZbLC+cFfza4dol/Yr6qZXpOBSOMIJBQ==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-toutiao": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-qq": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-ExA1ysANZCLLRKOSuoRmDu+S64fDDZm+Nh/deoGXcho5L7BeTBUZmAYerQJZbsbnXY7guPGMDOK9m9MQq0tJzw==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47",
+        "fs-extra": "^10.0.0"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-toutiao": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-8/js+0QttjSyrvcmMSlFOBV5KX9kyI03mDFn1nmhJ1EpXR/HhT/DsP3IsGzSX66VO1779xkpiu/gjSbIRdk7dg==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-vite": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-IyleP5DHd6j3YxJFVmyNp0eRqTMjuBLhr4Toq3B44QbqC2hndrHvsJlKkARZTSWa0GwEKdn47BczQw1JuOoXaw==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-i18n": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-compiler": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "debug": "^4.3.3"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-vue": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-7k8VY2fUJBNWBWXT43SNdZrFXrCwAqC/FB6Zyxt/u36nlrG+tAwwSjir8fF3TAFn9Rd68rw0f7Tkgn6zi8hdCA==",
+      "dependencies": {
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-mp-weixin": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-r7kCBRCetZ1Q2TCM4S+MIDtDaqKWDTZegE+cP3SaqjJnxzvrIQShhVvzMdW1Bk5EBcWkbmctf+GAzbZB7xuyTA==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47",
+        "jimp": "^0.10.1",
+        "licia": "^1.29.0",
+        "qrcode-reader": "^1.0.4",
+        "qrcode-terminal": "^0.12.0",
+        "ws": "^8.4.2"
+      }
+    },
+    "node_modules/@dcloudio/uni-nvue-styler": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-gWmJKQxEf9WETWvaCc0T+xdFOpcaabxPYlwftah8dC8HuyWG+3K5PHzXzyli8xCg8D3rAhSs1AcgtATGnvle3Q==",
+      "dependencies": {
+        "@vue/shared": "3.2.47",
+        "parse-css-font": "^4.0.0",
+        "postcss": "^8.4.21"
+      }
+    },
+    "node_modules/@dcloudio/uni-push": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-push/-/uni-push-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-GNvb6Z2mGobhWcoa6JofRYhRsrfxh6YxEk4K7FXtKQtdw4sse60Zkf18LcuuSJ7fsvPzpx5oDuD4nbN3eILN4g==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001"
+      }
+    },
+    "node_modules/@dcloudio/uni-quickapp-webview": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-/3cZDjRWYQAxZlSedTMn9IENraFTDF7efVtsVG213bIur+JfxPFMQessoiwJ7sN33q/YX3rPX+1UmSRWidktcA==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vite": "3.0.0-3080320230526001",
+        "@dcloudio/uni-mp-vue": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-shared": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-shared/-/uni-shared-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-IyfMdEmjGEq5jimunAJBqnN5BssCJg261DIGLn8NV5QTrz4fEZj6vR6Q5Yf2Xf2/39SqISkNLpMK2aEXS+btBw==",
+      "dependencies": {
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@dcloudio/uni-stacktracey": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-eF2QQH1mj9UnnPZW8tCT9NTVVtZpacYu5rqIFdPpBhM2K5DXBHaO7ZDsmwWVWTgQ18AAyYocg86Q++LqHfMnWQ==",
+      "dev": true
+    },
+    "node_modules/@dcloudio/uni-stat": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stat/-/uni-stat-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-2R3zDwTWJVlZ3YnHKlbj/HgQucB2PEOnyZzfg8bLj+XGoyevhHX2DBjb/twPVlwgCgkKzOGWw//EG+ezDPUKQw==",
+      "dependencies": {
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "debug": "^4.3.3"
+      }
+    },
+    "node_modules/@dcloudio/vite-plugin-uni": {
+      "version": "3.0.0-3080320230526001",
+      "resolved": "https://registry.npmmirror.com/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3080320230526001.tgz",
+      "integrity": "sha512-s32zkmyiT3Hi2WG1rFFpABM9AoOKE9ig0WBoQoqojtq8sts7sW+UmuqqaQ1L2piYCLfnyRSUJCiP8Oqs81pRaw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.20.5",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-transform-typescript": "^7.20.2",
+        "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+        "@dcloudio/uni-shared": "3.0.0-3080320230526001",
+        "@rollup/pluginutils": "^4.2.0",
+        "@vitejs/plugin-legacy": "^4.0.2",
+        "@vitejs/plugin-vue": "^4.1.0",
+        "@vitejs/plugin-vue-jsx": "^3.0.1",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-sfc": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "cac": "6.7.9",
+        "debug": "^4.3.3",
+        "estree-walker": "^2.0.2",
+        "express": "^4.17.1",
+        "fast-glob": "^3.2.11",
+        "fs-extra": "^10.0.0",
+        "hash-sum": "^2.0.0",
+        "jsonc-parser": "^3.0.0",
+        "magic-string": "^0.27.0",
+        "picocolors": "^1.0.0",
+        "terser": "^5.4.0"
+      },
+      "bin": {
+        "uni": "bin/uni.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
+      "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
+      "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
+      "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
+      "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
+      "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
+      "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
+      "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
+      "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
+      "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
+      "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+      "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+      "cpu": [
+        "loong64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
+      "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+      "cpu": [
+        "mips64el"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
+      "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+      "cpu": [
+        "ppc64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
+      "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
+      "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+      "cpu": [
+        "s390x"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+      "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
+      "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
+      "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
+      "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
+      "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
+      "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
+      "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@intlify/core-base": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.1.9.tgz",
+      "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+      "dependencies": {
+        "@intlify/devtools-if": "9.1.9",
+        "@intlify/message-compiler": "9.1.9",
+        "@intlify/message-resolver": "9.1.9",
+        "@intlify/runtime": "9.1.9",
+        "@intlify/shared": "9.1.9",
+        "@intlify/vue-devtools": "9.1.9"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/devtools-if": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+      "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+      "dependencies": {
+        "@intlify/shared": "9.1.9"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/message-compiler": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+      "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+      "dependencies": {
+        "@intlify/message-resolver": "9.1.9",
+        "@intlify/shared": "9.1.9",
+        "source-map": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/message-resolver": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+      "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/runtime": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/runtime/-/runtime-9.1.9.tgz",
+      "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+      "dependencies": {
+        "@intlify/message-compiler": "9.1.9",
+        "@intlify/message-resolver": "9.1.9",
+        "@intlify/shared": "9.1.9"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/shared": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.1.9.tgz",
+      "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@intlify/vue-devtools": {
+      "version": "9.1.9",
+      "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+      "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+      "dependencies": {
+        "@intlify/message-resolver": "9.1.9",
+        "@intlify/runtime": "9.1.9",
+        "@intlify/shared": "9.1.9"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@istanbuljs/schema": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz",
+      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/console": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/console/-/console-27.5.1.tgz",
+      "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/console/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/console/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@jest/console/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@jest/console/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jest/console/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/@jest/console/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/core": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/core/-/core-27.5.1.tgz",
+      "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/console": "^27.5.1",
+        "@jest/reporters": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "emittery": "^0.8.1",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-changed-files": "^27.5.1",
+        "jest-config": "^27.5.1",
+        "jest-haste-map": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-regex-util": "^27.5.1",
+        "jest-resolve": "^27.5.1",
+        "jest-resolve-dependencies": "^27.5.1",
+        "jest-runner": "^27.5.1",
+        "jest-runtime": "^27.5.1",
+        "jest-snapshot": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-validate": "^27.5.1",
+        "jest-watcher": "^27.5.1",
+        "micromatch": "^4.0.4",
+        "rimraf": "^3.0.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/core/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/core/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@jest/core/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@jest/core/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jest/core/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/@jest/core/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/environment": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/environment/-/environment-27.5.1.tgz",
+      "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/fake-timers": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "jest-mock": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/fake-timers": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+      "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "@sinonjs/fake-timers": "^8.0.1",
+        "@types/node": "*",
+        "jest-message-util": "^27.5.1",
+        "jest-mock": "^27.5.1",
+        "jest-util": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/globals": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/globals/-/globals-27.5.1.tgz",
+      "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "expect": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/reporters": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/reporters/-/reporters-27.5.1.tgz",
+      "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.2.9",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^5.1.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.1.3",
+        "jest-haste-map": "^27.5.1",
+        "jest-resolve": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-worker": "^27.5.1",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.0",
+        "string-length": "^4.0.1",
+        "terminal-link": "^2.0.0",
+        "v8-to-istanbul": "^8.1.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jest/reporters/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/@jest/reporters/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/source-map": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/source-map/-/source-map-27.5.1.tgz",
+      "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.9",
+        "source-map": "^0.6.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/test-result": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/test-result/-/test-result-27.5.1.tgz",
+      "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/console": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/test-sequencer": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+      "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/test-result": "^27.5.1",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^27.5.1",
+        "jest-runtime": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/transform": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/transform/-/transform-27.5.1.tgz",
+      "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/core": "^7.1.0",
+        "@jest/types": "^27.5.1",
+        "babel-plugin-istanbul": "^6.1.1",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^1.4.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^27.5.1",
+        "jest-regex-util": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "micromatch": "^4.0.4",
+        "pirates": "^4.0.4",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.1",
+        "write-file-atomic": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jest/transform/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/@jest/transform/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/types": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/@jest/types/-/types-27.5.1.tgz",
+      "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^16.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/@jest/types/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/types/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@jest/types/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@jest/types/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jest/types/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/@jest/types/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jimp/bmp": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/bmp/-/bmp-0.10.3.tgz",
+      "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "bmp-js": "^0.1.0",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/core": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/core/-/core-0.10.3.tgz",
+      "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "any-base": "^1.1.0",
+        "buffer": "^5.2.0",
+        "core-js": "^3.4.1",
+        "exif-parser": "^0.1.12",
+        "file-type": "^9.0.0",
+        "load-bmfont": "^1.3.1",
+        "mkdirp": "^0.5.1",
+        "phin": "^2.9.1",
+        "pixelmatch": "^4.0.2",
+        "tinycolor2": "^1.4.1"
+      }
+    },
+    "node_modules/@jimp/custom": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/custom/-/custom-0.10.3.tgz",
+      "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/core": "^0.10.3",
+        "core-js": "^3.4.1"
+      }
+    },
+    "node_modules/@jimp/gif": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/gif/-/gif-0.10.3.tgz",
+      "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1",
+        "omggif": "^1.0.9"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/jpeg": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/jpeg/-/jpeg-0.10.3.tgz",
+      "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1",
+        "jpeg-js": "^0.3.4"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-blit": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz",
+      "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-blur": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz",
+      "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-circle": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz",
+      "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-color": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-color/-/plugin-color-0.10.3.tgz",
+      "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1",
+        "tinycolor2": "^1.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-contain": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz",
+      "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-blit": ">=0.3.5",
+        "@jimp/plugin-resize": ">=0.3.5",
+        "@jimp/plugin-scale": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-cover": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz",
+      "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-crop": ">=0.3.5",
+        "@jimp/plugin-resize": ">=0.3.5",
+        "@jimp/plugin-scale": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-crop": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz",
+      "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-displace": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz",
+      "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-dither": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz",
+      "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-fisheye": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz",
+      "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-flip": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz",
+      "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-rotate": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-gaussian": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz",
+      "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-invert": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz",
+      "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-mask": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz",
+      "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-normalize": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz",
+      "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-print": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-print/-/plugin-print-0.10.3.tgz",
+      "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1",
+        "load-bmfont": "^1.4.0"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-blit": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-resize": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz",
+      "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-rotate": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz",
+      "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-blit": ">=0.3.5",
+        "@jimp/plugin-crop": ">=0.3.5",
+        "@jimp/plugin-resize": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-scale": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz",
+      "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-resize": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-shadow": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz",
+      "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-blur": ">=0.3.5",
+        "@jimp/plugin-resize": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/plugin-threshold": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz",
+      "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5",
+        "@jimp/plugin-color": ">=0.8.0",
+        "@jimp/plugin-resize": ">=0.8.0"
+      }
+    },
+    "node_modules/@jimp/plugins": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/plugins/-/plugins-0.10.3.tgz",
+      "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/plugin-blit": "^0.10.3",
+        "@jimp/plugin-blur": "^0.10.3",
+        "@jimp/plugin-circle": "^0.10.3",
+        "@jimp/plugin-color": "^0.10.3",
+        "@jimp/plugin-contain": "^0.10.3",
+        "@jimp/plugin-cover": "^0.10.3",
+        "@jimp/plugin-crop": "^0.10.3",
+        "@jimp/plugin-displace": "^0.10.3",
+        "@jimp/plugin-dither": "^0.10.3",
+        "@jimp/plugin-fisheye": "^0.10.3",
+        "@jimp/plugin-flip": "^0.10.3",
+        "@jimp/plugin-gaussian": "^0.10.3",
+        "@jimp/plugin-invert": "^0.10.3",
+        "@jimp/plugin-mask": "^0.10.3",
+        "@jimp/plugin-normalize": "^0.10.3",
+        "@jimp/plugin-print": "^0.10.3",
+        "@jimp/plugin-resize": "^0.10.3",
+        "@jimp/plugin-rotate": "^0.10.3",
+        "@jimp/plugin-scale": "^0.10.3",
+        "@jimp/plugin-shadow": "^0.10.3",
+        "@jimp/plugin-threshold": "^0.10.3",
+        "core-js": "^3.4.1",
+        "timm": "^1.6.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/png": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/png/-/png-0.10.3.tgz",
+      "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/utils": "^0.10.3",
+        "core-js": "^3.4.1",
+        "pngjs": "^3.3.3"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/tiff": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/tiff/-/tiff-0.10.3.tgz",
+      "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "core-js": "^3.4.1",
+        "utif": "^2.0.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/types": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/types/-/types-0.10.3.tgz",
+      "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/bmp": "^0.10.3",
+        "@jimp/gif": "^0.10.3",
+        "@jimp/jpeg": "^0.10.3",
+        "@jimp/png": "^0.10.3",
+        "@jimp/tiff": "^0.10.3",
+        "core-js": "^3.4.1",
+        "timm": "^1.6.1"
+      },
+      "peerDependencies": {
+        "@jimp/custom": ">=0.3.5"
+      }
+    },
+    "node_modules/@jimp/utils": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/@jimp/utils/-/utils-0.10.3.tgz",
+      "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "core-js": "^3.4.1",
+        "regenerator-runtime": "^0.13.3"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+      "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+      "devOptional": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "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=="
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.18",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+      "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
+      }
+    },
+    "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+      "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+      "dependencies": {
+        "estree-walker": "^2.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
+    "node_modules/@sinonjs/commons": {
+      "version": "1.8.6",
+      "resolved": "https://registry.npmmirror.com/@sinonjs/commons/-/commons-1.8.6.tgz",
+      "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "type-detect": "4.0.8"
+      }
+    },
+    "node_modules/@sinonjs/fake-timers": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@sinonjs/commons": "^1.7.0"
+      }
+    },
+    "node_modules/@tootallnate/once": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
+      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.20.1",
+      "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.1.tgz",
+      "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.4",
+      "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.1.tgz",
+      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.0.tgz",
+      "integrity": "sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.20.7"
+      }
+    },
+    "node_modules/@types/eslint": {
+      "version": "8.40.0",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.0.tgz",
+      "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "node_modules/@types/eslint-scope": {
+      "version": "3.7.4",
+      "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+      "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/eslint": "*",
+        "@types/estree": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz",
+      "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/graceful-fs": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+      "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.12",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz",
+      "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "20.2.5",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.2.5.tgz",
+      "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==",
+      "devOptional": true,
+      "peer": true
+    },
+    "node_modules/@types/prettier": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.2.tgz",
+      "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/stack-utils": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/yargs": {
+      "version": "16.0.5",
+      "resolved": "https://registry.npmmirror.com/@types/yargs/-/yargs-16.0.5.tgz",
+      "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "21.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@vitejs/plugin-legacy": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.0.4.tgz",
+      "integrity": "sha512-UwVfkMfUEszbQ2vs3RDfiDxxvYnIjmtIrGxTnxRev5Sh8ZoDpieV2dwvTUB7zXKJpfRsOgimM6MxQ65VDHJeQw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.21.4",
+        "@babel/preset-env": "^7.21.4",
+        "browserslist": "^4.21.5",
+        "core-js": "^3.30.1",
+        "magic-string": "^0.30.0",
+        "regenerator-runtime": "^0.13.11",
+        "systemjs": "^6.14.1"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "terser": "^5.4.0",
+        "vite": "^4.0.0"
+      }
+    },
+    "node_modules/@vitejs/plugin-legacy/node_modules/magic-string": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+      "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+      "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vitejs/plugin-vue-jsx": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz",
+      "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.20.7",
+        "@babel/plugin-transform-typescript": "^7.20.7",
+        "@vue/babel-plugin-jsx": "^1.1.1"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0",
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/@vue/babel-helper-vue-transform-on": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+      "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
+      "dev": true
+    },
+    "node_modules/@vue/babel-plugin-jsx": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+      "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.0.0",
+        "@babel/template": "^7.0.0",
+        "@babel/traverse": "^7.0.0",
+        "@babel/types": "^7.0.0",
+        "@vue/babel-helper-vue-transform-on": "^1.0.2",
+        "camelcase": "^6.0.0",
+        "html-tags": "^3.1.0",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
+      "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.47",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
+      "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+      "dependencies": {
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
+      "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/compiler-ssr": "3.2.47",
+        "@vue/reactivity-transform": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7",
+        "postcss": "^8.1.10",
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
+      "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.47",
+        "@vue/shared": "3.2.47"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+      "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
+      "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.47",
+        "@vue/shared": "3.2.47",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "node_modules/@vue/reactivity-transform/node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "node_modules/@vue/reactivity/node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/server-renderer/node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.2.47",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
+      "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+    },
+    "node_modules/@webassemblyjs/ast": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+      "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+      "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.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+      "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+      "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.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+      "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.11.6",
+        "@webassemblyjs/helper-buffer": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.11.6"
+      }
+    },
+    "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.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+      "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.11.6",
+        "@webassemblyjs/helper-buffer": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/helper-wasm-section": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.11.6",
+        "@webassemblyjs/wasm-opt": "1.11.6",
+        "@webassemblyjs/wasm-parser": "1.11.6",
+        "@webassemblyjs/wast-printer": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+      "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "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/wasm-opt": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+      "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.11.6",
+        "@webassemblyjs/helper-buffer": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.11.6",
+        "@webassemblyjs/wasm-parser": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-parser": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+      "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.11.6",
+        "@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.11.6",
+      "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+      "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.11.6",
+        "@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/abab": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz",
+      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.8.2",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
+      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+      "devOptional": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-globals": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz",
+      "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-walk": "^7.1.1"
+      }
+    },
+    "node_modules/acorn-globals/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-import-assertions": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+      "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+      "dev": true,
+      "peer": true,
+      "peerDependencies": {
+        "acorn": "^8"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/address": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
+      "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "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"
+      }
+    },
+    "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/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/any-base": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/any-base/-/any-base-1.1.0.tgz",
+      "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+    },
+    "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==",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+      "dev": true
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "dependencies": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/babel-jest": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz",
+      "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/babel__core": "^7.1.14",
+        "babel-plugin-istanbul": "^6.1.1",
+        "babel-preset-jest": "^27.5.1",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.8.0"
+      }
+    },
+    "node_modules/babel-jest/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-jest/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/babel-jest/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/babel-jest/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/babel-jest/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/babel-jest/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-istanbul": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+      "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^5.0.4",
+        "test-exclude": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-jest-hoist": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+      "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.0.0",
+        "@types/babel__traverse": "^7.0.6"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
+      "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.17.7",
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "semver": "^6.1.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
+      "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "core-js-compat": "^3.30.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
+      "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-preset-jest": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+      "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "babel-plugin-jest-hoist": "^27.5.1",
+        "babel-preset-current-node-syntax": "^1.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+    },
+    "node_modules/base64url": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/base64url/-/base64url-3.0.1.tgz",
+      "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "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.2.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bmp-js": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz",
+      "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+    },
+    "node_modules/body-parser": {
+      "version": "1.20.1",
+      "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
+      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.1",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browser-process-hrtime": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+      "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/browserslist": {
+      "version": "4.21.7",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.7.tgz",
+      "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001489",
+        "electron-to-chromium": "^1.4.411",
+        "node-releases": "^2.0.12",
+        "update-browserslist-db": "^1.0.11"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/bser": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "node-int64": "^0.4.0"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-equal": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-0.0.1.tgz",
+      "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "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==",
+      "devOptional": true
+    },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cac": {
+      "version": "6.7.9",
+      "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.9.tgz",
+      "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001489",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz",
+      "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ=="
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/char-regex": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz",
+      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "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"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-3.8.0.tgz",
+      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cjs-module-lexer": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+      "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/clipboard": {
+      "version": "2.0.11",
+      "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
+      "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+      "dependencies": {
+        "good-listener": "^1.2.2",
+        "select": "^1.1.2",
+        "tiny-emitter": "^2.0.0"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^7.0.0"
+      }
+    },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/collect-v8-coverage": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "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==",
+      "devOptional": true
+    },
+    "node_modules/compare-versions": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz",
+      "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+    },
+    "node_modules/cookie": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
+      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+      "dev": true
+    },
+    "node_modules/core-js": {
+      "version": "3.30.2",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.30.2.tgz",
+      "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==",
+      "hasInstallScript": true
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.30.2",
+      "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.30.2.tgz",
+      "integrity": "sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.21.5"
+      }
+    },
+    "node_modules/cross-env": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz",
+      "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.1"
+      },
+      "bin": {
+        "cross-env": "src/bin/cross-env.js",
+        "cross-env-shell": "src/bin/cross-env-shell.js"
+      },
+      "engines": {
+        "node": ">=10.14",
+        "npm": ">=6",
+        "yarn": ">=1"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/css-font-size-keywords": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+      "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+    },
+    "node_modules/css-font-stretch-keywords": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+      "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+    },
+    "node_modules/css-font-style-keywords": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+      "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+    },
+    "node_modules/css-font-weight-keywords": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+      "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+    },
+    "node_modules/css-list-helpers": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+      "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+    },
+    "node_modules/css-system-font-keywords": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+      "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssom": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz",
+      "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/cssstyle": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz",
+      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "cssom": "~0.3.6"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cssstyle/node_modules/cssom": {
+      "version": "0.3.8",
+      "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz",
+      "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/data-urls": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-2.0.0.tgz",
+      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "abab": "^2.0.3",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.7",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
+      "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decimal.js": {
+      "version": "10.4.3",
+      "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
+      "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/dedent": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz",
+      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
+      "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/delegate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
+      "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/diff-sequences": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-27.5.1.tgz",
+      "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/dom-walk": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
+      "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+    },
+    "node_modules/domexception": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/domexception/-/domexception-2.0.1.tgz",
+      "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "webidl-conversions": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/domexception/node_modules/webidl-conversions": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+      "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+      "dev": true
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.411",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz",
+      "integrity": "sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg=="
+    },
+    "node_modules/emittery": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/emittery/-/emittery-0.8.1.tgz",
+      "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "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/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz",
+      "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-module-lexer": {
+      "version": "0.9.3",
+      "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+    },
+    "node_modules/esbuild": {
+      "version": "0.16.17",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
+      "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.16.17",
+        "@esbuild/android-arm64": "0.16.17",
+        "@esbuild/android-x64": "0.16.17",
+        "@esbuild/darwin-arm64": "0.16.17",
+        "@esbuild/darwin-x64": "0.16.17",
+        "@esbuild/freebsd-arm64": "0.16.17",
+        "@esbuild/freebsd-x64": "0.16.17",
+        "@esbuild/linux-arm": "0.16.17",
+        "@esbuild/linux-arm64": "0.16.17",
+        "@esbuild/linux-ia32": "0.16.17",
+        "@esbuild/linux-loong64": "0.16.17",
+        "@esbuild/linux-mips64el": "0.16.17",
+        "@esbuild/linux-ppc64": "0.16.17",
+        "@esbuild/linux-riscv64": "0.16.17",
+        "@esbuild/linux-s390x": "0.16.17",
+        "@esbuild/linux-x64": "0.16.17",
+        "@esbuild/netbsd-x64": "0.16.17",
+        "@esbuild/openbsd-x64": "0.16.17",
+        "@esbuild/sunos-x64": "0.16.17",
+        "@esbuild/win32-arm64": "0.16.17",
+        "@esbuild/win32-ia32": "0.16.17",
+        "@esbuild/win32-x64": "0.16.17"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+      "dev": true
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/escodegen": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.0.0.tgz",
+      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
+    "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/eslint-scope/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/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "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/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/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "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/execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/exif-parser": {
+      "version": "0.1.12",
+      "resolved": "https://registry.npmmirror.com/exif-parser/-/exif-parser-0.1.12.tgz",
+      "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+    },
+    "node_modules/exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/expect": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/expect/-/expect-27.5.1.tgz",
+      "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "jest-get-type": "^27.5.1",
+        "jest-matcher-utils": "^27.5.1",
+        "jest-message-util": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.18.2",
+      "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz",
+      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.1",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.5.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.2.0",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.11.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "dev": true
+    },
+    "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-glob": {
+      "version": "3.2.12",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz",
+      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "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/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/fastq": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fb-watchman": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz",
+      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "bser": "2.1.1"
+      }
+    },
+    "node_modules/file-type": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz",
+      "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "dev": true
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
+      "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "node_modules/generic-names": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/generic-names/-/generic-names-4.0.0.tgz",
+      "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+      "dependencies": {
+        "loader-utils": "^3.2.0"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+      "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3"
+      }
+    },
+    "node_modules/get-package-type": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/get-package-type/-/get-package-type-0.1.0.tgz",
+      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "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==",
+      "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/global": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz",
+      "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+      "dependencies": {
+        "min-document": "^2.19.0",
+        "process": "^0.11.10"
+      }
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/good-listener": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
+      "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+      "dependencies": {
+        "delegate": "^3.1.2"
+      }
+    },
+    "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=="
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/hash-sum": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+      "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+    },
+    "node_modules/html-encoding-sniffer": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+      "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "whatwg-encoding": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/html-escaper": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
+      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/html-tags": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+      "dev": true,
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.17.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/icss-replace-symbols": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+      "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+    },
+    "node_modules/icss-utils": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz",
+      "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+    },
+    "node_modules/immutable": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.0.tgz",
+      "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+      "devOptional": true
+    },
+    "node_modules/import-local": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz",
+      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/invert-kv": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/invert-kv/-/invert-kv-3.0.1.tgz",
+      "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "dev": true,
+      "peer": 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==",
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.12.1",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz",
+      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+      "dependencies": {
+        "has": "^1.0.3"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-function": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
+      "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+    },
+    "node_modules/is-generator-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "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==",
+      "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==",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-potential-custom-element-name": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/istanbul-lib-coverage": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+      "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-instrument": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+      "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/core": "^7.12.3",
+        "@babel/parser": "^7.14.7",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-coverage": "^3.2.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-report/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/istanbul-lib-report/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-reports": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest": {
+      "version": "27.0.4",
+      "resolved": "https://registry.npmmirror.com/jest/-/jest-27.0.4.tgz",
+      "integrity": "sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/core": "^27.0.4",
+        "import-local": "^3.0.2",
+        "jest-cli": "^27.0.4"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-changed-files": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+      "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "execa": "^5.0.0",
+        "throat": "^6.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-circus": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-circus/-/jest-circus-27.5.1.tgz",
+      "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^0.7.0",
+        "expect": "^27.5.1",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^27.5.1",
+        "jest-matcher-utils": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-runtime": "^27.5.1",
+        "jest-snapshot": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "pretty-format": "^27.5.1",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3",
+        "throat": "^6.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-circus/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-circus/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-circus/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-circus/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-circus/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/jest-circus/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-cli": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-cli/-/jest-cli-27.5.1.tgz",
+      "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/core": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "import-local": "^3.0.2",
+        "jest-config": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-validate": "^27.5.1",
+        "prompts": "^2.0.1",
+        "yargs": "^16.2.0"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-cli/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-cli/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-cli/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-cli/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-cli/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/jest-cli/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-config": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-config/-/jest-config-27.5.1.tgz",
+      "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/core": "^7.8.0",
+        "@jest/test-sequencer": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "babel-jest": "^27.5.1",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.1",
+        "graceful-fs": "^4.2.9",
+        "jest-circus": "^27.5.1",
+        "jest-environment-jsdom": "^27.5.1",
+        "jest-environment-node": "^27.5.1",
+        "jest-get-type": "^27.5.1",
+        "jest-jasmine2": "^27.5.1",
+        "jest-regex-util": "^27.5.1",
+        "jest-resolve": "^27.5.1",
+        "jest-runner": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-validate": "^27.5.1",
+        "micromatch": "^4.0.4",
+        "parse-json": "^5.2.0",
+        "pretty-format": "^27.5.1",
+        "slash": "^3.0.0",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "peerDependencies": {
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-config/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-config/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-config/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-config/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-config/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/jest-config/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-diff": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-diff/-/jest-diff-27.5.1.tgz",
+      "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "diff-sequences": "^27.5.1",
+        "jest-get-type": "^27.5.1",
+        "pretty-format": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-diff/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-diff/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-diff/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-diff/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-diff/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/jest-diff/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-docblock": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-27.5.1.tgz",
+      "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "detect-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-each": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-each/-/jest-each-27.5.1.tgz",
+      "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "pretty-format": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-each/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-each/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-each/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-each/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-each/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/jest-each/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-environment-jsdom": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+      "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/fake-timers": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "jest-mock": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jsdom": "^16.6.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-environment-node": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+      "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/fake-timers": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "jest-mock": "^27.5.1",
+        "jest-util": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-get-type": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-27.5.1.tgz",
+      "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-haste-map": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+      "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "@types/graceful-fs": "^4.1.2",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-regex-util": "^27.5.1",
+        "jest-serializer": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-worker": "^27.5.1",
+        "micromatch": "^4.0.4",
+        "walker": "^1.0.7"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.3.2"
+      }
+    },
+    "node_modules/jest-jasmine2": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+      "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/source-map": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "expect": "^27.5.1",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^27.5.1",
+        "jest-matcher-utils": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-runtime": "^27.5.1",
+        "jest-snapshot": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "pretty-format": "^27.5.1",
+        "throat": "^6.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-jasmine2/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/jest-jasmine2/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-leak-detector": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+      "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "jest-get-type": "^27.5.1",
+        "pretty-format": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-matcher-utils": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+      "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "jest-diff": "^27.5.1",
+        "jest-get-type": "^27.5.1",
+        "pretty-format": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-matcher-utils/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/jest-matcher-utils/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-message-util": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-27.5.1.tgz",
+      "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@jest/types": "^27.5.1",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^27.5.1",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-message-util/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/jest-message-util/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-mock": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-mock/-/jest-mock-27.5.1.tgz",
+      "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "@types/node": "*"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-pnp-resolver": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jest-resolve": "*"
+      },
+      "peerDependenciesMeta": {
+        "jest-resolve": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-regex-util": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+      "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-resolve": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-27.5.1.tgz",
+      "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^27.5.1",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^27.5.1",
+        "jest-validate": "^27.5.1",
+        "resolve": "^1.20.0",
+        "resolve.exports": "^1.1.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-resolve-dependencies": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+      "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "jest-regex-util": "^27.5.1",
+        "jest-snapshot": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-resolve/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/jest-resolve/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runner": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-runner/-/jest-runner-27.5.1.tgz",
+      "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/console": "^27.5.1",
+        "@jest/environment": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.8.1",
+        "graceful-fs": "^4.2.9",
+        "jest-docblock": "^27.5.1",
+        "jest-environment-jsdom": "^27.5.1",
+        "jest-environment-node": "^27.5.1",
+        "jest-haste-map": "^27.5.1",
+        "jest-leak-detector": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-resolve": "^27.5.1",
+        "jest-runtime": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "jest-worker": "^27.5.1",
+        "source-map-support": "^0.5.6",
+        "throat": "^6.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-runner/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runner/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-runner/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-runner/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-runner/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/jest-runner/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runtime": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-27.5.1.tgz",
+      "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/environment": "^27.5.1",
+        "@jest/fake-timers": "^27.5.1",
+        "@jest/globals": "^27.5.1",
+        "@jest/source-map": "^27.5.1",
+        "@jest/test-result": "^27.5.1",
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^1.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "execa": "^5.0.0",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-mock": "^27.5.1",
+        "jest-regex-util": "^27.5.1",
+        "jest-resolve": "^27.5.1",
+        "jest-snapshot": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-runtime/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/jest-runtime/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-serializer": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-27.5.1.tgz",
+      "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*",
+        "graceful-fs": "^4.2.9"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-snapshot": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+      "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/core": "^7.7.2",
+        "@babel/generator": "^7.7.2",
+        "@babel/plugin-syntax-typescript": "^7.7.2",
+        "@babel/traverse": "^7.7.2",
+        "@babel/types": "^7.0.0",
+        "@jest/transform": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/babel__traverse": "^7.0.4",
+        "@types/prettier": "^2.1.5",
+        "babel-preset-current-node-syntax": "^1.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^27.5.1",
+        "graceful-fs": "^4.2.9",
+        "jest-diff": "^27.5.1",
+        "jest-get-type": "^27.5.1",
+        "jest-haste-map": "^27.5.1",
+        "jest-matcher-utils": "^27.5.1",
+        "jest-message-util": "^27.5.1",
+        "jest-util": "^27.5.1",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^27.5.1",
+        "semver": "^7.3.2"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-snapshot/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/jest-snapshot/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/semver": {
+      "version": "7.5.1",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz",
+      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-util": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-util/-/jest-util-27.5.1.tgz",
+      "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-util/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-util/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-util/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-util/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-util/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/jest-util/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-validate": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-validate/-/jest-validate-27.5.1.tgz",
+      "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/types": "^27.5.1",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^27.5.1",
+        "leven": "^3.1.0",
+        "pretty-format": "^27.5.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-validate/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-validate/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-validate/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-validate/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-validate/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/jest-validate/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-watcher": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-27.5.1.tgz",
+      "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jest/test-result": "^27.5.1",
+        "@jest/types": "^27.5.1",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "jest-util": "^27.5.1",
+        "string-length": "^4.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/jest-watcher/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/jest-watcher/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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/jest-worker/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/jest-worker/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"
+      }
+    },
+    "node_modules/jimp": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmmirror.com/jimp/-/jimp-0.10.3.tgz",
+      "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "@jimp/custom": "^0.10.3",
+        "@jimp/plugins": "^0.10.3",
+        "@jimp/types": "^0.10.3",
+        "core-js": "^3.4.1",
+        "regenerator-runtime": "^0.13.3"
+      }
+    },
+    "node_modules/jpeg-js": {
+      "version": "0.3.7",
+      "resolved": "https://registry.npmmirror.com/jpeg-js/-/jpeg-js-0.3.7.tgz",
+      "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsdom": {
+      "version": "16.7.0",
+      "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-16.7.0.tgz",
+      "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "abab": "^2.0.5",
+        "acorn": "^8.2.4",
+        "acorn-globals": "^6.0.0",
+        "cssom": "^0.4.4",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^2.0.0",
+        "decimal.js": "^10.2.1",
+        "domexception": "^2.0.1",
+        "escodegen": "^2.0.0",
+        "form-data": "^3.0.0",
+        "html-encoding-sniffer": "^2.0.1",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "^5.0.0",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.0",
+        "parse5": "6.0.1",
+        "saxes": "^5.0.1",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.0.0",
+        "w3c-hr-time": "^1.0.2",
+        "w3c-xmlserializer": "^2.0.0",
+        "webidl-conversions": "^6.1.0",
+        "whatwg-encoding": "^1.0.5",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.5.0",
+        "ws": "^7.4.6",
+        "xml-name-validator": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jsdom/node_modules/ws": {
+      "version": "7.5.9",
+      "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
+      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8.3.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": "^5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "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==",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonc-parser": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+      "dev": true,
+      "peer": true,
+      "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/lcid": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/lcid/-/lcid-3.1.1.tgz",
+      "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+      "dependencies": {
+        "invert-kv": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/licia": {
+      "version": "1.38.1",
+      "resolved": "https://registry.npmmirror.com/licia/-/licia-1.38.1.tgz",
+      "integrity": "sha512-2CRiNVqkI48Om+eA4cvYn1+bxxHUYlt3XCR1RtuBK/y0Uu7OiWYSgKKHX2KGIaBxuSZjLSqp7zTNBXJgxuSpzg=="
+    },
+    "node_modules/lilconfig": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
+      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/load-bmfont": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/load-bmfont/-/load-bmfont-1.4.1.tgz",
+      "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==",
+      "dependencies": {
+        "buffer-equal": "0.0.1",
+        "mime": "^1.3.4",
+        "parse-bmfont-ascii": "^1.0.3",
+        "parse-bmfont-binary": "^1.0.5",
+        "parse-bmfont-xml": "^1.1.4",
+        "phin": "^2.9.1",
+        "xhr": "^2.0.1",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/load-bmfont/node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "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": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.2.1.tgz",
+      "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
+      "engines": {
+        "node": ">= 12.13.0"
+      }
+    },
+    "node_modules/localstorage-polyfill": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+      "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/lodash.camelcase": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+      "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+      "dev": true
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.27.0",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+      "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/makeerror": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz",
+      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "tmpl": "1.0.5"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/merge": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/merge/-/merge-2.1.1.tgz",
+      "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+      "dev": true
+    },
+    "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
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz",
+      "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "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,
+      "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,
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/min-document": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
+      "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+      "dependencies": {
+        "dom-walk": "^0.1.0"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/module-alias": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.2.tgz",
+      "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q=="
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "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-int64": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz",
+      "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ=="
+    },
+    "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==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/nwsapi": {
+      "version": "2.2.5",
+      "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.5.tgz",
+      "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/object-inspect": {
+      "version": "1.12.3",
+      "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+      "dev": true
+    },
+    "node_modules/omggif": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmmirror.com/omggif/-/omggif-1.0.10.tgz",
+      "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/os-locale-s-fix": {
+      "version": "1.0.8-fix-1",
+      "resolved": "https://registry.npmmirror.com/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+      "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+      "dependencies": {
+        "lcid": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10",
+        "yarn": "^1.22.4"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+    },
+    "node_modules/parse-bmfont-ascii": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+      "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+    },
+    "node_modules/parse-bmfont-binary": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+      "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
+    },
+    "node_modules/parse-bmfont-xml": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
+      "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
+      "dependencies": {
+        "xml-parse-from-string": "^1.0.0",
+        "xml2js": "^0.4.5"
+      }
+    },
+    "node_modules/parse-css-font": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/parse-css-font/-/parse-css-font-4.0.0.tgz",
+      "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+      "dependencies": {
+        "css-font-size-keywords": "^1.0.0",
+        "css-font-stretch-keywords": "^1.0.1",
+        "css-font-style-keywords": "^1.0.1",
+        "css-font-weight-keywords": "^1.0.0",
+        "css-list-helpers": "^2.0.0",
+        "css-system-font-keywords": "^1.0.0",
+        "unquote": "^1.1.1"
+      }
+    },
+    "node_modules/parse-headers": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
+      "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+      "dev": true
+    },
+    "node_modules/phin": {
+      "version": "2.9.3",
+      "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz",
+      "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinia": {
+      "version": "2.0.36",
+      "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.36.tgz",
+      "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": "*"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.4.0",
+        "typescript": ">=4.4.4",
+        "vue": "^2.6.14 || ^3.2.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pirates": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.5.tgz",
+      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/pixelmatch": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/pixelmatch/-/pixelmatch-4.0.2.tgz",
+      "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+      "dependencies": {
+        "pngjs": "^3.0.0"
+      },
+      "bin": {
+        "pixelmatch": "bin/pixelmatch"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.24",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.24.tgz",
+      "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-import": {
+      "version": "14.1.0",
+      "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.1.0.tgz",
+      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+      "dependencies": {
+        "postcss-value-parser": "^4.0.0",
+        "read-cache": "^1.0.0",
+        "resolve": "^1.1.7"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.0.0"
+      }
+    },
+    "node_modules/postcss-load-config": {
+      "version": "3.1.4",
+      "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+      "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+      "dependencies": {
+        "lilconfig": "^2.0.5",
+        "yaml": "^1.10.2"
+      },
+      "engines": {
+        "node": ">= 10"
+      },
+      "peerDependencies": {
+        "postcss": ">=8.0.9",
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "postcss": {
+          "optional": true
+        },
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/postcss-modules": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmmirror.com/postcss-modules/-/postcss-modules-4.3.1.tgz",
+      "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+      "dependencies": {
+        "generic-names": "^4.0.0",
+        "icss-replace-symbols": "^1.1.0",
+        "lodash.camelcase": "^4.3.0",
+        "postcss-modules-extract-imports": "^3.0.0",
+        "postcss-modules-local-by-default": "^4.0.0",
+        "postcss-modules-scope": "^3.0.0",
+        "postcss-modules-values": "^4.0.0",
+        "string-hash": "^1.1.1"
+      },
+      "peerDependencies": {
+        "postcss": "^8.0.0"
+      }
+    },
+    "node_modules/postcss-modules-extract-imports": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+      "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-local-by-default": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz",
+      "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==",
+      "dependencies": {
+        "icss-utils": "^5.0.0",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-scope": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+      "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+      "dependencies": {
+        "postcss-selector-parser": "^6.0.4"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-values": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+      "dependencies": {
+        "icss-utils": "^5.0.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.0.13",
+      "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/pretty-format": {
+      "version": "27.5.1",
+      "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz",
+      "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/pretty-format/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz",
+      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/prompts": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "dev": true,
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/psl": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
+      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/punycode": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qrcode-reader": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+      "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ=="
+    },
+    "node_modules/qrcode-terminal": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+      "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+      "bin": {
+        "qrcode-terminal": "bin/qrcode-terminal.js"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.11.0",
+      "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+      "dev": true,
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+    },
+    "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/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz",
+      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/react-is": {
+      "version": "17.0.2",
+      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
+      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/read-cache": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
+      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+      "dependencies": {
+        "pify": "^2.3.0"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+      "dev": true
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+      "dev": true,
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+      "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/regjsgen": "^0.8.0",
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.1.0",
+        "regjsparser": "^0.9.1",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsparser": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+      "dev": true,
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/resolve": {
+      "version": "1.22.2",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz",
+      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+      "dependencies": {
+        "is-core-module": "^2.11.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve.exports": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-1.1.1.tgz",
+      "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "3.23.0",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.23.0.tgz",
+      "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==",
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=14.18.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/safe-area-insets": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+      "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+    },
+    "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
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "node_modules/sass": {
+      "version": "1.62.1",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.62.1.tgz",
+      "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==",
+      "devOptional": 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.4.1",
+      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-10.4.1.tgz",
+      "integrity": "sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==",
+      "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"
+      },
+      "peerDependencies": {
+        "fibers": ">= 3.1.0",
+        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.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/sass-loader/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/sass-loader/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/sass-loader/node_modules/semver": {
+      "version": "7.5.1",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz",
+      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/sass-loader/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
+    "node_modules/saxes": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz",
+      "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "xmlchars": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/schema-utils": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.2.tgz",
+      "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==",
+      "dev": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/select": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
+      "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+    },
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "dev": true
+    },
+    "node_modules/send/node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "dev": true
+    },
+    "node_modules/serialize-javascript": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+      "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/serve-static": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+      "dev": true,
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.18.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+      "dev": true
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "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==",
+      "devOptional": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/stack-utils": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/stack-utils/-/stack-utils-2.0.6.tgz",
+      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/stack-utils/node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/string-hash": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz",
+      "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+    },
+    "node_modules/string-length": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz",
+      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz",
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-hyperlinks": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+      "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-hyperlinks/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/supports-hyperlinks/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+      "dev": true
+    },
+    "node_modules/symbol-tree": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
+      "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/systemjs": {
+      "version": "6.14.1",
+      "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.14.1.tgz",
+      "integrity": "sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ==",
+      "dev": true
+    },
+    "node_modules/tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terminal-link": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz",
+      "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-escapes": "^4.2.1",
+        "supports-hyperlinks": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/terser": {
+      "version": "5.17.6",
+      "resolved": "https://registry.npmmirror.com/terser/-/terser-5.17.6.tgz",
+      "integrity": "sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ==",
+      "devOptional": true,
+      "dependencies": {
+        "@jridgewell/source-map": "^0.3.2",
+        "acorn": "^8.5.0",
+        "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.9",
+      "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+      "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jest-worker": "^27.4.5",
+        "schema-utils": "^3.1.1",
+        "serialize-javascript": "^6.0.1",
+        "terser": "^5.16.8"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "peerDependencies": {
+        "webpack": "^5.1.0"
+      },
+      "peerDependenciesMeta": {
+        "@swc/core": {
+          "optional": true
+        },
+        "esbuild": {
+          "optional": true
+        },
+        "uglify-js": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/test-exclude": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz",
+      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/throat": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/throat/-/throat-6.0.2.tgz",
+      "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/timm": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmmirror.com/timm/-/timm-1.7.1.tgz",
+      "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+    },
+    "node_modules/tiny-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+    },
+    "node_modules/tinycolor2": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz",
+      "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+    },
+    "node_modules/tmpl": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
+      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "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==",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.2.tgz",
+      "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.2.0",
+        "url-parse": "^1.5.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tough-cookie/node_modules/universalify": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz",
+      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz",
+      "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typedarray-to-buffer": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+      "dev": true,
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unquote": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+      "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+      "dependencies": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      },
+      "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/url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/utif": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/utif/-/utif-2.0.1.tgz",
+      "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+      "dependencies": {
+        "pako": "^1.0.5"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uview-plus": {
+      "version": "3.1.30",
+      "resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.1.30.tgz",
+      "integrity": "sha512-Q/00hopGZH/l6AFMzRdIrrQJtYK56F0PLWSMYUZhdm2nM9ZWRGMLeKQo3dhQ9Qo69YQagEsRFrD4OmMqfCe54Q==",
+      "dependencies": {
+        "clipboard": "^2.0.11",
+        "dayjs": "^1.11.3"
+      },
+      "engines": {
+        "HBuilderX": "^3.1.0"
+      }
+    },
+    "node_modules/v8-to-istanbul": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+      "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^1.6.0",
+        "source-map": "^0.7.3"
+      },
+      "engines": {
+        "node": ">=10.12.0"
+      }
+    },
+    "node_modules/v8-to-istanbul/node_modules/source-map": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vite": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz",
+      "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
+      "dependencies": {
+        "esbuild": "^0.16.14",
+        "postcss": "^8.4.21",
+        "resolve": "^1.22.1",
+        "rollup": "^3.10.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue-demi": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+      "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-i18n": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
+      "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
+      "dependencies": {
+        "@intlify/core-base": "9.2.2",
+        "@intlify/shared": "9.2.2",
+        "@intlify/vue-devtools": "9.2.2",
+        "@vue/devtools-api": "^6.2.1"
+      },
+      "engines": {
+        "node": ">= 14"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/vue-i18n/node_modules/@intlify/core-base": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
+      "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
+      "dependencies": {
+        "@intlify/devtools-if": "9.2.2",
+        "@intlify/message-compiler": "9.2.2",
+        "@intlify/shared": "9.2.2",
+        "@intlify/vue-devtools": "9.2.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/vue-i18n/node_modules/@intlify/devtools-if": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
+      "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
+      "dependencies": {
+        "@intlify/shared": "9.2.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/vue-i18n/node_modules/@intlify/message-compiler": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
+      "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
+      "dependencies": {
+        "@intlify/shared": "9.2.2",
+        "source-map": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/vue-i18n/node_modules/@intlify/shared": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz",
+      "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/vue-i18n/node_modules/@intlify/vue-devtools": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
+      "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
+      "dependencies": {
+        "@intlify/core-base": "9.2.2",
+        "@intlify/shared": "9.2.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.2.tgz",
+      "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/vue/node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/vue/node_modules/magic-string": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+      "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/w3c-hr-time": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+      "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+      "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "browser-process-hrtime": "^1.0.0"
+      }
+    },
+    "node_modules/w3c-xmlserializer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+      "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "xml-name-validator": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/walker": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/walker/-/walker-1.0.8.tgz",
+      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "makeerror": "1.0.12"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
+      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10.4"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "5.84.1",
+      "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.84.1.tgz",
+      "integrity": "sha512-ZP4qaZ7vVn/K8WN/p990SGATmrL1qg4heP/MrVneczYtpDGJWlrgZv55vxaV2ul885Kz+25MP2kSXkPe3LZfmg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/eslint-scope": "^3.7.3",
+        "@types/estree": "^1.0.0",
+        "@webassemblyjs/ast": "^1.11.5",
+        "@webassemblyjs/wasm-edit": "^1.11.5",
+        "@webassemblyjs/wasm-parser": "^1.11.5",
+        "acorn": "^8.7.1",
+        "acorn-import-assertions": "^1.9.0",
+        "browserslist": "^4.14.5",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^5.14.1",
+        "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.9",
+        "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.1.2",
+        "tapable": "^2.1.1",
+        "terser-webpack-plugin": "^5.3.7",
+        "watchpack": "^2.4.0",
+        "webpack-sources": "^3.2.3"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      },
+      "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"
+      }
+    },
+    "node_modules/webpack/node_modules/es-module-lexer": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
+      "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+      "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "iconv-lite": "0.4.24"
+      }
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+      "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/whatwg-url": {
+      "version": "8.7.0",
+      "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz",
+      "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "lodash": "^4.7.0",
+        "tr46": "^2.1.0",
+        "webidl-conversions": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/write-file-atomic": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "is-typedarray": "^1.0.0",
+        "signal-exit": "^3.0.2",
+        "typedarray-to-buffer": "^3.1.5"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.13.0",
+      "resolved": "https://registry.npmmirror.com/ws/-/ws-8.13.0.tgz",
+      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xhr": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmmirror.com/xhr/-/xhr-2.6.0.tgz",
+      "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+      "dependencies": {
+        "global": "~4.4.0",
+        "is-function": "^1.0.1",
+        "parse-headers": "^2.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/xml-name-validator": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+      "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/xml-parse-from-string": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+      "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+    },
+    "node_modules/xml2js": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+      "dependencies": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/xmlchars": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/xmlhttprequest": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+      "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/xregexp": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-3.1.0.tgz",
+      "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+    },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+    },
+    "node_modules/yaml": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=10"
+      }
+    }
+  }
+}

+ 71 - 0
package.json

@@ -0,0 +1,71 @@
+{
+  "name": "uni-preset-vue",
+  "version": "0.0.0",
+  "scripts": {
+    "dev:app": "uni -p app",
+    "dev:app-android": "uni -p app-android",
+    "dev:app-ios": "uni -p app-ios",
+    "dev:custom": "uni -p",
+    "dev:h5": "uni",
+    "dev:h5:ssr": "uni --ssr",
+    "dev:mp-alipay": "uni -p mp-alipay",
+    "dev:mp-baidu": "uni -p mp-baidu",
+    "dev:mp-jd": "uni -p mp-jd",
+    "dev:mp-kuaishou": "uni -p mp-kuaishou",
+    "dev:mp-lark": "uni -p mp-lark",
+    "dev:mp-qq": "uni -p mp-qq",
+    "dev:mp-toutiao": "uni -p mp-toutiao",
+    "dev": "uni -p mp-weixin",
+    "dev:quickapp-webview": "uni -p quickapp-webview",
+    "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+    "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+    "build:app": "uni build -p app",
+    "build:app-android": "uni build -p app-android",
+    "build:app-ios": "uni build -p app-ios",
+    "build:custom": "uni build -p",
+    "build:h5": "uni build",
+    "build:h5:ssr": "uni build --ssr",
+    "build:mp-alipay": "uni build -p mp-alipay",
+    "build:mp-baidu": "uni build -p mp-baidu",
+    "build:mp-jd": "uni build -p mp-jd",
+    "build:mp-kuaishou": "uni build -p mp-kuaishou",
+    "build:mp-lark": "uni build -p mp-lark",
+    "build:mp-qq": "uni build -p mp-qq",
+    "build:mp-toutiao": "uni build -p mp-toutiao",
+    "build": "uni build -p mp-weixin",
+    "build:quickapp-webview": "uni build -p quickapp-webview",
+    "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+    "build:quickapp-webview-union": "uni build -p quickapp-webview-union"
+  },
+  "dependencies": {
+    "@dcloudio/uni-app": "3.0.0-3080320230526001",
+    "@dcloudio/uni-app-plus": "3.0.0-3080320230526001",
+    "@dcloudio/uni-components": "3.0.0-3080320230526001",
+    "@dcloudio/uni-h5": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-alipay": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-baidu": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-jd": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-kuaishou": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-lark": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-qq": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-toutiao": "3.0.0-3080320230526001",
+    "@dcloudio/uni-mp-weixin": "3.0.0-3080320230526001",
+    "@dcloudio/uni-quickapp-webview": "3.0.0-3080320230526001",
+    "clipboard": "^2.0.11",
+    "dayjs": "^1.11.7",
+    "pinia": "^2.0.36",
+    "uview-plus": "^3.1.30",
+    "vue": "3.3.4",
+    "vue-i18n": "9.2.2"
+  },
+  "devDependencies": {
+    "@dcloudio/types": "3.3.3",
+    "@dcloudio/uni-automator": "3.0.0-3080320230526001",
+    "@dcloudio/uni-cli-shared": "3.0.0-3080320230526001",
+    "@dcloudio/uni-stacktracey": "3.0.0-3080320230526001",
+    "@dcloudio/vite-plugin-uni": "3.0.0-3080320230526001",
+    "sass": "^1.62.1",
+    "sass-loader": "^10.4.1",
+    "vite": "4.1.4"
+  }
+}

+ 0 - 226
pages/globalPages/components/account.vue

@@ -1,226 +0,0 @@
-<template>
-	<view class="container">
-		商户运营
-	</view>
-</template>
-
-<script setup>
-	function onshow(){
-		console.log('商户运营')
-	}
-</script>
-
-<style lang="scss" scoped>
-	.container {
-		padding-bottom: 100rpx;
-
-		// 个人信息
-		.user {
-			background: #2C6FF3 url('https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/globalPages/user-bg.png') no-repeat left top;
-			background-size: 100%;
-			padding-bottom: 145rpx;
-			position: relative;
-			width: 100%;
-
-			.user-content {
-				margin-top: 34rpx;
-				width: 100%;
-
-				.head-img {
-					width: 100rpx;
-					height: 100rpx;
-					border-radius: 100rpx;
-					margin-left: 26rpx;
-				}
-
-				.user-name {
-					font-size: 28rpx;
-					color: #fff;
-					margin-left: 33rpx;
-				}
-
-				.share {
-					width: 30rpx;
-					height: 30rpx;
-					position: relative;
-					margin-left: 20rpx;
-
-					.share-image {
-						width: 30rpx;
-						height: 30rpx;
-						position: absolute;
-						left: 0;
-						top: 0;
-
-						>image {
-							width: 30rpx;
-							height: 30rpx;
-						}
-					}
-
-					button {
-						width: 40rpx;
-						height: 40rpx;
-						position: absolute;
-						left: 0;
-						top: 0;
-						opacity: 0;
-					}
-				}
-
-				.login-out {
-					width: 140rpx;
-					line-height: 52rpx;
-					height: 52rpx;
-					text-align: center;
-					font-size: 24rpx;
-					color: #2C6FF3;
-					background-color: #fff;
-					position: absolute;
-					right: 0;
-					top: 185rpx;
-					z-index: 99;
-					border-top-left-radius: 52rpx;
-					border-bottom-left-radius: 52rpx;
-				}
-			}
-		}
-
-
-		// 常用菜单
-		.menu {
-			width: 724rpx;
-			margin-left: 14rpx;
-			background: #FFFFFF;
-			box-shadow: 0px 0px 10rpx 0px rgba(174, 201, 255, 0.2);
-			border-radius: 14rpx;
-			margin-top: 24rpx;
-			position: relative;
-			padding: 20rpx 36rpx 42rpx;
-
-			&.menu-userinfo {
-				padding: 36rpx;
-				margin-top: -102rpx;
-			}
-
-			.menu-title {
-				font-size: 30rpx;
-				font-weight: 800;
-				color: #000000;
-				position: absolute;
-				left: 28rpx;
-				top: 28rpx;
-			}
-
-			.u-content {
-				display: flex;
-				flex-flow: row nowrap;
-				justify-content: space-around;
-				text-align: center;
-
-				.u-item {
-					line-height: 50rpx;
-
-					.u-name {
-						font-weight: bold;
-						font-size: 30rpx;
-					}
-
-					.u-val {
-						font-size: 28rpx;
-						color: #666;
-						position: relative;
-						padding-left: 30rpx;
-						display: inline-block;
-
-						>image {
-							width: 21rpx;
-							height: 21rpx;
-							position: absolute;
-							left: 0;
-							top: 50%;
-							transform: translateY(-50%);
-						}
-					}
-				}
-			}
-
-			.cu-btn {
-				padding: 0 12rpx;
-				font-size: 22rpx;
-				height: 40rpx;
-				line-height: 40rpx;
-				background-color: #2C6FF3;
-				color: #fff;
-
-			}
-
-			.edit {
-				position: absolute;
-				right: 28rpx;
-				top: 28rpx;
-			}
-
-			.s-content {
-				.s-item {
-					line-height: 50rpx;
-
-					>text {
-						color: red;
-					}
-				}
-			}
-
-			.menu-item {
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				width: 25%;
-
-				>.image {
-					width: 74rpx;
-					height: 74rpx;
-				}
-
-				>view {
-					color: #333333;
-					font-size: 26rpx;
-					line-height: 26rpx;
-					margin-top: 16rpx;
-				}
-			}
-		}
-
-		.qrcode-content {
-			padding: 24rpx;
-
-			.qrcode-img {
-				width: 400rpx;
-				height: 400rpx;
-			}
-
-			.save-qrcode {
-				margin-top: 24rpx;
-			}
-		}
-
-		.chang-password {
-			text-align: center;
-			line-height: 60rpx;
-			color: #2C6FF3;
-			text-decoration: underline;
-		}
-
-		.pwd-popup-content {
-			padding: 24rpx;
-
-			>view:nth-child(1) {
-				width: 160rpx;
-			}
-
-			>view:nth-child(2) {
-				width: 100%;
-			}
-		}
-	}
-</style>

+ 0 - 75
pages/globalPages/components/commodity.vue

@@ -1,75 +0,0 @@
-<template>
-	<view class="container">
-		数据中心
-	</view>
-</template>
-
-<script setup>
-	function onshow(){
-		console.log('数据中心')
-	}
-</script>
-
-<style lang="scss" scoped>
-	.btn-wrap {
-		padding: 24rpx;
-		background-color: #fff;
-	}
-
-	.search {
-		padding: 0 24rpx 24rpx;
-		background-color: #fff;
-
-		.search-input {
-			position: relative;
-
-			.scan-icon {
-				position: absolute;
-				top: 50%;
-				transform: translateY(-50%);
-				z-index: 2;
-
-				&.scan-left-show {
-					right: 36rpx;
-				}
-
-				&.scan-left-hidden {
-					right: 100rpx;
-				}
-			}
-		}
-
-		.search-history {
-
-			.history-item {
-				margin-right: 24rpx;
-				padding: 0 12rpx;
-				background-color: #f2f2f2;
-				color: #333;
-				font-size: 24rpx;
-				line-height: 40rpx;
-				border-radius: 40rpx;
-				margin-top: 24rpx;
-			}
-		}
-	}
-
-	.classify-wrap {
-		// padding-bottom: 200rpx;
-	}
-
-	.btn {
-		width: 100%;
-		position: fixed;
-		bottom: 120rpx;
-		left: 0;
-		display: flex;
-		flex-flow: row nowrap;
-		justify-content: space-between;
-		padding: 0 24rpx;
-
-		&.safa-btn {
-			bottom: 180rpx;
-		}
-	}
-</style>

+ 0 - 195
pages/globalPages/components/equipment.vue

@@ -1,195 +0,0 @@
-<template>
-	<view class="container">
-		质检出场
-	</view>
-</template>
-
-<script setup>
-	function onshow(){
-		console.log('质检出场')
-	}
-</script>
-
-<style lang="scss">
-	.container {
-		.nav-style {
-			font-size: 32rpx;
-			font-weight: bold;
-			color: #fff;
-		}
-
-		.search {
-			padding: 24rpx 24rpx;
-			background-color: #fff;
-		}
-
-		.total {
-			display: flex;
-			flex-flow: row nowrap;
-			justify-content: space-around;
-			align-items: center;
-			text-align: center;
-			color: #fff;
-			background-color: #2C6FF3;
-			padding: 40rpx 24rpx ;
-
-			.total-item {
-				.num {
-					font-weight: bold;
-					font-size: 52rpx;
-				}
-
-				.name {
-					font-size: 26rpx;
-				}
-			}
-		}
-
-		.content {
-			padding: 24rpx;
-			padding-bottom:calc(124rpx + env(safe-area-inset-bottom) / 2);
-
-			.xy-card {
-				margin-bottom: 24rpx;
-			}
-
-			.eq-line-title {
-				font-size: 32rpx;
-				padding-bottom: 24rpx;
-				position: relative;
-
-				.arrow-right {
-					position: absolute;
-					right: 0;
-					top: 0;
-				}
-			}
-
-			.eq-item {
-				position: relative;
-
-				&+.eq-item {
-					padding-top: 12rpx;
-				}
-
-				.eq-content {
-
-					.eq-wrap {
-						border-radius: 8rpx;
-						background-color: rgb(245, 248, 251);
-						box-sizing: border-box;
-						padding: 24rpx 12rpx;
-						font-size: 26rpx;
-
-						.eq-name {
-							font-size: 32rpx;
-							font-weight: bold;
-							margin-bottom: 24rpx;
-							position: relative;
-							
-							>.eq-title{
-								width: 420rpx;
-								>text{
-									font-size: 30rpx;
-									color: #666;
-									font-weight: normal;
-								}
-							}
-							
-							.eq-status-box{
-								float: right;
-								position: absolute;
-								right:0;
-								top:0;
-							}
-
-							.eq-status {
-								font-size: 28rpx;
-								color: #666;
-								font-weight: normal;
-								margin-left: 12rpx;
-
-								>text {
-									display: inline-block;
-									background-color: #666;
-									width: 16rpx;
-									height: 16rpx;
-									border-radius: 16rpx;
-									margin-right: 12rpx;
-
-								}
-
-								&.online {
-									color: #f56c6c;
-
-									>text {
-										background-color: green;
-									}
-								}
-							}
-						}
-					}
-
-					.eqeq-type {
-						display: flex;
-						flex-direction: row;
-						align-items: center;
-						font-size: 28rpx;
-
-						>view:nth-child(1) {
-							color: #000;
-							width: 200rpx;
-						}
-
-						>view:nth-child(2) {
-							color: #666;
-							padding-left: 6rpx;
-						}
-					}
-					
-					.eqeq-type+.eqeq-type{
-						margin-top: 16rpx;
-					}
-
-					.status {
-						width: 130rpx;
-						height: 120rpx;
-						box-sizing: border-box;
-						border-radius: 120rpx;
-						// border: 6rpx solid #2C6FF3;
-						text-align: center;
-						display: flex;
-						flex-flow: column;
-						justify-content: space-around;
-						align-items: center;
-						position: absolute;
-						right: 12rpx;
-						bottom: 24rpx;
-
-						.s-name {
-							font-size: 28rpx;
-							padding-top: 20rpx;
-							font-weight: bold;
-						}
-
-						.s-num {
-							font-size: 32rpx;
-							padding-bottom: 20rpx;
-						}
-					}
-				}
-			}
-
-			.more {
-				text-align: center;
-				font-size: 28rpx;
-				color: #2C6FF3;
-				line-height: 80rpx;
-			}
-		}
-
-		.empty {
-			margin: 40% auto 0;
-		}
-	}
-</style>

+ 0 - 292
pages/globalPages/components/home.vue

@@ -1,292 +0,0 @@
-<template>
-	<view class="container">
-		平台运维
-	</view>
-</template>
-
-<script setup>
-	import {
-		onMounted,
-	} from "vue";
-	import {
-		onShow,
-		onLoad
-	} from '@dcloudio/uni-app'
-
-	onMounted(() => {
-		console.log('平台运维')
-	})
-</script>
-
-<style lang="scss" scoped>
-	@keyframes rotate {
-		from {
-			transform: rotate(0deg);
-		}
-
-		to {
-			transform: rotate(359deg);
-		}
-	}
-
-	.u-notice-bar {
-		padding: 9px 12rpx !important;
-	}
-
-	.container {
-		padding-bottom: 88rpx;
-		position: relative;
-
-		.nav-style {
-			font-size: 32rpx;
-			font-weight: bold;
-			color: #fff;
-		}
-
-		// 统计信息
-		.total {
-			width: 724rpx;
-			margin-left: 14rpx;
-			overflow: hidden;
-			border-radius: 14rpx;
-			background-color: #fff;
-			margin-top: 10rpx;
-
-			.total-sale {
-				width: 724rpx;
-				height: 205rpx;
-				background: url('https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/home/home-bg.png') no-repeat left top;
-				background-size: 100% 100%;
-				position: relative;
-
-				.sale-item {
-					margin-top: 46rpx;
-					padding-left: 30rpx;
-
-					.sale-name {
-						font-size: 26rpx;
-						font-weight: 500;
-						color: #EEEDFF;
-						line-height: 26rpx;
-					}
-
-					.sale-num {
-						line-height: 50rpx;
-						font-size: 50rpx;
-						font-weight: 800;
-						color: #FFFFFF;
-						margin-top: 55rpx;
-					}
-				}
-
-				.sale-more {
-					font-size: 26rpx;
-					font-weight: 500;
-					color: #FFFFFF;
-					padding-right: 18rpx;
-					position: absolute;
-					right: 12rpx;
-					top: 22rpx;
-					line-height: 26rpx;
-
-					image {
-						width: 24rpx;
-						height: 24rpx;
-						position: absolute;
-						right: 0;
-						top: 0;
-					}
-				}
-
-				.update {
-					width: 50rpx;
-					height: 50rpx;
-					position: absolute;
-					right: 16rpx;
-					bottom: 16rpx;
-
-					&.load {
-						animation: rotate 1s linear;
-						animation-iteration-count: 3;
-					}
-
-					image {
-						width: 50rpx;
-						height: 50rpx;
-					}
-				}
-			}
-
-			.refund-order {
-				padding-left: 34rpx;
-				overflow: hidden;
-				padding-bottom: 26rpx;
-
-				.refund-item {
-					text-align: center;
-					color: #2E2E2E;
-					margin-top: 68rpx;
-
-					&:nth-child(1) {
-						margin-right: 70rpx;
-					}
-
-					.refund-num {
-						font-size: 36rpx;
-						font-weight: 800;
-						line-height: 32rpx;
-					}
-
-					.refund-name {
-						font-size: 28rpx;
-						font-weight: 500;
-						line-height: 28rpx;
-						margin-top: 27rpx;
-					}
-				}
-			}
-
-			.notice {
-				width: 100%;
-				position: relative;
-
-				// .notice-tips {
-				// 	padding: 10rpx;
-				// 	color: #fff;
-				// 	font-size: 24rpx;
-				// 	text-align: center;
-				// 	position: absolute;
-				// 	right: 56rpx;
-				// 	top: 50%;
-				// 	transform: translateY(-50%);
-				// 	z-index: 999;
-				// 	background-color: #fff;
-
-				// 	>view {
-				// 		width: 36rpx;
-				// 		height: 36rpx;
-				// 		background-color: #E60012;
-				// 		border-radius: 36rpx;
-				// 		line-height: 36rpx;
-				// 	}
-				// }
-
-				.notice-tips {
-					padding: 10rpx;
-					text-align: center;
-					position: absolute;
-					right: 40rpx;
-					top: 50%;
-					transform: translateY(-54%);
-					z-index: 999;
-					background-color: #fff;
-				}
-			}
-		}
-
-		//常用菜单
-		.useful-menu {
-			width: 724rpx;
-			margin-left: 14rpx;
-
-			.useful-menu-item {
-				margin-top: 20rpx;
-				width: 352rpx;
-				height: 168rpx;
-				background: #FFFFFF;
-				box-shadow: 0px 0px 10px 0px rgba(174, 201, 255, 0.2);
-				border-radius: 14rpx;
-				padding: 0 66rpx 0 46rpx;
-				position: relative;
-
-				>.image {
-					width: 75rpx;
-					height: 75rpx;
-				}
-
-				>.menu-name {
-					font-size: 32rpx;
-					font-weight: 500;
-					color: #333333;
-				}
-
-				.tips {
-					// width: 40rpx;
-					// height: 40rpx;
-					// background-color: #E60012;
-					// color: #fff;
-					// font-size: 24rpx;
-					// text-align: center;
-					// line-height: 28rpx;
-					// border-radius: 40rpx;
-					// position: absolute;
-					// right: -8rpx;
-					// top: -8rpx;
-					// padding: 6rpx;
-
-					width: 40rpx;
-					height: 40rpx;
-					position: absolute;
-					right: -8rpx;
-					top: -8rpx;
-					padding: 6rpx;
-				}
-			}
-		}
-
-		// 便捷功能
-		.menu {
-			width: 724rpx;
-			margin-left: 14rpx;
-			background: #FFFFFF;
-			box-shadow: 0px 0px 10rpx 0px rgba(174, 201, 255, 0.2);
-			border-radius: 14rpx;
-			display: flex;
-			flex-flow: row nowrap;
-			justify-content: space-around;
-			margin-top: 20rpx;
-			position: relative;
-			padding: 101rpx 36rpx 0rpx;
-
-			.menu-title {
-				font-size: 28rpx;
-				font-weight: 800;
-				color: #000;
-				position: absolute;
-				left: 28rpx;
-				top: 28rpx;
-			}
-
-			.menu-item {
-				margin-bottom: 48rpx;
-			}
-
-			.menu-content {
-				width: 100%;
-				flex-flow: row wrap;
-			}
-
-			.menu-item {
-				text-align: center;
-				width: 25%;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-
-				>.image {
-					width: 57rpx;
-					height: 57rpx;
-				}
-
-				>view {
-					color: #333;
-					font-size: 24rpx;
-					line-height: 24rpx;
-					font-size: 28rpx;
-					line-height: 28rpx;
-					margin-top: 16rpx;
-				}
-			}
-		}
-	}
-</style>

+ 0 - 134
pages/globalPages/home.vue

@@ -1,134 +0,0 @@
-<template>
-	<view class="container">
-		<view class="pages">
-			<Home ref="homeRef" v-if="current==0" />
-			<Equipment ref="equipmentRef" v-if="current==1" />
-			<Commodity ref="commodityRef" v-if="current==2" />
-			<Account ref="accountRef" v-if="current==3" />
-		</view>
-
-		<u-tabbar v-if="menu&&menu.length>0" v-model="current" :list="list" :mid-button="false"></u-tabbar>
-	</view>
-</template>
-
-<script setup>
-	import Home from './components/home.vue'
-	import Equipment from './components/equipment.vue'
-	import Commodity from './components/commodity.vue'
-	import Account from './components/account.vue'
-	import {
-		watch,
-		computed,
-		onBeforeMount,
-		onMounted,
-		reactive,
-		toRefs,
-		ref
-	} from "vue";
-	import {
-		onShow,
-		onLoad
-	} from '@dcloudio/uni-app'
-
-	import usePermissionStore from '@/stores/permission.js'
-
-	const current = ref(0)
-	const client = ref(null)
-	const tabName = ref(null)
-
-	const list = ref([{
-			iconPath: "home",
-			selectedIconPath: "home-fill",
-			text: '平台运维',
-		},
-		{
-			iconPath: "photo",
-			selectedIconPath: "photo-fill",
-			text: '质检出场',
-		},
-		{
-			iconPath: "play-right",
-			selectedIconPath: "play-right-fill",
-			text: '数据中心',
-		},
-		{
-			iconPath: "account",
-			selectedIconPath: "account-fill",
-			text: '商户运营',
-		},
-	])
-
-	onShow(() => {
-		console.log('onShow')
-		// 版本自动更新代码
-		const updateManager = wx.getUpdateManager()
-		updateManager.onUpdateReady(function() {
-			wx.showModal({
-				title: '更新检测',
-				content: '检测到新版本,是否重启小程序?',
-				success: function(res) {
-					if (res.confirm) {
-						// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
-						updateManager.applyUpdate()
-					}
-				}
-			})
-		})
-		updateManager.onUpdateFailed(function() {
-			// 新的版本下载失败
-			wx.showModal({
-				title: '已有新版本咯',
-				content: '请您删除当前小程序,重新打开呦~',
-				showCancel: false
-			})
-		})
-	})
-
-	onLoad((o) => {
-		console.log('onLoad', o)
-		if (o.tabName) { //公库添加商品到私库完毕,显示商品界面
-			tabName.value = o.tabName;
-			if (menu.value && menu.value.length > 0) {
-				menu.value.forEach((item, index) => {
-					if (item.name == o.tabName) {
-						tcurrent.value = index
-					}
-				})
-			}
-		}
-	})
-
-	const menu = computed(() => JSON.parse(usePermissionStore().permissions_menu))
-
-	watch(
-		() => menu,
-		(menu, prevMenu) => {
-			if (menu.length > 0) {
-				tabName.value = menu[0].name
-			} else {
-				tabName.value = null
-			}
-		}
-	)
-
-	function tabChange(e) {
-		current.value = e
-	}
-
-	function tabClick(e) {
-		tabName.value = e.name
-	}
-</script>
-
-<style lang="scss">
-	.container {
-		.pages {
-			height: 100%;
-		}
-
-		.u-page__item__slot-icon {
-			width: 44rpx;
-			height: 44rpx;
-		}
-	}
-</style>

+ 0 - 276
pages/login.vue

@@ -1,276 +0,0 @@
-<!-- 蓝色登录页面2 -->
-<template>
-	<view style="height:100vh;background: #fff;">
-		<view class="img-a">
-			<view class="t-b">
-				欢迎使用,
-				<br />
-				喵星人智能货柜管理平台
-			</view>
-		</view>
-		<view class="login-view" style="">
-			<view class="t-login">
-				<form class="cl">
-					<view class="t-a">
-						<text class="txt">账号</text>
-						<input placeholder="请输入账号" v-model="loginForm.username" name="input" />
-					</view>
-					<view class="t-a">
-						<text class="txt">密码</text>
-						<input v-model="loginForm.password" type="password" placeholder="请输入密码" name="input" />
-					</view>
-
-					<view class="remember">
-						<u-checkbox-group>
-							<u-checkbox size="30" labelSize="26" labelColor="#666" name="1" v-model="isRemember" @change="remember">记住密码</u-checkbox>
-						</u-checkbox-group>
-					</view>
-
-					<button @click="handleLogin">登 录</button>
-				</form>
-			</view>
-		</view>
-	</view>
-</template>
-<script setup>
-	import { getCurrentInstance,reactive,toRefs,onMounted } from 'vue'
-	import {
-		sysList
-	} from '@/api/system/menu.js'
-	import useUserStore from '@/stores/user.js'
-	import usePermissionStore from '@/stores/permission.js'
-
-	const userStore = useUserStore()
-	const permissionStore = usePermissionStore()
-
-	const {
-		proxy
-	} = getCurrentInstance();
-
-	const data = reactive({
-		loginForm: {
-			username: "",
-			password: "",
-			code: "",
-			uuid: ''
-		},
-		isRemember: true
-	})
-
-	const {
-		loginForm,
-		isRemember
-	} = toRefs(data);
-
-
-	onMounted(() => {
-		if (uni.getStorageSync('account')) {
-			isRemember.value = true
-			let account = JSON.parse(uni.getStorageSync('account'))
-			loginForm.value.username = account.username
-			loginForm.value.password = account.password
-		}
-	})
-
-	function remember(e) {
-		isRemember.value = e.value
-	}
-
-	// 登录方法
-	function handleLogin() {
-		if (!loginForm.value.username) {
-			proxy.$modal.msg('请输入账号~')
-			return
-		}
-		if (!loginForm.value.password) {
-			proxy.$modal.msg('请输入密码~')
-			return
-		}
-		pwdLogin()
-	}
-
-	// 密码登录
-	async function pwdLogin(params) {
-		if (isRemember.value) { //记住密码
-			let account = {
-				username: loginForm.value.username,
-				password: loginForm.value.password
-			}
-			uni.setStorageSync('account', JSON.stringify(account))
-		} else {
-			uni.setStorageSync('account', '')
-		}
-		await userStore.Login(loginForm.value)
-		
-		await permissionStore.GetPermis()
-		//判断用户是否有任一菜单权限
-
-		if (permissionStore.permissions_menu && permissionStore.permissions_menu !=
-			'[]') {
-			proxy.$tab.reLaunch('/pages/globalPages/home')
-		} else {
-			proxy.$modal.msg('该用户无权限~')
-		}
-	} 
-
-	// 获取系统id
-	function getSysId() {
-		return new Promise((resolve, reject) => {
-			sysList({}).then(res => {
-				let sysId = 381638941857029; //默认系统id
-				for (var i = 0; i < res.length; i++) {
-					let item = res[i];
-					if (item.code == 'xy_merc_mini') {
-						sysId = item.id
-						console.log('系统id:', sysId)
-					}
-				}
-				uni.setStorageSync('sysId', sysId)
-				resolve(res)
-			}).catch(err => {
-				reject(err)
-			})
-		})
-	}
-</script>
-<style lang="scss" scoped>
-	.txt {
-		font-size: 32rpx;
-		font-weight: bold;
-		color: #333333;
-	}
-
-	.img-a {
-		width: 100%;
-		height: 450rpx;
-		background-image: url(https://cdn.ossfile.mxrvending.com/assets/xy_mana_mini/images/global/opendoor-manage-mini.png);
-		background-size: 100%;
-	}
-
-	.reg {
-		font-size: 28rpx;
-		color: #fff;
-		height: 90rpx;
-		line-height: 90rpx;
-		border-radius: 50rpx;
-		font-weight: bold;
-		background: #f5f6fa;
-		color: #000000;
-		text-align: center;
-		margin-top: 30rpx;
-	}
-
-	.login-view {
-		width: 100%;
-		position: relative;
-		margin-top: -120rpx;
-		background-color: #ffffff;
-		border-radius: 8% 8% 0% 0;
-	}
-
-	.t-login {
-		width: 600rpx;
-		margin: 0 auto;
-		font-size: 28rpx;
-		padding-top: 80rpx;
-	}
-
-	.t-login button {
-		font-size: 28rpx;
-		background: #2796f2;
-		color: #fff;
-		height: 90rpx;
-		line-height: 90rpx;
-		border-radius: 50rpx;
-		font-weight: bold;
-	}
-
-	.t-login input {
-		height: 90rpx;
-		line-height: 90rpx;
-		margin-bottom: 50rpx;
-		border-bottom: 1px solid #e9e9e9;
-		font-size: 28rpx;
-	}
-
-	.t-login .t-a {
-		position: relative;
-	}
-
-	.t-b {
-		text-align: left;
-		font-size: 42rpx;
-		color: #ffffff;
-		padding: 130rpx 0 0 70rpx;
-		font-weight: bold;
-		line-height: 70rpx;
-	}
-
-	.t-login .t-c {
-		position: absolute;
-		right: 22rpx;
-		top: 22rpx;
-		background: #5677fc;
-		color: #fff;
-		font-size: 24rpx;
-		border-radius: 50rpx;
-		height: 50rpx;
-		line-height: 50rpx;
-		padding: 0 25rpx;
-	}
-
-	.t-login .t-d {
-		text-align: center;
-		color: #999;
-		margin: 80rpx 0;
-	}
-
-	.t-login .t-e {
-		text-align: center;
-		width: 250rpx;
-		margin: 80rpx auto 0;
-	}
-
-	.t-login .t-g {
-		float: left;
-		width: 50%;
-	}
-
-	.t-login .t-e image {
-		width: 50rpx;
-		height: 50rpx;
-	}
-
-	.t-login .t-f {
-		text-align: center;
-		margin: 150rpx 0 0 0;
-		color: #666;
-	}
-
-	.t-login .t-f text {
-		margin-left: 20rpx;
-		color: #aaaaaa;
-		font-size: 27rpx;
-	}
-
-	.t-login .uni-input-placeholder {
-		color: #aeaeae;
-	}
-
-	.cl {
-		zoom: 1;
-	}
-
-	.cl:after {
-		clear: both;
-		display: block;
-		visibility: hidden;
-		height: 0;
-		content: '\20';
-	}
-
-	.remember {
-		margin-top: 24rpx;
-		margin-bottom: 40rpx;
-	}
-</style>

+ 0 - 15
plugins/index.js

@@ -1,15 +0,0 @@
-import tab from './tab'
-import auth from './auth'
-import modal from './modal'
-import xy from './xy'
-
-export default  function installPlugins(app){
-  // 页签操作
-    app.config.globalProperties.$tab = tab
-    // 认证对象
-    app.config.globalProperties.$auth = auth
-    // 模态框对象
-    app.config.globalProperties.$modal = modal
-   // 处理数据
-    app.config.globalProperties.$xy = xy
-}

+ 0 - 42
plugins/xy.js

@@ -1,42 +0,0 @@
-export default {
-	//金额分转换为元
-	delMoney(money) {
-		let newMoney = '';
-		if (money) {
-			if (typeof(money) == Number) {
-				newMoney = (money / 100).toFixed(2)
-			} else {
-				newMoney = ((Number(money) / 100)).toFixed(2)
-			}
-		} else {
-			newMoney = 0
-		}
-		return newMoney
-	},
-
-	//支付方式反显
-	getPayType(type) {
-		let value = '微信支付'
-		switch (type) {
-			case 3:
-				value = '微信支付'
-				break;
-			case 2:
-				value = '支付宝支付'
-				break;
-			case 10:
-				value = '取货'
-				break;
-			case 11:
-				value = '会员卡'
-				break;
-			default:
-				break;
-		}
-		return value
-	},
-	testPrice(val) {
-		let reg = /^\d+(\.([0-9]|\d[0-9]))?$/
-		return reg.test(val)
-	}
-}

+ 74 - 0
src/App.vue

@@ -0,0 +1,74 @@
+<script setup>
+import { getCurrentInstance } from 'vue'
+import { onLaunch } from '@dcloudio/uni-app'
+import config from './config'
+import {
+  getToken
+} from '@/utils/auth'
+const { proxy } = getCurrentInstance();
+import usePermissionStore from '@/stores/permission.js';
+
+onLaunch(() => {
+  initApp()
+})
+
+// 初始化应用
+function initApp () {
+  console.log('初始化应用开始~')
+  // 是否有版本更新
+  isUpdate()
+  // 免登录
+  checkLogin()
+}
+
+async function checkLogin () {
+  console.log('检测是否登录开始!')
+  if (getToken() && uni.getStorageSync('sysId')) {
+    console.log('已登录!')
+    await usePermissionStore().GetPermis()
+    //判断用户是否有任一菜单权限
+    if (usePermissionStore().permissions_menu && usePermissionStore().permissions_menu != '[]') {
+      // 开发模式下取消免登录,直接跳转调试页面,生产免登录跳转主页
+      if (process.env.NODE_ENV == 'production') {
+        proxy.$tab.reLaunch('/pages/globalPages/home')
+      }
+    } else {
+      proxy.$modal.msg('该用户无权限~')
+    }
+  } else {
+    console.log('未登录!')
+  }
+}
+
+function isUpdate () {
+  console.log('检测更新开始~')
+  const updateManager = uni.getUpdateManager()
+  updateManager.onCheckForUpdate(function (res) {
+    // 请求完新版本信息的回调
+    console.log(res.hasUpdate)
+  })
+
+  updateManager.onUpdateReady(function () {
+    uni.showModal({
+      title: '更新提示',
+      content: '新版本已经准备好,是否重启应用?',
+      success (res) {
+        if (res.confirm) {
+          // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+          updateManager.applyUpdate()
+        }
+      }
+    })
+  })
+
+  updateManager.onUpdateFailed(function () {
+    // 新版本下载失败
+  })
+}
+
+</script>
+
+<style lang="scss">
+/*每个页面公共css */
+@import "uview-plus/index.scss";
+</style>

+ 33 - 0
src/config.js

@@ -0,0 +1,33 @@
+// 应用全局配置
+export default {
+  baseUrl:
+    process.env.NODE_ENV == 'production'
+      ? 'https://api.mxrvending.com:9050'
+      : 'https://ai.tanbin.vip',
+  // baseUrl: 'https://api.mxrvending.com:9050',
+  //mock数据
+  // baseUrl: 'http://119.96.213.127:9010/mock',
+  // 应用信息
+  appInfo: {
+    // 应用名称
+    name: 'MXR-app',
+    // 应用版本
+    version: '1.0.0',
+    // 应用logo
+    logo: '/static/logo.png',
+    // 官方网站
+    site_url: 'http://www.xyvending.com/',
+    // 政策协议
+    agreements: [
+      {
+        title: '隐私政策',
+        url: 'https://ruoyi.vip/protocol.html',
+      },
+
+      {
+        title: '用户服务协议',
+        url: 'https://ruoyi.vip/protocol.html',
+      },
+    ],
+  },
+}

+ 16 - 0
src/main.js

@@ -0,0 +1,16 @@
+import { createSSRApp } from 'vue'
+import App from './App.vue'
+import * as Pinia from 'pinia'
+import plugins from './plugins' // plugins
+import uviewPlus from 'uview-plus'
+
+export function createApp() {
+  const app = createSSRApp(App)
+  app.use(uviewPlus)
+  app.use(Pinia.createPinia())
+  app.use(plugins)
+  return {
+    app,
+    Pinia,
+  }
+}

+ 5 - 5
manifest.json → src/manifest.json

@@ -1,6 +1,6 @@
 {
-    "name" : "管理平台小程序vue3版本",
-    "appid" : "__UNI__AFE45A3",
+    "name" : "",
+    "appid" : "",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",
@@ -50,7 +50,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wxecb8522186879691",
+        "appid" : "",
         "setting" : {
             "urlCheck" : false
         },
@@ -65,8 +65,8 @@
     "mp-toutiao" : {
         "usingComponents" : true
     },
-    "uniStatistics" : {
-        "enable" : false
+    "uniStatistics": {  
+        "enable": false
     },
     "vueVersion" : "3"
 }

+ 9 - 6
pages.json → src/pages.json

@@ -1,4 +1,10 @@
 {
+  "easycom": {
+		// 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175
+		"custom": {  
+	        "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue" 
+		}
+	},
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
 			"path": "pages/login",
@@ -8,8 +14,7 @@
 			}
 		}
 	],
-	
-	"subPackages": [ //分包
+  "subPackages": [ //分包
 		{
 			"root": "pages/globalPages", //首页
 			"pages": [{
@@ -21,12 +26,10 @@
 			}]
 		}
 	],
-	
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8"
-	},
-	"uniIdRouter": {}
-}
+	}
+}

+ 251 - 0
src/pages/globalPages/components/account.vue

@@ -0,0 +1,251 @@
+<template>
+  <view class="container">
+    <view class="nav-bar">
+      <u-navbar leftIconColor="#fff"
+                titleStyle="color:#fff;fontSize:36rpx;"
+                :autoBack="true"
+                bgColor="#2C6FF3"
+                :placeholder="true"
+                title="商户运营"></u-navbar>
+    </view>
+    <view>
+      <view v-for="(item,index) in mqtt_cmd_templet_task"
+            :key="item.value">
+        {{item.label}}
+      </view>
+    </view>
+  </view>
+</template>
+
+<script setup>
+import {
+  onMounted,
+  getCurrentInstance
+} from "vue";
+import {
+  onShow,
+  onLoad
+} from '@dcloudio/uni-app'
+const { proxy } = getCurrentInstance();
+const { mqtt_cmd_templet_task } = proxy.$useDict("mqtt_cmd_templet_task");
+
+onMounted(() => {
+  console.log('商户运营', mqtt_cmd_templet_task)
+
+})
+</script>
+
+<style lang="scss" scoped>
+.container {
+  padding-bottom: 100rpx;
+
+  // 个人信息
+  .user {
+    background: #2c6ff3
+      url("https://cdn.ossfile.mxrvending.com/assets/xy_merc_mini/images/globalPages/user-bg.png")
+      no-repeat left top;
+    background-size: 100%;
+    padding-bottom: 145rpx;
+    position: relative;
+    width: 100%;
+
+    .user-content {
+      margin-top: 34rpx;
+      width: 100%;
+
+      .head-img {
+        width: 100rpx;
+        height: 100rpx;
+        border-radius: 100rpx;
+        margin-left: 26rpx;
+      }
+
+      .user-name {
+        font-size: 28rpx;
+        color: #fff;
+        margin-left: 33rpx;
+      }
+
+      .share {
+        width: 30rpx;
+        height: 30rpx;
+        position: relative;
+        margin-left: 20rpx;
+
+        .share-image {
+          width: 30rpx;
+          height: 30rpx;
+          position: absolute;
+          left: 0;
+          top: 0;
+
+          > image {
+            width: 30rpx;
+            height: 30rpx;
+          }
+        }
+
+        button {
+          width: 40rpx;
+          height: 40rpx;
+          position: absolute;
+          left: 0;
+          top: 0;
+          opacity: 0;
+        }
+      }
+
+      .login-out {
+        width: 140rpx;
+        line-height: 52rpx;
+        height: 52rpx;
+        text-align: center;
+        font-size: 24rpx;
+        color: #2c6ff3;
+        background-color: #fff;
+        position: absolute;
+        right: 0;
+        top: 185rpx;
+        z-index: 99;
+        border-top-left-radius: 52rpx;
+        border-bottom-left-radius: 52rpx;
+      }
+    }
+  }
+
+  // 常用菜单
+  .menu {
+    width: 724rpx;
+    margin-left: 14rpx;
+    background: #ffffff;
+    box-shadow: 0px 0px 10rpx 0px rgba(174, 201, 255, 0.2);
+    border-radius: 14rpx;
+    margin-top: 24rpx;
+    position: relative;
+    padding: 20rpx 36rpx 42rpx;
+
+    &.menu-userinfo {
+      padding: 36rpx;
+      margin-top: -102rpx;
+    }
+
+    .menu-title {
+      font-size: 30rpx;
+      font-weight: 800;
+      color: #000000;
+      position: absolute;
+      left: 28rpx;
+      top: 28rpx;
+    }
+
+    .u-content {
+      display: flex;
+      flex-flow: row nowrap;
+      justify-content: space-around;
+      text-align: center;
+
+      .u-item {
+        line-height: 50rpx;
+
+        .u-name {
+          font-weight: bold;
+          font-size: 30rpx;
+        }
+
+        .u-val {
+          font-size: 28rpx;
+          color: #666;
+          position: relative;
+          padding-left: 30rpx;
+          display: inline-block;
+
+          > image {
+            width: 21rpx;
+            height: 21rpx;
+            position: absolute;
+            left: 0;
+            top: 50%;
+            transform: translateY(-50%);
+          }
+        }
+      }
+    }
+
+    .cu-btn {
+      padding: 0 12rpx;
+      font-size: 22rpx;
+      height: 40rpx;
+      line-height: 40rpx;
+      background-color: #2c6ff3;
+      color: #fff;
+    }
+
+    .edit {
+      position: absolute;
+      right: 28rpx;
+      top: 28rpx;
+    }
+
+    .s-content {
+      .s-item {
+        line-height: 50rpx;
+
+        > text {
+          color: red;
+        }
+      }
+    }
+
+    .menu-item {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      width: 25%;
+
+      > .image {
+        width: 74rpx;
+        height: 74rpx;
+      }
+
+      > view {
+        color: #333333;
+        font-size: 26rpx;
+        line-height: 26rpx;
+        margin-top: 16rpx;
+      }
+    }
+  }
+
+  .qrcode-content {
+    padding: 24rpx;
+
+    .qrcode-img {
+      width: 400rpx;
+      height: 400rpx;
+    }
+
+    .save-qrcode {
+      margin-top: 24rpx;
+    }
+  }
+
+  .chang-password {
+    text-align: center;
+    line-height: 60rpx;
+    color: #2c6ff3;
+    text-decoration: underline;
+  }
+
+  .pwd-popup-content {
+    padding: 24rpx;
+
+    > view:nth-child(1) {
+      width: 160rpx;
+    }
+
+    > view:nth-child(2) {
+      width: 100%;
+    }
+  }
+}
+</style>

+ 81 - 0
src/pages/globalPages/components/commodity.vue

@@ -0,0 +1,81 @@
+<template>
+  <view class="container">
+    <view class="nav-bar">
+      <u-navbar leftIconColor="#fff"
+                titleStyle="color:#fff;fontSize:36rpx;"
+                :autoBack="true"
+                bgColor="#2C6FF3"
+                :placeholder="true"
+                title="数据中心"></u-navbar>
+    </view>
+  </view>
+</template>
+
+<script setup>
+function onshow () {
+  console.log('数据中心')
+}
+</script>
+
+<style lang="scss" scoped>
+.btn-wrap {
+  padding: 24rpx;
+  background-color: #fff;
+}
+
+.search {
+  padding: 0 24rpx 24rpx;
+  background-color: #fff;
+
+  .search-input {
+    position: relative;
+
+    .scan-icon {
+      position: absolute;
+      top: 50%;
+      transform: translateY(-50%);
+      z-index: 2;
+
+      &.scan-left-show {
+        right: 36rpx;
+      }
+
+      &.scan-left-hidden {
+        right: 100rpx;
+      }
+    }
+  }
+
+  .search-history {
+    .history-item {
+      margin-right: 24rpx;
+      padding: 0 12rpx;
+      background-color: #f2f2f2;
+      color: #333;
+      font-size: 24rpx;
+      line-height: 40rpx;
+      border-radius: 40rpx;
+      margin-top: 24rpx;
+    }
+  }
+}
+
+.classify-wrap {
+  // padding-bottom: 200rpx;
+}
+
+.btn {
+  width: 100%;
+  position: fixed;
+  bottom: 120rpx;
+  left: 0;
+  display: flex;
+  flex-flow: row nowrap;
+  justify-content: space-between;
+  padding: 0 24rpx;
+
+  &.safa-btn {
+    bottom: 180rpx;
+  }
+}
+</style>

+ 200 - 0
src/pages/globalPages/components/equipment.vue

@@ -0,0 +1,200 @@
+<template>
+  <view class="container">
+    <view class="nav-bar">
+      <u-navbar leftIconColor="#fff"
+                titleStyle="color:#fff;fontSize:36rpx;"
+                :autoBack="true"
+                bgColor="#2C6FF3"
+                :placeholder="true"
+                title="质检出场"></u-navbar>
+    </view>
+  </view>
+</template>
+
+<script setup>
+function onshow () {
+  console.log('质检出场')
+}
+</script>
+
+<style lang="scss">
+.container {
+  .nav-style {
+    font-size: 32rpx;
+    font-weight: bold;
+    color: #fff;
+  }
+
+  .search {
+    padding: 24rpx 24rpx;
+    background-color: #fff;
+  }
+
+  .total {
+    display: flex;
+    flex-flow: row nowrap;
+    justify-content: space-around;
+    align-items: center;
+    text-align: center;
+    color: #fff;
+    background-color: #2c6ff3;
+    padding: 40rpx 24rpx;
+
+    .total-item {
+      .num {
+        font-weight: bold;
+        font-size: 52rpx;
+      }
+
+      .name {
+        font-size: 26rpx;
+      }
+    }
+  }
+
+  .content {
+    padding: 24rpx;
+    padding-bottom: calc(124rpx + env(safe-area-inset-bottom) / 2);
+
+    .xy-card {
+      margin-bottom: 24rpx;
+    }
+
+    .eq-line-title {
+      font-size: 32rpx;
+      padding-bottom: 24rpx;
+      position: relative;
+
+      .arrow-right {
+        position: absolute;
+        right: 0;
+        top: 0;
+      }
+    }
+
+    .eq-item {
+      position: relative;
+
+      & + .eq-item {
+        padding-top: 12rpx;
+      }
+
+      .eq-content {
+        .eq-wrap {
+          border-radius: 8rpx;
+          background-color: rgb(245, 248, 251);
+          box-sizing: border-box;
+          padding: 24rpx 12rpx;
+          font-size: 26rpx;
+
+          .eq-name {
+            font-size: 32rpx;
+            font-weight: bold;
+            margin-bottom: 24rpx;
+            position: relative;
+
+            > .eq-title {
+              width: 420rpx;
+              > text {
+                font-size: 30rpx;
+                color: #666;
+                font-weight: normal;
+              }
+            }
+
+            .eq-status-box {
+              float: right;
+              position: absolute;
+              right: 0;
+              top: 0;
+            }
+
+            .eq-status {
+              font-size: 28rpx;
+              color: #666;
+              font-weight: normal;
+              margin-left: 12rpx;
+
+              > text {
+                display: inline-block;
+                background-color: #666;
+                width: 16rpx;
+                height: 16rpx;
+                border-radius: 16rpx;
+                margin-right: 12rpx;
+              }
+
+              &.online {
+                color: #f56c6c;
+
+                > text {
+                  background-color: green;
+                }
+              }
+            }
+          }
+        }
+
+        .eqeq-type {
+          display: flex;
+          flex-direction: row;
+          align-items: center;
+          font-size: 28rpx;
+
+          > view:nth-child(1) {
+            color: #000;
+            width: 200rpx;
+          }
+
+          > view:nth-child(2) {
+            color: #666;
+            padding-left: 6rpx;
+          }
+        }
+
+        .eqeq-type + .eqeq-type {
+          margin-top: 16rpx;
+        }
+
+        .status {
+          width: 130rpx;
+          height: 120rpx;
+          box-sizing: border-box;
+          border-radius: 120rpx;
+          // border: 6rpx solid #2C6FF3;
+          text-align: center;
+          display: flex;
+          flex-flow: column;
+          justify-content: space-around;
+          align-items: center;
+          position: absolute;
+          right: 12rpx;
+          bottom: 24rpx;
+
+          .s-name {
+            font-size: 28rpx;
+            padding-top: 20rpx;
+            font-weight: bold;
+          }
+
+          .s-num {
+            font-size: 32rpx;
+            padding-bottom: 20rpx;
+          }
+        }
+      }
+    }
+
+    .more {
+      text-align: center;
+      font-size: 28rpx;
+      color: #2c6ff3;
+      line-height: 80rpx;
+    }
+  }
+
+  .empty {
+    margin: 40% auto 0;
+  }
+}
+</style>

+ 36 - 0
src/pages/globalPages/components/home.vue

@@ -0,0 +1,36 @@
+<template>
+  <view class="container">
+    <view class="nav-bar">
+      <u-navbar title="平台运维"
+                :autoBack="true">
+      </u-navbar>
+    </view>
+    <view>
+      <view v-for="(item,index) in mqtt_cmd_templet_task"
+            :key="item.value">
+        {{item.label}}
+      </view>
+    </view>
+  </view>
+</template>
+
+<script setup>
+import {
+  onMounted,
+  getCurrentInstance
+} from "vue";
+import {
+  onShow,
+  onLoad
+} from '@dcloudio/uni-app'
+const { proxy } = getCurrentInstance();
+const { mqtt_cmd_templet_task } = proxy.$useDict("mqtt_cmd_templet_task");
+
+onMounted(() => {
+  console.log('平台运维', mqtt_cmd_templet_task)
+
+})
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 0 - 0
pages/globalPages/errCode.vue → src/pages/globalPages/errCode.vue


+ 153 - 0
src/pages/globalPages/home.vue

@@ -0,0 +1,153 @@
+<template>
+  <view class="container">
+    <view class="pages">
+      <Home ref="homeRef"
+            v-if="current==0" />
+      <Equipment ref="equipmentRef"
+                 v-if="current==1" />
+      <Commodity ref="commodityRef"
+                 v-if="current==2" />
+      <Account ref="accountRef"
+               v-if="current==3" />
+    </view>
+
+    <u-tabbar v-if="list&&list.length>0"
+              :value="current"
+              @change="tabChange"
+              :fixed="true"
+              :placeholder="false"
+              :safeAreaInsetBottom="true">
+      <u-tabbar-item v-for="item in list"
+                     :key="item.id"
+                     :text="item.name"
+                     @click="tabClick(item)">
+        <template #active-icon>
+          <image class="u-page__item__slot-icon"
+                 :src="tabIcon[item.name][1]"></image>
+        </template>
+        <template #inactive-icon>
+          <image class="u-page__item__slot-icon"
+                 :src="tabIcon[item.name][0]"></image>
+        </template>
+      </u-tabbar-item>
+    </u-tabbar>
+  </view>
+</template>
+
+<script setup>
+import Home from './components/home.vue'
+import Equipment from './components/equipment.vue'
+import Commodity from './components/commodity.vue'
+import Account from './components/account.vue'
+import {
+  watch,
+  computed,
+  onBeforeMount,
+  onMounted,
+  reactive,
+  toRefs,
+  ref
+} from "vue";
+import {
+  onShow,
+  onLoad
+} from '@dcloudio/uni-app'
+
+import usePermissionStore from '@/stores/permission.js'
+
+const current = ref(0)
+const client = ref(null)
+const tabName = ref(null)
+
+// const list = ref([{
+//   iconPath: "home",
+//   selectedIconPath: "home-fill",
+//   text: '平台运维',
+// },
+// {
+//   iconPath: "photo",
+//   selectedIconPath: "photo-fill",
+//   text: '质检出场',
+// },
+// {
+//   iconPath: "play-right",
+//   selectedIconPath: "play-right-fill",
+//   text: '数据中心',
+// },
+// {
+//   iconPath: "account",
+//   selectedIconPath: "account-fill",
+//   text: '商户运营',
+// },
+// ])
+
+const tabIcon = ref({
+  '平台运维': ['../../static/images/tabbar/home.png', '../../static/images/tabbar/home_.png'],
+  '质检&出厂': ['../../static/images/tabbar/equipment.png', '../../static/images/tabbar/equipment_.png'],
+  '数据中心': ['../../static/images/tabbar/commodity.png', '../../static/images/tabbar/commodity_.png'],
+  '商户运营': ['../../static/images/tabbar/mine.png', '../../static/images/tabbar/mine_.png'],
+})
+
+onShow(() => {
+  console.log('onShow')
+  // 版本自动更新代码
+  const updateManager = wx.getUpdateManager()
+  updateManager.onUpdateReady(function () {
+    wx.showModal({
+      title: '更新检测',
+      content: '检测到新版本,是否重启小程序?',
+      success: function (res) {
+        if (res.confirm) {
+          // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+          updateManager.applyUpdate()
+        }
+      }
+    })
+  })
+  updateManager.onUpdateFailed(function () {
+    // 新的版本下载失败
+    wx.showModal({
+      title: '已有新版本咯',
+      content: '请您删除当前小程序,重新打开呦~',
+      showCancel: false
+    })
+  })
+})
+
+onLoad((o) => {
+  console.log('onLoad', o)
+})
+
+const menu = ref(usePermissionStore().permissions_menu)
+const list = computed(() => {
+  let list = []
+  menu.value.forEach(i => {
+    list.push({
+      name: i.meta.title,
+      id: i.id
+    })
+  })
+  return list
+})
+
+function tabChange (e) {
+  current.value = e
+}
+
+function tabClick (e) {
+  tabName.value = e.name
+}
+</script>
+
+<style lang="scss">
+.container {
+  .pages {
+    height: 100%;
+  }
+
+  .u-page__item__slot-icon {
+    width: 44rpx;
+    height: 44rpx;
+  }
+}
+</style>

+ 0 - 0
pages/globalPages/logs.vue → src/pages/globalPages/logs.vue


+ 292 - 0
src/pages/login.vue

@@ -0,0 +1,292 @@
+<!-- 蓝色登录页面2 -->
+<template>
+  <view style="height:100vh;background: #fff;">
+    <view class="img-a">
+      <view class="t-b">
+        欢迎使用,
+        <br />
+        喵星人智能货柜管理平台
+      </view>
+    </view>
+    <view class="login-view"
+          style="">
+      <view class="t-login">
+        <form class="cl">
+          <view class="t-a">
+            <text class="txt">账号</text>
+            <input placeholder="请输入账号"
+                   v-model="loginForm.username"
+                   name="input" />
+          </view>
+          <view class="t-a">
+            <text class="txt">密码</text>
+            <input v-model="loginForm.password"
+                   type="password"
+                   placeholder="请输入密码"
+                   name="input" />
+          </view>
+
+          <view class="remember">
+            <u-checkbox-group v-model="isRemember"
+                              @change="remember">
+              <u-checkbox size="16"
+                          labelSize="12"
+                          labelColor="#666"
+                          name="1"
+                          label="记住密码"></u-checkbox>
+            </u-checkbox-group>
+          </view>
+
+          <button @click="handleLogin">登 录</button>
+        </form>
+      </view>
+    </view>
+  </view>
+</template>
+<script setup>
+import {
+  getCurrentInstance,
+  reactive,
+  toRefs,
+  onMounted
+} from 'vue'
+import useUserStore from '@/stores/user.js'
+import usePermissionStore from '@/stores/permission.js'
+
+const userStore = useUserStore()
+const permissionStore = usePermissionStore()
+
+const { proxy } = getCurrentInstance();
+
+const data = reactive({
+  loginForm: {
+    username: "",
+    password: "",
+    code: "",
+    uuid: ''
+  },
+  isRemember: []
+})
+
+const {
+  loginForm,
+  isRemember
+} = toRefs(data);
+
+
+onMounted(() => {
+  if (uni.getStorageSync('account')) {
+    isRemember.value = ['1']
+    let account = JSON.parse(uni.getStorageSync('account'))
+    loginForm.value.username = account.username
+    loginForm.value.password = account.password
+  }
+})
+
+function remember (e) {
+  isRemember.value = e
+}
+
+// 登录方法
+function handleLogin () {
+  if (!loginForm.value.username) {
+    proxy.$modal.msg('请输入账号~')
+    return
+  }
+  if (!loginForm.value.password) {
+    proxy.$modal.msg('请输入密码~')
+    return
+  }
+  pwdLogin()
+}
+
+// 密码登录
+async function pwdLogin (params) {
+  if (isRemember.value.length > 0 && isRemember.value[0]) { //记住密码
+    let account = {
+      username: loginForm.value.username,
+      password: loginForm.value.password
+    }
+    uni.setStorageSync('account', JSON.stringify(account))
+  } else {
+    uni.setStorageSync('account', '')
+  }
+
+  await userStore.Login(loginForm.value)
+
+  await permissionStore.GetPermis()
+  //判断用户是否有任一菜单权限
+
+  console.log('permissionStore.permissions_menu', permissionStore.permissions_menu)
+  if (permissionStore.permissions_menu && permissionStore.permissions_menu !=
+    '[]') {
+    proxy.$tab.reLaunch('/pages/globalPages/home')
+  } else {
+    proxy.$modal.msg('该用户无权限~')
+  }
+}
+
+// 获取系统id
+function getSysId () {
+  return new Promise((resolve, reject) => {
+    proxy.request({
+      url: '/authorize/sys-system/list',
+      data: {}
+    }).then(res => {
+      let sysId = 381638941857029; //默认系统id
+      for (var i = 0; i < res.length; i++) {
+        let item = res[i];
+        if (item.code == 'xy_merc_mini') {
+          sysId = item.id
+          console.log('系统id:', sysId)
+        }
+      }
+      uni.setStorageSync('sysId', sysId)
+      resolve(res)
+    }).catch(err => {
+      reject(err)
+    })
+  })
+}
+</script>
+<style lang="scss" scoped>
+.txt {
+  font-size: 32rpx;
+  font-weight: bold;
+  color: #333333;
+}
+
+.img-a {
+  width: 100%;
+  height: 450rpx;
+  background-image: url(https://cdn.ossfile.mxrvending.com/assets/xy_mana_mini/images/global/opendoor-manage-mini.png);
+  background-size: 100%;
+}
+
+.reg {
+  font-size: 28rpx;
+  color: #fff;
+  height: 90rpx;
+  line-height: 90rpx;
+  border-radius: 50rpx;
+  font-weight: bold;
+  background: #f5f6fa;
+  color: #000000;
+  text-align: center;
+  margin-top: 30rpx;
+}
+
+.login-view {
+  width: 100%;
+  position: relative;
+  margin-top: -120rpx;
+  background-color: #ffffff;
+  border-radius: 8% 8% 0% 0;
+}
+
+.t-login {
+  width: 600rpx;
+  margin: 0 auto;
+  font-size: 28rpx;
+  padding-top: 80rpx;
+}
+
+.t-login button {
+  font-size: 28rpx;
+  background: #2796f2;
+  color: #fff;
+  height: 90rpx;
+  line-height: 90rpx;
+  border-radius: 50rpx;
+  font-weight: bold;
+}
+
+.t-login input {
+  height: 90rpx;
+  line-height: 90rpx;
+  margin-bottom: 50rpx;
+  border-bottom: 1px solid #e9e9e9;
+  font-size: 28rpx;
+}
+
+.t-login .t-a {
+  position: relative;
+}
+
+.t-b {
+  text-align: left;
+  font-size: 42rpx;
+  color: #ffffff;
+  padding: 130rpx 0 0 70rpx;
+  font-weight: bold;
+  line-height: 70rpx;
+}
+
+.t-login .t-c {
+  position: absolute;
+  right: 22rpx;
+  top: 22rpx;
+  background: #5677fc;
+  color: #fff;
+  font-size: 24rpx;
+  border-radius: 50rpx;
+  height: 50rpx;
+  line-height: 50rpx;
+  padding: 0 25rpx;
+}
+
+.t-login .t-d {
+  text-align: center;
+  color: #999;
+  margin: 80rpx 0;
+}
+
+.t-login .t-e {
+  text-align: center;
+  width: 250rpx;
+  margin: 80rpx auto 0;
+}
+
+.t-login .t-g {
+  float: left;
+  width: 50%;
+}
+
+.t-login .t-e image {
+  width: 50rpx;
+  height: 50rpx;
+}
+
+.t-login .t-f {
+  text-align: center;
+  margin: 150rpx 0 0 0;
+  color: #666;
+}
+
+.t-login .t-f text {
+  margin-left: 20rpx;
+  color: #aaaaaa;
+  font-size: 27rpx;
+}
+
+.t-login .uni-input-placeholder {
+  color: #aeaeae;
+}
+
+.cl {
+  zoom: 1;
+}
+
+.cl:after {
+  clear: both;
+  display: block;
+  visibility: hidden;
+  height: 0;
+  content: "\20";
+}
+
+.remember {
+  margin-top: 24rpx;
+  margin-bottom: 40rpx;
+}
+</style>

+ 0 - 0
plugins/auth.js → src/plugins/auth.js


+ 35 - 0
src/plugins/dict.js

@@ -0,0 +1,35 @@
+import useDictStore from '@/stores/dict.js'
+import request from '@/utils/request.js'
+import { ref, toRefs } from 'vue'
+
+/**
+ * 获取字典数据
+ */
+export function useDict(...args) {
+  const res = ref({})
+  return (() => {
+    args.forEach((dictType, index) => {
+      res.value[dictType] = []
+      const dicts = useDictStore().getDict(dictType)
+      if (dicts) {
+        res.value[dictType] = dicts
+      } else {
+        request({
+          url: '/sys/sys-dict/list2',
+          data: {
+            paterCode: dictType,
+          },
+        }).then((resp) => {
+          res.value[dictType] = resp.map((p) => ({
+            label: p.msg,
+            value: p.value,
+            elTagType: p.cssClass,
+            elTagClass: p.cssClass,
+          }))
+          useDictStore().setDict(dictType, res.value[dictType])
+        })
+      }
+    })
+    return toRefs(res.value)
+  })()
+}

+ 21 - 0
src/plugins/index.js

@@ -0,0 +1,21 @@
+import tab from './tab'
+import auth from './auth'
+import modal from './modal'
+import xy from './xy'
+import request from './request'
+import { useDict } from './dict'
+
+export default function installPlugins(app) {
+  // 页签操作
+  app.config.globalProperties.$tab = tab
+  // 认证对象
+  app.config.globalProperties.$auth = auth
+  // 模态框对象
+  app.config.globalProperties.$modal = modal
+  // 处理数据
+  app.config.globalProperties.$xy = xy
+  //请求方法
+  app.config.globalProperties.$request = request
+  //数据字典
+  app.config.globalProperties.$useDict = useDict
+}

+ 0 - 0
plugins/modal.js → src/plugins/modal.js


+ 56 - 54
utils/request.js → src/plugins/request.js

@@ -14,9 +14,7 @@ let timeout = 10000
 const baseUrl = config.baseUrl
 
 const request = config => {
-	uni.showLoading({
-		title: '加载中'
-	});
+	console.log(config)
 	// 是否需要设置 token
 	const isToken = (config.headers || {}).isToken === false
 	config.header = config.header || {}
@@ -24,66 +22,69 @@ const request = config => {
 		config.header['satoken'] = getToken()
 		config.header['sysId'] = uni.getStorageSync('sysId')
 	}
+
 	// get请求映射params参数
 	if (config.params) {
 		let url = config.url + '?' + tansParams(config.params)
 		url = url.slice(0, -1)
 		config.url = url
 	}
+
 	return new Promise((resolve, reject) => {
 		uni.request({
-				method: config.method || 'get',
-				timeout: config.timeout || timeout,
-				url: config.baseUrl || baseUrl + config.url,
-				data: config.data,
-				header: config.header,
-				dataType: 'json'
-			}).then(response => {
-				uni.hideLoading();
-				let data=response.data;
-				saveLogs(config.url, config.data, data.data)
-				const code = data.code || 404
-				const msg = errorCode[code] || data.msg || errorCode['default']
-				if (code === 501) {
-					let pages = getCurrentPages()
-					let currentPage = pages[pages.length - 1].route
-					if (currentPage != '/pages/login') {
-						toast('登录状态已过期,请重新登陆!')
-						reject('无效的会话,或者会话已过期,请重新登录。')
-						useUserStore().LogOut().then(res => {
-							uni.reLaunch({
-								url: '/pages/login'
-							})
+			method: config.method || 'get',
+			url: config.baseUrl || baseUrl + config.url,
+			data: config.data,
+			header: config.header,
+			dataType: 'json'
+		}).then(response => {
+			console.log(config.url + '==============', response)
+			const {
+				data
+			} = response
+			saveLogs(config.url, config.data, data.data)
+			const code = data.code || 404
+			const msg = errorCode[code] || data.msg || errorCode['default']
+			if (code === 501) {
+				let pages = getCurrentPages()
+				let currentPage = pages[pages.length - 1].route
+				if (currentPage != 'pages/login') {
+					toast('登录状态已过期,请重新登陆!')
+					reject('无效的会话,或者会话已过期,请重新登录。')
+					useUserStore().LogOut().then(res => {
+						uni.reLaunch({
+							url: '/pages/login'
 						})
-					}
-				} else if (code === 500) {
-					toast(msg.substr(0, 50))
-					reject(msg)
-				} else if (code !== 200) {
-					toast(msg)
-					reject(code)
-				} else if (code === 404) {
-					toast('请求超时')
-					reject(code)
+					})
 				}
-				resolve(data.data)
-			})
-			.catch(error => {
-				saveLogs(config.url, config.data, error)
-				uni.hideLoading();
-				let {
-					message
-				} = error
-				if (message === 'Network Error') {
-					message = '网络连接超时'
-				} else if (message.includes('timeout')) {
-					message = '网络连接超时'
-				} else if (message.includes('Request failed with status code')) {
-					message = '系统接口' + message.substr(message.length - 3) + '异常'
-				}
-				toast(message)
-				reject(error)
-			})
+			} else if (code === 500) {
+				toast(msg.substr(0, 50))
+				reject(msg)
+			} else if (code !== 200) {
+				toast(msg)
+				reject(code)
+			} else if (code === 404) {
+				toast('请求超时')
+				reject(code)
+			}
+			resolve(data.data)
+		}).catch(error => {
+			console.log('err', error)
+			saveLogs(config.url, config.data, error)
+			uni.hideLoading();
+			let {
+				message
+			} = error
+			if (message === 'Network Error') {
+				message = '网络连接超时'
+			} else if (message.includes('timeout')) {
+				message = '网络连接超时'
+			} else if (message.includes('Request failed with status code')) {
+				message = '系统接口' + message.substr(message.length - 3) + '异常'
+			}
+			toast(message)
+			reject(error)
+		})
 	})
 }
 
@@ -130,6 +131,7 @@ export function downLoadReq(config) {
 		config.header['satoken'] = getToken()
 		config.header['sysId'] = uni.getStorageSync('sysId')
 	}
+
 	// get请求映射params参数
 	if (config.params) {
 		let url = config.url + '?' + tansParams(config.params)
@@ -145,7 +147,7 @@ export function downLoadReq(config) {
 			header: config.header,
 			dataType: 'json'
 		}).then(async (response) => {
-			let data =response.data
+			let data = response.data
 			uni.hideLoading();
 			const isLogin = await blobValidate(data)
 			if (isLogin) {

+ 0 - 0
plugins/tab.js → src/plugins/tab.js


+ 16 - 0
src/plugins/xy.js

@@ -0,0 +1,16 @@
+export default {
+  //金额分转换为元
+  delMoney(money) {
+    let newMoney = ''
+    if (money) {
+      if (typeof money == Number) {
+        newMoney = (money / 100).toFixed(2)
+      } else {
+        newMoney = (Number(money) / 100).toFixed(2)
+      }
+    } else {
+      newMoney = 0
+    }
+    return newMoney
+  },
+}

+ 6 - 0
src/shime-uni.d.ts

@@ -0,0 +1,6 @@
+export {};
+
+declare module "vue" {
+  type Hooks = App.AppInstance & Page.PageInstance;
+  interface ComponentCustomOptions extends Hooks {}
+}

+ 0 - 0
static/images/global/first-class.png → src/static/images/global/first-class.png


+ 0 - 0
static/images/global/second-class.png → src/static/images/global/second-class.png


+ 0 - 0
static/images/global/third-class.png → src/static/images/global/third-class.png


+ 0 - 0
static/images/global/total-before.png → src/static/images/global/total-before.png


+ 0 - 0
static/images/tabbar/commodity.png → src/static/images/tabbar/commodity.png


+ 0 - 0
static/images/tabbar/commodity_.png → src/static/images/tabbar/commodity_.png


+ 0 - 0
static/images/tabbar/equipment.png → src/static/images/tabbar/equipment.png


+ 0 - 0
static/images/tabbar/equipment_.png → src/static/images/tabbar/equipment_.png


+ 0 - 0
static/images/tabbar/home.png → src/static/images/tabbar/home.png


+ 0 - 0
static/images/tabbar/home_.png → src/static/images/tabbar/home_.png


+ 0 - 0
static/images/tabbar/mine.png → src/static/images/tabbar/mine.png


+ 0 - 0
static/images/tabbar/mine_.png → src/static/images/tabbar/mine_.png


+ 0 - 0
static/logo.png → src/static/logo.png


+ 0 - 3
static/scss/colorui.css → src/static/scss/colorui.css

@@ -16,9 +16,6 @@ body {
 	color: #333333;
 	font-family: Helvetica Neue, Helvetica, sans-serif;
 }
-li{
-	list-style: none;
-}
 view,
 scroll-view,
 swiper,

+ 0 - 0
static/scss/global.scss → src/static/scss/global.scss


+ 0 - 0
static/scss/index.scss → src/static/scss/index.scss


+ 56 - 0
src/stores/dict.js

@@ -0,0 +1,56 @@
+import { defineStore } from 'pinia'
+
+const useDictStore = defineStore('dict', {
+  state: () => ({
+    dict: new Array(),
+  }),
+  actions: {
+    // 获取字典
+    getDict(_key) {
+      if (_key == null && _key == '') {
+        return null
+      }
+      try {
+        for (let i = 0; i < this.dict.length; i++) {
+          if (this.dict[i].key == _key) {
+            return this.dict[i].value
+          }
+        }
+      } catch (e) {
+        return null
+      }
+    },
+    // 设置字典
+    setDict(_key, value) {
+      if (_key !== null && _key !== '') {
+        this.dict.push({
+          key: _key,
+          value: value,
+        })
+      }
+    },
+    // 删除字典
+    removeDict(_key) {
+      var bln = false
+      try {
+        for (let i = 0; i < this.dict.length; i++) {
+          if (this.dict[i].key == _key) {
+            this.dict.splice(i, 1)
+            return true
+          }
+        }
+      } catch (e) {
+        bln = false
+      }
+      return bln
+    },
+    // 清空字典
+    cleanDict() {
+      this.dict = new Array()
+    },
+    // 初始字典
+    initDict() {},
+  },
+})
+
+export default useDictStore

+ 5408 - 0
src/stores/permission.js

@@ -0,0 +1,5408 @@
+import { defineStore } from 'pinia'
+import storage from '@/utils/storage'
+import constant from '@/utils/constant'
+import request from '../utils/request.js'
+import { deepClone } from '@/utils/common.js'
+
+const usePermissionStore = defineStore('permission', {
+  state: () => ({
+    permissions_menu: storage.get(constant.permissions_menu),
+    permissions_btn: storage.get(constant.permissions_btn),
+  }),
+  actions: {
+    // 获取用户权限信息
+    GetPermis() {
+      return new Promise(async (resolve, reject) => {
+        let sysIds = await getSystemMenus()
+        if (sysIds.length > 0) {
+          request({
+            url: '/authorize/sys-menu/workMenuList',
+            data: {
+              sysId: sysIds, //平台端获取固定系统ID
+            },
+          })
+            .then((res) => {
+              let data = [
+                {
+                  id: 371447078143236,
+                  code: 'xy_system',
+                  name: '平台运维',
+                  icon: 'druid',
+                  menu: [
+                    {
+                      paterId: 8,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:role:remove',
+                      name: '删除角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/deleteRoleById,/sysRole/deleteRoleById',
+                      webJson: null,
+                      status: true,
+                      id: 10,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:53:44',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 3,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:menu:tree',
+                      name: '用户菜单树',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/sys-menu/workMenu,/authorize/sys-menu/workMenu',
+                      webJson: null,
+                      status: true,
+                      id: 100,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:47:09',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 3,
+                      sysId: 371447078143236,
+                      code: 'menu_work_list',
+                      name: '用户菜单集合',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/sys-menu/workMenuList,/authorize/sys-menu/workMenuList',
+                      webJson: null,
+                      status: true,
+                      id: 101,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:47:25',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 8,
+                      sysId: 371447078143236,
+                      code: 'role_menu',
+                      name: '分配菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 11,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:54:09',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 8,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:role:edit',
+                      name: '编辑角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 12,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:54:21',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 13,
+                      sysId: 371447078143236,
+                      code: 'system_data',
+                      name: '系统列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system/page,/sys-system/page',
+                      webJson: null,
+                      status: true,
+                      id: 14,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:56:10',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/system',
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 13,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:system:add',
+                      name: '添加系统',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system/save,/sys-system/save',
+                      webJson: null,
+                      status: true,
+                      id: 15,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:56:37',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 13,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:system:remove',
+                      name: '删除系统',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sys-system/del,/sys-system/del',
+                      webJson: null,
+                      status: true,
+                      id: 16,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:56:48',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 13,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:system:edit',
+                      name: '编辑系统',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system/update,/sys-system/update',
+                      webJson: null,
+                      status: true,
+                      id: 17,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:57:01',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 18,
+                      sysId: 371447078143236,
+                      code: 'dept_data',
+                      name: '部门列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/sysDept/tree/list,/authorize/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 19,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:54:41',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 19,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:dept:add',
+                      name: '添加部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 20,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:55:06',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 19,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:dept:remove',
+                      name: '删除部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/deleteById,/sysDept/deleteById',
+                      webJson: null,
+                      status: true,
+                      id: 21,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:55:16',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 19,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:dept:edit',
+                      name: '编辑部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 22,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:55:28',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 19,
+                      sysId: 371447078143236,
+                      code: 'dept_role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 23,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:55:44',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 24,
+                      sysId: 371447078143236,
+                      code: 'system_value_data',
+                      name: '系统属性列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system-value/page,/sys-system-value/page',
+                      webJson: null,
+                      status: true,
+                      id: 25,
+                      createTime: '2022-12-27 11:08:46',
+                      updateTime: '2023-02-03 14:57:22',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 24,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:systemAttribute:add',
+                      name: '添加系统属性',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system-value/save,/sys-system-value/save',
+                      webJson: null,
+                      status: true,
+                      id: 26,
+                      createTime: '2022-12-27 11:08:46',
+                      updateTime: '2023-02-03 14:57:33',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 24,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:systemAttribute:remove',
+                      name: '删除系统属性',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system-value/del,/sys-system-value/del',
+                      webJson: null,
+                      status: true,
+                      id: 27,
+                      createTime: '2022-12-27 11:08:46',
+                      updateTime: '2023-02-03 14:57:44',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 24,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:systemAttribute:edit',
+                      name: '编辑系统属性',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-system-value/update,/sys-system-value/update',
+                      webJson: null,
+                      status: true,
+                      id: 28,
+                      createTime: '2022-12-27 11:08:46',
+                      updateTime: '2023-02-03 14:57:59',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 2,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:menu:list',
+                      name: '菜单列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys-menu/menu,/authorize/sys-menu/menu',
+                      webJson: null,
+                      status: true,
+                      id: 3,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:45:57',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 14,
+                      sysId: 371447078143236,
+                      code: 'system_list',
+                      name: '登录人所属系统列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/sys-system/list,/authorize/sys-system/list',
+                      webJson: null,
+                      status: true,
+                      id: 300,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:56:17',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371699998954757,
+                      sysId: 371447078143236,
+                      code: 'myMsg',
+                      name: '我的消息',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371701690881285,
+                      createTime: '2023-01-05 09:58:05',
+                      updateTime: '2023-01-14 11:43:37',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/myMsg',
+                      orders: 0,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371706318910725,
+                      sysId: 371447078143236,
+                      code: 'appManager',
+                      name: '应用管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371707431200005,
+                      createTime: '2023-01-05 10:21:27',
+                      updateTime: '2023-01-05 10:31:15',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/app',
+                      orders: 0,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371706318910725,
+                      sysId: 371447078143236,
+                      code: 'channel',
+                      name: '通道管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371709221025029,
+                      createTime: '2023-01-05 10:28:44',
+                      updateTime: '2023-01-05 18:47:34',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/channel',
+                      orders: 0,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371707431200005,
+                      sysId: 371447078143236,
+                      code: 'appData',
+                      name: '应用列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/msgApp/page,/msg/msgApp/page,/dev-msg/msgApp/page',
+                      webJson: null,
+                      status: true,
+                      id: 371801660855557,
+                      createTime: '2023-01-05 16:44:52',
+                      updateTime: '2023-01-09 15:53:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route:
+                        '/msgApp/page,/msg/msgApp/page,/dev-authorize/msgApp/page',
+                      orders: 0,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371801660855557,
+                      sysId: 371447078143236,
+                      code: 'app_add',
+                      name: '添加应用',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:app:add',
+                      webJson: null,
+                      status: true,
+                      id: 371801872143621,
+                      createTime: '2023-01-05 16:45:43',
+                      updateTime: '2023-01-05 16:45:43',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371801660855557,
+                      sysId: 371447078143236,
+                      code: 'app_remove',
+                      name: '删除应用',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:app:remove',
+                      webJson: null,
+                      status: true,
+                      id: 371802378732805,
+                      createTime: '2023-01-05 16:47:47',
+                      updateTime: '2023-01-05 16:47:47',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371801660855557,
+                      sysId: 371447078143236,
+                      code: 'app_edit',
+                      name: '修改应用',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:app:edit',
+                      webJson: null,
+                      status: true,
+                      id: 371802510132485,
+                      createTime: '2023-01-05 16:48:19',
+                      updateTime: '2023-01-28 15:09:03',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371709221025029,
+                      sysId: 371447078143236,
+                      code: 'channel_data',
+                      name: '通道列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/msgChannel/page,/msg/msgChannel/page,/dev-msg/msgChannel/page',
+                      webJson: null,
+                      status: true,
+                      id: 373204479202565,
+                      createTime: '2023-01-09 15:52:57',
+                      updateTime: '2023-01-09 15:52:57',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373204479202565,
+                      sysId: 371447078143236,
+                      code: 'channel_add',
+                      name: '添加通道',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:channel:add',
+                      webJson: null,
+                      status: true,
+                      id: 373204885497093,
+                      createTime: '2023-01-09 15:54:36',
+                      updateTime: '2023-01-09 20:11:30',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373204479202565,
+                      sysId: 371447078143236,
+                      code: 'channel_remove',
+                      name: '删除通道',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:channel:remove',
+                      webJson: null,
+                      status: true,
+                      id: 373205108028677,
+                      createTime: '2023-01-09 15:55:30',
+                      updateTime: '2023-01-09 20:11:37',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373204479202565,
+                      sysId: 371447078143236,
+                      code: 'channel_edit',
+                      name: '修改通道',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:channel:edit',
+                      webJson: null,
+                      status: true,
+                      id: 373205331277061,
+                      createTime: '2023-01-09 15:56:25',
+                      updateTime: '2023-01-09 20:11:44',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374259829974277,
+                      sysId: 371447078143236,
+                      code: 'ali_sms_template_list',
+                      name: '阿里云短信模板列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/smsTemplate/aliyun/page,/msg/smsTemplate/aliyun/page,/dev-msg/smsTemplate/aliyun/page',
+                      webJson: null,
+                      status: true,
+                      id: 374261034001669,
+                      createTime: '2023-01-12 15:32:05',
+                      updateTime: '2023-01-12 15:32:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374262705898757,
+                      sysId: 371447078143236,
+                      code: 'xy_system:algorithm:manage',
+                      name: '平台管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374264385287429,
+                      createTime: '2023-01-12 15:45:43',
+                      updateTime: '2023-01-14 13:48:52',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/algorithm/manage',
+                      orders: 0,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374544115201285,
+                      sysId: 371447078143236,
+                      code: 'add_email_template',
+                      name: '添加模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:template:email:add',
+                      webJson: null,
+                      status: true,
+                      id: 374544411256069,
+                      createTime: '2023-01-13 10:45:09',
+                      updateTime: '2023-01-13 10:45:09',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374544115201285,
+                      sysId: 371447078143236,
+                      code: 'edit_email_template',
+                      name: '修改模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:template:email:edit',
+                      webJson: null,
+                      status: true,
+                      id: 374544539337989,
+                      createTime: '2023-01-13 10:45:40',
+                      updateTime: '2023-01-13 10:45:40',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374544115201285,
+                      sysId: 371447078143236,
+                      code: 'email_template_remove',
+                      name: '删除模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:template:email:remove',
+                      webJson: null,
+                      status: true,
+                      id: 374544663004421,
+                      createTime: '2023-01-13 10:46:10',
+                      updateTime: '2023-01-13 10:46:25',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods:category',
+                      name: '商品分类',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374888508056837,
+                      createTime: '2023-01-14 10:05:17',
+                      updateTime: '2023-01-14 13:48:29',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods/category',
+                      orders: 0,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374262705898757,
+                      sysId: 371447078143236,
+                      code: 'xy_system:algorithm:goods',
+                      name: '商品库',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374889410323717,
+                      createTime: '2023-01-14 10:08:57',
+                      updateTime: '2023-01-14 13:49:04',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/algorithm/goods',
+                      orders: 0,
+                      icon: 'icon',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374337132729605,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:deviceList',
+                      name: '设备列表',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-info/page,/device-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 374903172805893,
+                      createTime: '2023-01-14 11:04:57',
+                      updateTime: '2023-02-03 14:42:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceList',
+                      orders: 0,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'ywHome',
+                      name: '首页',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'index',
+                      webJson: null,
+                      status: true,
+                      id: 374946866341125,
+                      createTime: '2023-01-14 14:02:44',
+                      updateTime: '2023-02-14 10:02:18',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/home',
+                      orders: 0,
+                      icon: 'monitor',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods:brand',
+                      name: '品牌管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 378495281894661,
+                      createTime: '2023-01-24 14:41:17',
+                      updateTime: '2023-02-27 02:15:02',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods/brand',
+                      orders: 0,
+                      icon: 'icon-brand',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods:unit',
+                      name: '包装&单位',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 378495971476741,
+                      createTime: '2023-01-24 14:44:05',
+                      updateTime: '2023-02-27 02:15:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods/unit',
+                      orders: 0,
+                      icon: 'icon-pack',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods:taste',
+                      name: '口味管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 378500165465349,
+                      createTime: '2023-01-24 15:01:09',
+                      updateTime: '2023-02-27 02:17:02',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods/taste',
+                      orders: 0,
+                      icon: 'github',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods:tag',
+                      name: '标签管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 378500482958597,
+                      createTime: '2023-01-24 15:02:26',
+                      updateTime: '2023-02-27 02:17:08',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods/tag',
+                      orders: 0,
+                      icon: 'icon-tags',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380623357986053,
+                      sysId: 371447078143236,
+                      code: 'msgTagList',
+                      name: '标签列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380623523693829,
+                      createTime: '2023-01-30 15:01:07',
+                      updateTime: '2023-01-30 15:01:07',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380623523693829,
+                      sysId: 371447078143236,
+                      code: 'msg_tag_add',
+                      name: '添加标签',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380623667561733,
+                      createTime: '2023-01-30 15:01:42',
+                      updateTime: '2023-01-30 15:01:42',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380623523693829,
+                      sysId: 371447078143236,
+                      code: 'msg_tag_remove',
+                      name: '删除标签',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380623723287813,
+                      createTime: '2023-01-30 15:01:56',
+                      updateTime: '2023-01-30 15:01:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380623523693829,
+                      sysId: 371447078143236,
+                      code: 'msg_tag_edit',
+                      name: '修改标签',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380623856772357,
+                      createTime: '2023-01-30 15:02:28',
+                      updateTime: '2023-01-30 15:02:28',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380683737470213,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dict:add',
+                      name: '新增字典',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/sys-dict/save,/sys-dict/save',
+                      webJson: null,
+                      status: true,
+                      id: 380683989869829,
+                      createTime: '2023-01-30 19:07:09',
+                      updateTime: '2023-02-03 15:06:08',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380691639842053,
+                      sysId: 371447078143236,
+                      code: 'msg_config_edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380691897750789,
+                      createTime: '2023-01-30 19:39:20',
+                      updateTime: '2023-01-30 19:39:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380691639842053,
+                      sysId: 371447078143236,
+                      code: 'msg_config_add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380691976279301,
+                      createTime: '2023-01-30 19:39:39',
+                      updateTime: '2023-01-30 19:40:03',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380691639842053,
+                      sysId: 371447078143236,
+                      code: 'msg_config_remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380692133020933,
+                      createTime: '2023-01-30 19:40:17',
+                      updateTime: '2023-01-30 19:40:17',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371702610027781,
+                      sysId: 371447078143236,
+                      code: 'notifyList',
+                      name: '列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381689685406981,
+                      createTime: '2023-02-02 15:19:20',
+                      updateTime: '2023-02-02 15:19:20',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381689685406981,
+                      sysId: 371447078143236,
+                      code: 'msg_notify_add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381689971680517,
+                      createTime: '2023-02-02 15:20:30',
+                      updateTime: '2023-02-02 15:20:30',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381689685406981,
+                      sysId: 371447078143236,
+                      code: 'msg_notify_edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381690048615685,
+                      createTime: '2023-02-02 15:20:49',
+                      updateTime: '2023-02-02 15:20:49',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381689685406981,
+                      sysId: 371447078143236,
+                      code: 'msg_notify_cancel',
+                      name: '撤销',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381690175657221,
+                      createTime: '2023-02-02 15:21:20',
+                      updateTime: '2023-02-02 15:21:20',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381689685406981,
+                      sysId: 371447078143236,
+                      code: 'msg_notify_remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381690696148229,
+                      createTime: '2023-02-02 15:23:27',
+                      updateTime: '2023-02-02 15:23:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380691639842053,
+                      sysId: 371447078143236,
+                      code: 'msg_config_test',
+                      name: '发送测试',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381986547655941,
+                      createTime: '2023-02-03 11:27:16',
+                      updateTime: '2023-02-03 11:27:16',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374903172805893,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:exportqrcode',
+                      name: '二维码',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-create-ids/exportQrCode,/device/device-quality/getQrCode',
+                      webJson: null,
+                      status: true,
+                      id: 383175278511365,
+                      createTime: '2023-02-06 20:04:14',
+                      updateTime: '2023-02-06 20:04:14',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374903172805893,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:restart',
+                      name: '重启',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/mqtt/senCommand',
+                      webJson: null,
+                      status: true,
+                      id: 383473707001093,
+                      createTime: '2023-02-07 16:18:32',
+                      updateTime: '2023-02-07 16:18:32',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338538439941,
+                      sysId: 371447078143236,
+                      code: 'xy_system:logs:deviceLogs',
+                      name: '机器日志查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'f',
+                      webJson: null,
+                      status: true,
+                      id: 396626005026053,
+                      createTime: '2023-03-16 20:15:23',
+                      updateTime: '2023-03-16 20:15:23',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/logs/deviceLogs',
+                      orders: 0,
+                      icon: 'bug',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 3,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:menu:add',
+                      name: '添加菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sys-menu/save,/sys-menu/save',
+                      webJson: null,
+                      status: true,
+                      id: 4,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:46:23',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:agreement',
+                      name: '协议管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 416664218637573,
+                      createTime: '2023-05-12 11:11:05',
+                      updateTime: '2023-05-12 11:11:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/agreement',
+                      orders: 0,
+                      icon: '安全对象',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 3,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:menu:remove',
+                      name: '删除菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sys-menu/del,/sys-menu/del',
+                      webJson: null,
+                      status: true,
+                      id: 5,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:46:37',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 3,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:menu:edit',
+                      name: '编辑菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sys-menu/update,/sys-menu/update',
+                      webJson: null,
+                      status: true,
+                      id: 6,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:46:54',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 7,
+                      sysId: 371447078143236,
+                      code: 'role_data',
+                      name: '角色列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 8,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:52:25',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 8,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:role:add',
+                      name: '添加角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 9,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-02-03 14:52:43',
+                      createUser: null,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'menu',
+                      name: '菜单管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sys-menu/menu,/sys-menu/menu',
+                      webJson: null,
+                      status: true,
+                      id: 2,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-02-03 14:44:53',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/menu',
+                      orders: 1,
+                      icon: 'tree-table',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371699998954757,
+                      sysId: 371447078143236,
+                      code: 'notify',
+                      name: '系统公告',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371702610027781,
+                      createTime: '2023-01-05 10:01:50',
+                      updateTime: '2023-02-02 15:16:31',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/notify',
+                      orders: 1,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373919153329413,
+                      sysId: 371447078143236,
+                      code: 'wechatMpTemplate',
+                      name: '微信公众号',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 373919566054661,
+                      createTime: '2023-01-11 16:22:39',
+                      updateTime: '2023-01-11 16:22:39',
+                      createUser: 1,
+                      updateUser: 1,
+                      route:
+                        'xy_system/msg/sysManager/template/wechatMpTemplate',
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373919566054661,
+                      sysId: 371447078143236,
+                      code: 'wechatMpData',
+                      name: '微信公众号消息模板列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/wechatTemplate/mp/page,/msg/wechatTemplate/mp/page,/dev-msg/wechatTemplate/mp/page',
+                      webJson: null,
+                      status: true,
+                      id: 373921028113669,
+                      createTime: '2023-01-11 16:28:36',
+                      updateTime: '2023-01-11 20:07:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route:
+                        '/msgChannel/page,/msg/msgChannel/page,/dev-msg/msgChannel/page',
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373921028113669,
+                      sysId: 371447078143236,
+                      code: 'msg_mp_sync',
+                      name: '同步模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:mp:sync',
+                      webJson: null,
+                      status: true,
+                      id: 374191255971077,
+                      createTime: '2023-01-12 10:48:09',
+                      updateTime: '2023-01-12 14:47:08',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374249389085957,
+                      sysId: 371447078143236,
+                      code: 'wechat_mini_list',
+                      name: '订阅消息模板列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/wechatTemplate/mini/page,/msg/wechatTemplate/mini/page,/dev-msg/wechatTemplate/mini/page',
+                      webJson: null,
+                      status: true,
+                      id: 374249730741509,
+                      createTime: '2023-01-12 14:46:05',
+                      updateTime: '2023-01-12 14:46:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374249730741509,
+                      sysId: 371447078143236,
+                      code: 'sync_wx_mini',
+                      name: '同步模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:mini:sync',
+                      webJson: null,
+                      status: true,
+                      id: 374250203305221,
+                      createTime: '2023-01-12 14:48:01',
+                      updateTime: '2023-01-12 14:48:01',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'deviceManager',
+                      name: '设备管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374337132729605,
+                      createTime: '2023-01-12 20:41:44',
+                      updateTime: '2023-01-14 14:02:57',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/deviceManager',
+                      orders: 1,
+                      icon: 'component',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374543693325573,
+                      sysId: 371447078143236,
+                      code: 'email_template_list',
+                      name: '邮件列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/msgTemplateEmail/page,/msg/msgTemplateEmail/page,/dev-msg/msgTemplateEmail/page',
+                      webJson: null,
+                      status: true,
+                      id: 374544115201285,
+                      createTime: '2023-01-13 10:43:56',
+                      updateTime: '2023-01-13 10:43:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374337132729605,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:deviceNetHistory',
+                      name: '设备联网查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-net-record/page,/device-net-record/page',
+                      webJson: null,
+                      status: true,
+                      id: 374895534490885,
+                      createTime: '2023-01-14 10:33:52',
+                      updateTime: '2023-02-03 14:43:40',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceNetHistory',
+                      orders: 1,
+                      icon: 'swagger',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374887604614405,
+                      sysId: 371447078143236,
+                      code: 'xy_system:goods',
+                      name: '商品管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 379170449622277,
+                      createTime: '2023-01-26 12:28:33',
+                      updateTime: '2023-02-27 02:16:32',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods',
+                      orders: 1,
+                      icon: 'redis',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371801660855557,
+                      sysId: 371447078143236,
+                      code: 'app_tag_add',
+                      name: '新增标签',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 379949525464325,
+                      createTime: '2023-01-28 17:18:37',
+                      updateTime: '2023-01-28 17:18:37',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user',
+                      name: '用户管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 380290118964485,
+                      createTime: '2023-01-29 16:24:29',
+                      updateTime: '2023-02-03 15:01:36',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager/user',
+                      orders: 1,
+                      icon: 'user',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373548401587461,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:user:add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 380315548050693,
+                      createTime: '2023-01-29 18:07:58',
+                      updateTime: '2023-02-03 14:48:35',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380683737470213,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dict:remove',
+                      name: '删除字典',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/sys-dict/del,/sys-dict/del',
+                      webJson: null,
+                      status: true,
+                      id: 380684147115269,
+                      createTime: '2023-01-30 19:07:48',
+                      updateTime: '2023-02-03 15:06:18',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371703185306885,
+                      sysId: 371447078143236,
+                      code: 'msgConfigData',
+                      name: '列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380691639842053,
+                      createTime: '2023-01-30 19:38:17',
+                      updateTime: '2023-01-30 19:38:17',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290118964485,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user:add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/save,/user-info/save',
+                      webJson: null,
+                      status: true,
+                      id: 380926236628229,
+                      createTime: '2023-01-31 11:32:51',
+                      updateTime: '2023-02-03 15:01:59',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290537981189,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:role:list',
+                      name: '角色列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 380927334892805,
+                      createTime: '2023-01-31 11:37:20',
+                      updateTime: '2023-02-03 15:03:29',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290820596997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept:list',
+                      name: '部门列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 380928581575941,
+                      createTime: '2023-01-31 11:42:24',
+                      updateTime: '2023-02-03 15:04:51',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374903172805893,
+                      sysId: 371447078143236,
+                      code: 'xy_data:deviceManager:deviceList:export',
+                      name: '导出',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/device-info/exportDevices',
+                      webJson: null,
+                      status: true,
+                      id: 390533488121093,
+                      createTime: '2023-02-27 07:04:52',
+                      updateTime: '2023-02-27 07:04:52',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374337132729605,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:deviceEvents',
+                      name: '设备事件查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/device-event-msg/page',
+                      webJson: null,
+                      status: true,
+                      id: 410702632219909,
+                      createTime: '2023-04-25 14:53:19',
+                      updateTime: '2023-04-27 09:22:00',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceEvents',
+                      orders: 1,
+                      icon: 'component',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338538439941,
+                      sysId: 371447078143236,
+                      code: 'xy_system:logs:optLogs',
+                      name: '操作日志',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/log-operate/page',
+                      webJson: null,
+                      status: true,
+                      id: 421265419126021,
+                      createTime: '2023-05-25 11:13:25',
+                      updateTime: '2023-05-25 11:13:25',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/logs/optLogs',
+                      orders: 1,
+                      icon: 'IP事件统计',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371699998954757,
+                      sysId: 371447078143236,
+                      code: 'sysMsg',
+                      name: '系统消息',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371702964192517,
+                      createTime: '2023-01-05 10:03:16',
+                      updateTime: '2023-02-02 15:00:01',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysMsg',
+                      orders: 2,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'user',
+                      name: '权限系统用户管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 373548401587461,
+                      createTime: '2023-01-10 15:12:22',
+                      updateTime: '2023-02-06 20:01:15',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/user',
+                      orders: 2,
+                      icon: 'user',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373919153329413,
+                      sysId: 371447078143236,
+                      code: 'wx_mini',
+                      name: '微信小程序',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374249389085957,
+                      createTime: '2023-01-12 14:44:42',
+                      updateTime: '2023-01-12 14:44:42',
+                      createUser: 1,
+                      updateUser: 1,
+                      route:
+                        'xy_system/msg/sysManager/template/wechatMiniTemplate',
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374261034001669,
+                      sysId: 371447078143236,
+                      code: 'alisms_sync',
+                      name: '同步模板',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: 'msg:alisms:sync',
+                      webJson: null,
+                      status: true,
+                      id: 374261242266885,
+                      createTime: '2023-01-12 15:32:56',
+                      updateTime: '2023-01-12 15:32:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'goods',
+                      name: '商品库管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374887604614405,
+                      createTime: '2023-01-14 10:01:36',
+                      updateTime: '2023-01-14 11:42:48',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/goods',
+                      orders: 2,
+                      icon: 'redis',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374337132729605,
+                      sysId: 371447078143236,
+                      code: 'xy_system:devices:deviceErrorHistory',
+                      name: '设备故障查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-errors-record/page,/device-errors-record/page',
+                      webJson: null,
+                      status: true,
+                      id: 374895765185797,
+                      createTime: '2023-01-14 10:34:48',
+                      updateTime: '2023-02-03 14:43:32',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceErrorHistory',
+                      orders: 2,
+                      icon: 'bug',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371801660855557,
+                      sysId: 371447078143236,
+                      code: 'app_tag_remove',
+                      name: '删除标签',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 379949584393477,
+                      createTime: '2023-01-28 17:18:51',
+                      updateTime: '2023-01-28 17:18:51',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:role',
+                      name: '角色管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 380290537981189,
+                      createTime: '2023-01-29 16:26:12',
+                      updateTime: '2023-02-03 15:03:15',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager/role',
+                      orders: 2,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373548401587461,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:user:edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/update,/user-info/update',
+                      webJson: null,
+                      status: true,
+                      id: 380315626022149,
+                      createTime: '2023-01-29 18:08:17',
+                      updateTime: '2023-02-03 14:49:06',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371706318910725,
+                      sysId: 371447078143236,
+                      code: 'msgTag',
+                      name: '标签管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380623357986053,
+                      createTime: '2023-01-30 15:00:27',
+                      updateTime: '2023-01-30 15:27:55',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/tag',
+                      orders: 2,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380683737470213,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dict:edit',
+                      name: '编辑字典',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/sys-dict/update,/sys-dict/update',
+                      webJson: null,
+                      status: true,
+                      id: 380684314768645,
+                      createTime: '2023-01-30 19:08:29',
+                      updateTime: '2023-02-03 15:06:31',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290118964485,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user:edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/update,/user-info/update',
+                      webJson: null,
+                      status: true,
+                      id: 380926420104453,
+                      createTime: '2023-01-31 11:33:36',
+                      updateTime: '2023-02-03 15:02:13',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290537981189,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:role:add',
+                      name: '添加角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380927521539333,
+                      createTime: '2023-01-31 11:38:05',
+                      updateTime: '2023-02-03 15:03:41',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290820596997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept:add',
+                      name: '添加部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380928692630789,
+                      createTime: '2023-01-31 11:42:51',
+                      updateTime: '2023-02-03 15:05:01',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371699998954757,
+                      sysId: 371447078143236,
+                      code: 'msgConfig',
+                      name: '消息配置',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371703185306885,
+                      createTime: '2023-01-05 10:04:10',
+                      updateTime: '2023-01-30 19:36:54',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/msgConfig',
+                      orders: 3,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371706318910725,
+                      sysId: 371447078143236,
+                      code: 'msgTemplate',
+                      name: '模板管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 373919153329413,
+                      createTime: '2023-01-11 16:20:58',
+                      updateTime: '2023-01-30 17:26:06',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/template',
+                      orders: 3,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373919153329413,
+                      sysId: 371447078143236,
+                      code: 'ali_sms',
+                      name: '阿里云短信',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374259829974277,
+                      createTime: '2023-01-12 15:27:11',
+                      updateTime: '2023-01-12 15:27:11',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/template/aliSms',
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'algorithm',
+                      name: '算法平台',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374262705898757,
+                      createTime: '2023-01-12 15:38:53',
+                      updateTime: '2023-01-14 11:43:07',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/algorithm',
+                      orders: 3,
+                      icon: 'component',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept',
+                      name: '部门管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 380290820596997,
+                      createTime: '2023-01-29 16:27:21',
+                      updateTime: '2023-02-03 15:04:44',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager/dept',
+                      orders: 3,
+                      icon: 'tree',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373548401587461,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:user:remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380532753241349,
+                      createTime: '2023-01-30 08:51:46',
+                      updateTime: '2023-01-30 08:51:46',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380683737470213,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dict:export',
+                      name: '导出',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380684443895045,
+                      createTime: '2023-01-30 19:09:00',
+                      updateTime: '2023-01-30 19:09:00',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290118964485,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user:remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380926616835333,
+                      createTime: '2023-01-31 11:34:24',
+                      updateTime: '2023-01-31 11:34:24',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290537981189,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:role:remove',
+                      name: '删除角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/deleteRoleById,/sysRole/deleteRoleById',
+                      webJson: null,
+                      status: true,
+                      id: 380927680222469,
+                      createTime: '2023-01-31 11:38:44',
+                      updateTime: '2023-02-03 15:03:53',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290820596997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept:remove',
+                      name: '删除部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/deleteById,/sysDept/deleteById',
+                      webJson: null,
+                      status: true,
+                      id: 380928808654085,
+                      createTime: '2023-01-31 11:43:19',
+                      updateTime: '2023-02-03 15:05:13',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'role',
+                      name: '角色管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/sys-menu/menu,/authorize/sys-menu/menu,/dev-authorize/sys-menu/menu',
+                      webJson: null,
+                      status: true,
+                      id: 7,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-01-14 11:46:01',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/role',
+                      orders: 3,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'dept',
+                      name: '部门管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 18,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-01-14 11:47:29',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/dept',
+                      orders: 4,
+                      icon: 'tree',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'tasks',
+                      name: '任务调度',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374338353542405,
+                      createTime: '2023-01-12 20:46:42',
+                      updateTime: '2023-01-14 14:03:39',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/tasks',
+                      orders: 4,
+                      icon: 'documentation',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373919153329413,
+                      sysId: 371447078143236,
+                      code: 'email_temlate',
+                      name: '邮件',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374543693325573,
+                      createTime: '2023-01-13 10:42:13',
+                      updateTime: '2023-01-13 10:42:13',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager/template/email',
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373548401587461,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:user:role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 380532858225925,
+                      createTime: '2023-01-30 08:52:12',
+                      updateTime: '2023-02-03 14:49:54',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dict',
+                      name: '数据字典',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/sys-dict/page,/sys-dict/page',
+                      webJson: null,
+                      status: true,
+                      id: 380683737470213,
+                      createTime: '2023-01-30 19:06:08',
+                      updateTime: '2023-02-03 15:05:59',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager/dict',
+                      orders: 4,
+                      icon: 'dict',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290118964485,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user:role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 380926835639557,
+                      createTime: '2023-01-31 11:35:18',
+                      updateTime: '2023-02-03 15:02:39',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290537981189,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:role:allot_menu',
+                      name: '分配菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380928131663109,
+                      createTime: '2023-01-31 11:40:34',
+                      updateTime: '2023-02-03 15:04:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290820596997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept:edit',
+                      name: '编辑部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380928884540677,
+                      createTime: '2023-01-31 11:43:38',
+                      updateTime: '2023-02-03 15:05:23',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'system',
+                      name: '系统管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 13,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-01-14 11:48:08',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/system',
+                      orders: 5,
+                      icon: 'example',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'msg',
+                      name: '消息中心',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371699998954757,
+                      createTime: '2023-01-05 09:51:12',
+                      updateTime: '2023-01-14 14:04:01',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg',
+                      orders: 5,
+                      icon: 'message',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 373548401587461,
+                      sysId: 371447078143236,
+                      code: 'xy_system:authorize:user:dept',
+                      name: '分配部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 380532961875205,
+                      createTime: '2023-01-30 08:52:37',
+                      updateTime: '2023-02-03 14:49:57',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290118964485,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:user:dept',
+                      name: '分配部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 380926945998085,
+                      createTime: '2023-01-31 11:35:45',
+                      updateTime: '2023-02-03 15:02:46',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290537981189,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:role:edit',
+                      name: '编辑角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380928280925445,
+                      createTime: '2023-01-31 11:41:11',
+                      updateTime: '2023-02-03 15:04:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 380290820596997,
+                      sysId: 371447078143236,
+                      code: 'xy_system:systemManager:dept:allot_role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 380929056240901,
+                      createTime: '2023-01-31 11:44:20',
+                      updateTime: '2023-02-03 15:05:35',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374338988020997,
+                      sysId: 371447078143236,
+                      code: 'icon',
+                      name: '图标管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'icon',
+                      webJson: null,
+                      status: true,
+                      id: 387282221278469,
+                      createTime: '2023-02-18 10:35:26',
+                      updateTime: '2023-02-18 10:35:26',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager/icon',
+                      orders: 5,
+                      icon: 'icon',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'authorize',
+                      name: '权限管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 1,
+                      createTime: '2022-12-27 11:08:44',
+                      updateTime: '2023-01-14 14:04:12',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize',
+                      orders: 6,
+                      icon: 'druid',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'system_value',
+                      name: '系统属性',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 24,
+                      createTime: '2022-12-27 11:08:45',
+                      updateTime: '2023-01-14 11:49:40',
+                      createUser: null,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/systemAttribute',
+                      orders: 6,
+                      icon: 'drag',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 1,
+                      sysId: 371447078143236,
+                      code: 'guide',
+                      name: '引导提示',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/ui-guide/page,/ui-guide/page',
+                      webJson: null,
+                      status: true,
+                      id: 371843020170501,
+                      createTime: '2023-01-05 19:33:09',
+                      updateTime: '2023-02-03 14:58:22',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/authorize/guide/index',
+                      orders: 7,
+                      icon: 'language',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'logs',
+                      name: '日志管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374338538439941,
+                      createTime: '2023-01-12 20:47:27',
+                      updateTime: '2023-01-14 11:44:50',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/logs',
+                      orders: 7,
+                      icon: 'log',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 371447078143236,
+                      code: 'ywSystemManager',
+                      name: '系统管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374338988020997,
+                      createTime: '2023-01-12 20:49:16',
+                      updateTime: '2023-01-14 11:44:55',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/systemManager',
+                      orders: 8,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 371699998954757,
+                      sysId: 371447078143236,
+                      code: 'systemManager',
+                      name: '系统管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 371706318910725,
+                      createTime: '2023-01-05 10:16:55',
+                      updateTime: '2023-01-28 13:19:18',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/msg/sysManager',
+                      orders: 99,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                  ],
+                },
+                {
+                  id: 374535658992901,
+                  code: 'xy_quality',
+                  name: '质检&出厂',
+                  icon: 'edit',
+                  menu: [
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:qualityCheck',
+                      name: '合格审核',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/update,/device-quality/update',
+                      webJson: null,
+                      status: true,
+                      id: 380245440898309,
+                      createTime: '2023-01-29 13:22:42',
+                      updateTime: '2023-02-03 15:10:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:reCheck',
+                      name: '重新质检',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/save,/device-quality/save',
+                      webJson: null,
+                      status: true,
+                      id: 380245540721925,
+                      createTime: '2023-01-29 13:23:06',
+                      updateTime: '2023-02-03 15:10:08',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:preFactory',
+                      name: '出厂预处理',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 380245643429125,
+                      createTime: '2023-01-29 13:23:31',
+                      updateTime: '2023-01-29 13:23:31',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:deviceQrcode',
+                      name: '机器二维码',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/getQrCode,/device/device-quality/exportQrCode',
+                      webJson: null,
+                      status: true,
+                      id: 380245727266053,
+                      createTime: '2023-01-29 13:23:52',
+                      updateTime: '2023-02-03 15:09:38',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_system',
+                      name: '质检-系统检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246012839173,
+                      createTime: '2023-01-29 13:25:01',
+                      updateTime: '2023-02-03 15:11:33',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_setting',
+                      name: '质检-设置参数检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246231729413,
+                      createTime: '2023-01-29 13:25:55',
+                      updateTime: '2023-02-03 15:11:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_temperature',
+                      name: '质检-温控检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246337807621,
+                      createTime: '2023-01-29 13:26:21',
+                      updateTime: '2023-02-03 15:11:24',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_locker',
+                      name: '质检-门锁检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246456407301,
+                      createTime: '2023-01-29 13:26:50',
+                      updateTime: '2023-02-03 15:11:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_trade',
+                      name: '质检-交易检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246585648389,
+                      createTime: '2023-01-29 13:27:21',
+                      updateTime: '2023-02-03 15:11:19',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:check_imitateTest',
+                      name: '质检-自动交易检查',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/rest,/device-quality/rest',
+                      webJson: null,
+                      status: true,
+                      id: 380246782862597,
+                      createTime: '2023-01-29 13:28:09',
+                      updateTime: '2023-02-03 15:11:11',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:rowEdit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/update,/device-quality/update',
+                      webJson: null,
+                      status: true,
+                      id: 380254052500741,
+                      createTime: '2023-01-29 13:57:44',
+                      updateTime: '2023-02-03 15:09:16',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878996763909,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:report',
+                      name: '质检报告',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381750725457157,
+                      createTime: '2023-02-02 19:27:43',
+                      updateTime: '2023-02-02 19:27:43',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878785475845,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:registerDevice',
+                      name: '绑定设备',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/device-register/save',
+                      webJson: null,
+                      status: true,
+                      id: 386559696692485,
+                      createTime: '2023-02-16 09:35:28',
+                      updateTime: '2023-02-16 09:35:28',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374878785475845,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality:unRegisterDevice',
+                      name: '设备解绑',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/device-register/updateSn',
+                      webJson: null,
+                      status: true,
+                      id: 388816533955845,
+                      createTime: '2023-02-22 10:38:34',
+                      updateTime: '2023-02-23 02:45:59',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374645410333957,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:createDeviceid:deviceQrcode',
+                      name: '机器二维码',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/device-quality/getQrCode',
+                      webJson: null,
+                      status: true,
+                      id: 388839068022021,
+                      createTime: '2023-02-22 12:10:15',
+                      updateTime: '2023-02-22 12:10:15',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535658992901,
+                      code: 'createDevices',
+                      name: '设备管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374644570813701,
+                      createTime: '2023-01-13 17:32:42',
+                      updateTime: '2023-01-14 13:33:30',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/createDeviceid',
+                      orders: 1,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374644570813701,
+                      sysId: 374535658992901,
+                      code: 'createDevice',
+                      name: '生成机器号',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-create-ids/page,/device-create-ids/page',
+                      webJson: null,
+                      status: true,
+                      id: 374645410333957,
+                      createTime: '2023-01-13 17:36:07',
+                      updateTime: '2023-02-03 15:07:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/createDeviceid',
+                      orders: 1,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374645410333957,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:createDeviceid:create',
+                      name: '批量生成机器号',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-create-ids/save,/device-create-ids/save',
+                      webJson: null,
+                      status: true,
+                      id: 374878471910661,
+                      createTime: '2023-01-14 09:24:26',
+                      updateTime: '2023-02-03 15:07:33',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027445748997,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user',
+                      name: '用户管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 381027776787717,
+                      createTime: '2023-01-31 18:26:02',
+                      updateTime: '2023-02-03 15:13:23',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/systemManager/user',
+                      orders: 1,
+                      icon: 'user',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027776787717,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user:add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/save,/user-info/save',
+                      webJson: null,
+                      status: true,
+                      id: 381028524762373,
+                      createTime: '2023-01-31 18:29:04',
+                      updateTime: '2023-02-03 15:13:43',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027959764229,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:role:list',
+                      name: '角色列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381029144966405,
+                      createTime: '2023-01-31 18:31:36',
+                      updateTime: '2023-02-03 15:15:47',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381028104344837,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept:list',
+                      name: '部门列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381029796357381,
+                      createTime: '2023-01-31 18:34:15',
+                      updateTime: '2023-02-03 15:16:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374645410333957,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:createDeviceid:exportqrcode',
+                      name: '批量导出二维码',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-create-ids/exportQrCode,/device-create-ids/exportQrCode',
+                      webJson: null,
+                      status: true,
+                      id: 374878605591813,
+                      createTime: '2023-01-14 09:24:59',
+                      updateTime: '2023-02-03 15:07:45',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374644570813701,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceRegister',
+                      name: '设备登记',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-register/page,/device-register/page',
+                      webJson: null,
+                      status: true,
+                      id: 374878785475845,
+                      createTime: '2023-01-14 09:25:43',
+                      updateTime: '2023-02-03 15:08:00',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/deviceRegister/index',
+                      orders: 2,
+                      icon: 'cascader',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535658992901,
+                      code: 'ccSystemManager',
+                      name: '系统管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381027445748997,
+                      createTime: '2023-01-31 18:24:41',
+                      updateTime: '2023-01-31 18:24:41',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/systemManager',
+                      orders: 2,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027445748997,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:role',
+                      name: '角色管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381027959764229,
+                      createTime: '2023-01-31 18:26:46',
+                      updateTime: '2023-02-03 15:15:41',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/systemManager/role',
+                      orders: 2,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027776787717,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user:edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/update,/user-info/update',
+                      webJson: null,
+                      status: true,
+                      id: 381028632700165,
+                      createTime: '2023-01-31 18:29:31',
+                      updateTime: '2023-02-03 15:13:54',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027959764229,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:role:add',
+                      name: '添加角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381029242144005,
+                      createTime: '2023-01-31 18:31:59',
+                      updateTime: '2023-02-03 15:15:58',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381028104344837,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept:add',
+                      name: '添加部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381029906552069,
+                      createTime: '2023-01-31 18:34:42',
+                      updateTime: '2023-02-03 15:17:07',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374644570813701,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:deviceQuality',
+                      name: '质检管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-quality/page,/device-quality/page',
+                      webJson: null,
+                      status: true,
+                      id: 374878996763909,
+                      createTime: '2023-01-14 09:26:35',
+                      updateTime: '2023-02-03 15:08:34',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/deviceQuality',
+                      orders: 3,
+                      icon: 'druid',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027445748997,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept',
+                      name: '部门管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381028104344837,
+                      createTime: '2023-01-31 18:27:22',
+                      updateTime: '2023-02-03 15:16:49',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_quality/systemManager/dept',
+                      orders: 3,
+                      icon: 'tree',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027776787717,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user:remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381028738639109,
+                      createTime: '2023-01-31 18:29:56',
+                      updateTime: '2023-01-31 18:29:56',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027959764229,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:role:remove',
+                      name: '删除角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/deleteRoleById,/sysRole/deleteRoleById',
+                      webJson: null,
+                      status: true,
+                      id: 381029333394693,
+                      createTime: '2023-01-31 18:32:22',
+                      updateTime: '2023-02-03 15:16:08',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381028104344837,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept:remove',
+                      name: '删除部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/deleteById,/sysDept/deleteById',
+                      webJson: null,
+                      status: true,
+                      id: 381030017533189,
+                      createTime: '2023-01-31 18:35:09',
+                      updateTime: '2023-02-03 15:17:20',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027776787717,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user:role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381028874794245,
+                      createTime: '2023-01-31 18:30:30',
+                      updateTime: '2023-02-03 15:14:20',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027959764229,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:authorize:role:allot_menu',
+                      name: '分配菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381029454902533,
+                      createTime: '2023-01-31 18:32:51',
+                      updateTime: '2023-02-03 15:16:28',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381028104344837,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept:edit',
+                      name: '编辑部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381030128178437,
+                      createTime: '2023-01-31 18:35:36',
+                      updateTime: '2023-02-03 15:17:33',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027776787717,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:user:dept',
+                      name: '分配部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381028978173189,
+                      createTime: '2023-01-31 18:30:55',
+                      updateTime: '2023-02-03 15:14:23',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381027959764229,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:role:edit',
+                      name: '编辑角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381029643633925,
+                      createTime: '2023-01-31 18:33:37',
+                      updateTime: '2023-02-03 15:16:31',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381028104344837,
+                      sysId: 374535658992901,
+                      code: 'xy_quality:systemManager:dept:allot_role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381030221313285,
+                      createTime: '2023-01-31 18:35:58',
+                      updateTime: '2023-02-03 15:17:35',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                  ],
+                },
+                {
+                  id: 374535711753477,
+                  code: 'xy_data',
+                  name: '数据中心',
+                  icon: 'chart',
+                  menu: [
+                    {
+                      paterId: null,
+                      sysId: 374535711753477,
+                      code: 'xy_data:equipReg',
+                      name: '设备登记查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-register/page,/device-register/page',
+                      webJson: null,
+                      status: true,
+                      id: 374879295575301,
+                      createTime: '2023-01-14 09:27:48',
+                      updateTime: '2023-02-03 15:18:30',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_data/equipReg',
+                      orders: 1,
+                      icon: 'date-range',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033247126789,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user',
+                      name: '用户管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 381033403688197,
+                      createTime: '2023-01-31 18:48:55',
+                      updateTime: '2023-02-03 15:19:02',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_data/systemManager/user',
+                      orders: 1,
+                      icon: 'user',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033403688197,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user:add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/save,/user-info/save',
+                      webJson: null,
+                      status: true,
+                      id: 381033767122181,
+                      createTime: '2023-01-31 18:50:24',
+                      updateTime: '2023-02-03 15:19:11',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033526969605,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:role:list',
+                      name: '角色列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381034206782725,
+                      createTime: '2023-01-31 18:52:11',
+                      updateTime: '2023-02-03 15:20:17',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033646793989,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept:list',
+                      name: '部门列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381034682017029,
+                      createTime: '2023-01-31 18:54:07',
+                      updateTime: '2023-02-03 15:21:22',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535711753477,
+                      code: 'dataSystemManager',
+                      name: '系统管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381033247126789,
+                      createTime: '2023-01-31 18:48:17',
+                      updateTime: '2023-01-31 18:48:17',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_data/systemManager',
+                      orders: 2,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033247126789,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:role',
+                      name: '角色管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381033526969605,
+                      createTime: '2023-01-31 18:49:25',
+                      updateTime: '2023-02-03 15:20:14',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_data/systemManager/role',
+                      orders: 2,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033403688197,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user:edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/update,/user-info/update',
+                      webJson: null,
+                      status: true,
+                      id: 381033865274629,
+                      createTime: '2023-01-31 18:50:48',
+                      updateTime: '2023-02-03 15:19:20',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033526969605,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:role:add',
+                      name: '添加角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381034293982469,
+                      createTime: '2023-01-31 18:52:33',
+                      updateTime: '2023-02-03 15:20:31',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033646793989,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept:add',
+                      name: '添加部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381034770519301,
+                      createTime: '2023-01-31 18:54:29',
+                      updateTime: '2023-02-03 15:21:35',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033247126789,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept',
+                      name: '部门管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381033646793989,
+                      createTime: '2023-01-31 18:49:55',
+                      updateTime: '2023-02-03 15:21:19',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_data/systemManager/dept',
+                      orders: 3,
+                      icon: 'tree',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033403688197,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user:remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381033940800773,
+                      createTime: '2023-01-31 18:51:06',
+                      updateTime: '2023-01-31 18:51:06',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033526969605,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:role:remove',
+                      name: '删除角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/deleteRoleById,/sysRole/deleteRoleById',
+                      webJson: null,
+                      status: true,
+                      id: 381034365506821,
+                      createTime: '2023-01-31 18:52:50',
+                      updateTime: '2023-02-03 15:20:50',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033646793989,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept:remove',
+                      name: '删除部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/deleteById,/sysDept/deleteById',
+                      webJson: null,
+                      status: true,
+                      id: 381034859308293,
+                      createTime: '2023-01-31 18:54:51',
+                      updateTime: '2023-02-03 15:21:50',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033403688197,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user:role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381034021684485,
+                      createTime: '2023-01-31 18:51:26',
+                      updateTime: '2023-02-03 15:19:43',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033526969605,
+                      sysId: 374535711753477,
+                      code: 'xy_data:authorize:role:allot_menu',
+                      name: '分配菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381034511283461,
+                      createTime: '2023-01-31 18:53:26',
+                      updateTime: '2023-02-03 15:20:37',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033646793989,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept:edit',
+                      name: '编辑部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381034956145925,
+                      createTime: '2023-01-31 18:55:14',
+                      updateTime: '2023-02-03 15:21:38',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033403688197,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:user:dept',
+                      name: '分配部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381034094540037,
+                      createTime: '2023-01-31 18:51:44',
+                      updateTime: '2023-02-03 15:19:48',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033526969605,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:role:edit',
+                      name: '编辑角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381034594211077,
+                      createTime: '2023-01-31 18:53:46',
+                      updateTime: '2023-02-03 15:20:40',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381033646793989,
+                      sysId: 374535711753477,
+                      code: 'xy_data:systemManager:dept:allot_role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381035063444741,
+                      createTime: '2023-01-31 18:55:41',
+                      updateTime: '2023-02-03 15:21:41',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                  ],
+                },
+                {
+                  id: 374535878972677,
+                  code: 'xy_merc_be',
+                  name: '商户运营',
+                  icon: 'textarea',
+                  menu: [
+                    {
+                      paterId: 389527925511429,
+                      sysId: 374535878972677,
+                      code: 'xy_system:devices:exportqrcode',
+                      name: '二维码',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-create-ids/exportQrCode,/device/device-quality/getQrCode',
+                      webJson: null,
+                      status: true,
+                      id: 389528598947077,
+                      createTime: '2023-02-24 10:55:58',
+                      updateTime: '2023-02-24 10:55:58',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389527925511429,
+                      sysId: 374535878972677,
+                      code: 'xy_system:devices:restart',
+                      name: '重启',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/device/mqtt/senCommand',
+                      webJson: null,
+                      status: true,
+                      id: 389528718632197,
+                      createTime: '2023-02-24 10:56:27',
+                      updateTime: '2023-02-24 10:56:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 0,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:home',
+                      name: '首页',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374879520871685,
+                      createTime: '2023-01-14 09:28:43',
+                      updateTime: '2023-01-14 13:42:35',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/home',
+                      orders: 1,
+                      icon: 'dashboard',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:mercManager:merc',
+                      name: '商户列表',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374879814092037,
+                      createTime: '2023-01-14 09:29:54',
+                      updateTime: '2023-02-02 20:00:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/mercManager/merc',
+                      orders: 1,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037411849477,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user',
+                      name: '用户管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/page,/user-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 381037544252677,
+                      createTime: '2023-01-31 19:05:46',
+                      updateTime: '2023-02-03 15:22:45',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/systemManager/user',
+                      orders: 1,
+                      icon: 'user',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037544252677,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user:add',
+                      name: '新增',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/save,/user-info/save',
+                      webJson: null,
+                      status: true,
+                      id: 381038027175173,
+                      createTime: '2023-01-31 19:07:44',
+                      updateTime: '2023-02-03 15:22:54',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037681640709,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:role:list',
+                      name: '角色列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381038885934341,
+                      createTime: '2023-01-31 19:11:14',
+                      updateTime: '2023-02-03 15:24:30',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037805806853,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept:list',
+                      name: '部门列表',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381039616460037,
+                      createTime: '2023-01-31 19:14:12',
+                      updateTime: '2023-02-03 15:25:18',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 1,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:orderQuery',
+                      name: '订单查询',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389400242173189,
+                      createTime: '2023-02-24 02:13:40',
+                      updateTime: '2023-03-02 02:13:28',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/orderQuery',
+                      orders: 1,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389526920455429,
+                      sysId: 374535878972677,
+                      code: 'merc:devices:deviceList',
+                      name: '设备列表',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-info/page,/device-info/page',
+                      webJson: null,
+                      status: true,
+                      id: 389527925511429,
+                      createTime: '2023-02-24 10:53:13',
+                      updateTime: '2023-02-24 11:05:26',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceList',
+                      orders: 1,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037411849477,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:role',
+                      name: '角色管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '/authorize/sysRole/page,/sysRole/page',
+                      webJson: null,
+                      status: true,
+                      id: 381037681640709,
+                      createTime: '2023-01-31 19:06:20',
+                      updateTime: '2023-02-03 15:24:27',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/systemManager/role',
+                      orders: 2,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037544252677,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user:edit',
+                      name: '修改',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: '/sys/user-info/update,/user-info/update',
+                      webJson: null,
+                      status: true,
+                      id: 381038127985925,
+                      createTime: '2023-01-31 19:08:09',
+                      updateTime: '2023-02-03 15:23:03',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037681640709,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:role:add',
+                      name: '添加角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039069500677,
+                      createTime: '2023-01-31 19:11:59',
+                      updateTime: '2023-02-03 15:24:41',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037805806853,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept:add',
+                      name: '添加部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039692461317,
+                      createTime: '2023-01-31 19:14:31',
+                      updateTime: '2023-02-03 15:25:29',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 2,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'operationCenter',
+                      name: '运营中心',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 389397076571397,
+                      createTime: '2023-02-24 02:00:48',
+                      updateTime: '2023-03-02 02:12:05',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/operationCenter',
+                      orders: 2,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:supplementaryDeductionReview',
+                      name: '补扣审核',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389406851544325,
+                      createTime: '2023-02-24 02:40:34',
+                      updateTime: '2023-02-24 03:22:47',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/supplementaryDeductionReview',
+                      orders: 2,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389526920455429,
+                      sysId: 374535878972677,
+                      code: 'merc:devices:deviceNetHistory',
+                      name: '设备联网记录',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-net-record/page,/device-net-record/page',
+                      webJson: null,
+                      status: true,
+                      id: 389528202192133,
+                      createTime: '2023-02-24 10:54:21',
+                      updateTime: '2023-02-24 10:54:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceNetHistory',
+                      orders: 2,
+                      icon: 'swagger',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:mercManager:devices',
+                      name: '商户设备授权',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 394357934908677,
+                      createTime: '2023-03-10 10:26:35',
+                      updateTime: '2023-03-10 10:31:22',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/mercManager/devices',
+                      orders: 2,
+                      icon: 'list',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'mercManager',
+                      name: '商户管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 374879651939589,
+                      createTime: '2023-01-14 09:29:15',
+                      updateTime: '2023-03-02 02:12:14',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/mercManager',
+                      orders: 3,
+                      icon: 'peoples',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037411849477,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept',
+                      name: '部门管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/tree/list,/sysDept/tree/list',
+                      webJson: null,
+                      status: true,
+                      id: 381037805806853,
+                      createTime: '2023-01-31 19:06:50',
+                      updateTime: '2023-02-03 15:25:16',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/systemManager/dept',
+                      orders: 3,
+                      icon: 'tree',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037544252677,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user:remove',
+                      name: '删除',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381038534489349,
+                      createTime: '2023-01-31 19:09:48',
+                      updateTime: '2023-01-31 19:09:48',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037681640709,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:role:remove',
+                      name: '删除角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/deleteRoleById,/sysRole/deleteRoleById',
+                      webJson: null,
+                      status: true,
+                      id: 381039367845125,
+                      createTime: '2023-01-31 19:13:11',
+                      updateTime: '2023-02-03 15:24:57',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037805806853,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept:remove',
+                      name: '删除部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/deleteById,/sysDept/deleteById',
+                      webJson: null,
+                      status: true,
+                      id: 381039768249605,
+                      createTime: '2023-01-31 19:14:49',
+                      updateTime: '2023-02-03 15:25:40',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 3,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantAccountBalance',
+                      name: '商户账户余额',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389181329720581,
+                      createTime: '2023-02-23 11:22:55',
+                      updateTime: '2023-03-10 13:13:37',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantAccountBalance',
+                      orders: 3,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantBalanceDetails',
+                      name: '商户余额明细',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389193989276933,
+                      createTime: '2023-02-23 12:14:26',
+                      updateTime: '2023-02-23 12:14:26',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantBalanceDetails',
+                      orders: 3,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389526920455429,
+                      sysId: 374535878972677,
+                      code: 'merc/devices/deviceErrorHistory',
+                      name: '设备故障记录',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/device/device-errors-record/page,/device-errors-record/page',
+                      webJson: null,
+                      status: true,
+                      id: 389528408003845,
+                      createTime: '2023-02-24 10:55:11',
+                      updateTime: '2023-02-24 10:55:11',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/devices/deviceErrorHistory',
+                      orders: 3,
+                      icon: 'bug',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:modelReview',
+                      name: '建模审核',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 390480396850437,
+                      createTime: '2023-02-27 03:28:50',
+                      updateTime: '2023-03-02 02:14:11',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/modelReview',
+                      orders: 3,
+                      icon: 'skill',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:dangerOrderTjQuery',
+                      name: '商户未结算订单统计',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 391937048589573,
+                      createTime: '2023-03-03 06:15:58',
+                      updateTime: '2023-03-10 13:13:54',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/dangerOrderTjQuery',
+                      orders: 3,
+                      icon: 'chart',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037544252677,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user:role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381038625211653,
+                      createTime: '2023-01-31 19:10:10',
+                      updateTime: '2023-02-03 15:24:01',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037681640709,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:authorize:role:allot_menu',
+                      name: '分配菜单',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039446185221,
+                      createTime: '2023-01-31 19:13:31',
+                      updateTime: '2023-02-03 15:24:44',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037805806853,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept:edit',
+                      name: '编辑部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039844533509,
+                      createTime: '2023-01-31 19:15:08',
+                      updateTime: '2023-02-03 15:25:55',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 4,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantMemberBalanceDetails',
+                      name: '商户会员余额明细',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389195690108165,
+                      createTime: '2023-02-23 12:21:21',
+                      updateTime: '2023-02-23 12:21:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantMemberBalanceDetails',
+                      orders: 4,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:orderCustomerComplaint',
+                      name: '订单客诉',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389399840716037,
+                      createTime: '2023-02-24 02:12:02',
+                      updateTime: '2023-03-02 02:14:42',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/orderCustomerComplaint',
+                      orders: 4,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'mcDeviceManager',
+                      name: '设备管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 389526920455429,
+                      createTime: '2023-02-24 10:49:08',
+                      updateTime: '2023-03-02 02:12:21',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_system/deviceManager',
+                      orders: 4,
+                      icon: 'component',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037544252677,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:user:dept',
+                      name: '分配部门',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysWorkUser/update,/sysWorkUser/update',
+                      webJson: null,
+                      status: true,
+                      id: 381038720386309,
+                      createTime: '2023-01-31 19:10:33',
+                      updateTime: '2023-02-03 15:24:03',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037681640709,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:role:edit',
+                      name: '编辑角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysRole/saveOrUpdate,/sysRole/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039530571013,
+                      createTime: '2023-01-31 19:13:51',
+                      updateTime: '2023-02-03 15:24:46',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 381037805806853,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:systemManager:dept:allot_role',
+                      name: '分配角色',
+                      type: 3,
+                      clientType: 'pc_web',
+                      interfaceUri:
+                        '/authorize/sysDept/saveOrUpdate,/sysDept/saveOrUpdate',
+                      webJson: null,
+                      status: true,
+                      id: 381039907800325,
+                      createTime: '2023-01-31 19:15:23',
+                      updateTime: '2023-02-03 15:25:58',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: null,
+                      orders: 5,
+                      icon: null,
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:scene',
+                      name: '场景管理',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'ss',
+                      webJson: null,
+                      status: true,
+                      id: 381337350841605,
+                      createTime: '2023-02-01 15:25:41',
+                      updateTime: '2023-02-24 11:06:23',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/scene',
+                      orders: 5,
+                      icon: 'dict',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantEquipmentManagementFee',
+                      name: '商户设备管理费',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389380720035077,
+                      createTime: '2023-02-24 00:54:14',
+                      updateTime: '2023-02-24 00:54:14',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantEquipmentManagementFee',
+                      orders: 5,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:abnormalEvents',
+                      name: '异常事件',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389400049235205,
+                      createTime: '2023-02-24 02:12:53',
+                      updateTime: '2023-03-02 02:15:36',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/abnormalEvents',
+                      orders: 5,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantTrafficCardFee',
+                      name: '商户流量卡费',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389386983064837,
+                      createTime: '2023-02-24 01:19:43',
+                      updateTime: '2023-02-24 01:19:43',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantTrafficCardFee',
+                      orders: 6,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:merchantAlgorithmServiceFee',
+                      name: '商户算法服务费',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389389387064581,
+                      createTime: '2023-02-24 01:29:30',
+                      updateTime: '2023-02-24 01:32:06',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/merchantAlgorithmServiceFee',
+                      orders: 7,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 389397076571397,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:goods:pageByCoverNotEdit',
+                      name: '商品修改',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: '1',
+                      webJson: null,
+                      status: true,
+                      id: 410785694110981,
+                      createTime: '2023-04-25 20:31:18',
+                      updateTime: '2023-04-25 20:31:18',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/goods/pageByCoverNotEdit',
+                      orders: 7,
+                      icon: 'redis',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: 374879651939589,
+                      sysId: 374535878972677,
+                      code: 'xy_merc_be:suggestionsAndComplaints',
+                      name: '建议&投诉',
+                      type: 2,
+                      clientType: 'pc_web',
+                      interfaceUri: 'https://ai.tanbin.vip',
+                      webJson: null,
+                      status: true,
+                      id: 389390673143045,
+                      createTime: '2023-02-24 01:34:44',
+                      updateTime: '2023-02-24 01:34:44',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/suggestionsAndComplaints',
+                      orders: 8,
+                      icon: 'edit',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                    {
+                      paterId: null,
+                      sysId: 374535878972677,
+                      code: 'mcSystemManager',
+                      name: '系统管理',
+                      type: 1,
+                      clientType: 'pc_web',
+                      interfaceUri: null,
+                      webJson: null,
+                      status: true,
+                      id: 381037411849477,
+                      createTime: '2023-01-31 19:05:14',
+                      updateTime: '2023-02-24 11:06:33',
+                      createUser: 1,
+                      updateUser: 1,
+                      route: 'xy_merc_be/systemManager',
+                      orders: 9,
+                      icon: 'system',
+                      selectAdmin: true,
+                      sonSysMenu: null,
+                    },
+                  ],
+                },
+              ]
+
+              if (data && data.length > 0) {
+                const sdata = JSON.parse(JSON.stringify(data))
+                let assembleData = refitRouterList(sdata)
+
+                // 按钮权限集合
+                this.permissions_btn = assembleData.btn
+                storage.set(constant.permissions_btn, assembleData.btn)
+                // 菜单权限集合
+                this.permissions_menu = recombineRoute(assembleData.tree)
+                storage.set(
+                  constant.permissions_menu,
+                  recombineRoute(assembleData.tree)
+                )
+              }
+              resolve(data)
+            })
+            .catch((error) => {
+              reject(error)
+            })
+        } else {
+          reject('没有权限')
+        }
+      })
+    },
+  },
+})
+
+//获取顶部系统
+function getSystemMenus() {
+  return new Promise((resolve, reject) => {
+    request({
+      url: '/authorize/sys-system/list',
+      data: {},
+    })
+      .then((res) => {
+        console.log('getSystemMenus', res)
+        let arr = []
+        //pc固定的四个系统id,如有改动,对应调整
+        // let menuIds = [371447078143236, 374535658992901, 374535711753477, 374535878972677];
+        //pc固定的四个系统标识,如有改动,对应调整
+        let menuCodes = [
+          'xy_system',
+          'xy_quality',
+          'xy_data',
+          'xy_merc_be',
+          'xy_merc_mini',
+        ]
+        if (res && res.length) {
+          res.forEach((i) => {
+            if (menuCodes.find((j) => j == i.code)) {
+              arr.push(i.id)
+            }
+          })
+        }
+        resolve(arr)
+      })
+      .catch((err) => {
+        reject(err)
+      })
+  })
+}
+
+//组装路由
+function refitRouterList(allRouterMenu) {
+  let newRouterList = new Array()
+  let btnPromission = new Array() //按钮权限
+
+  for (let index = 0; index < allRouterMenu.length; index++) {
+    const element = allRouterMenu[index]
+    //系统路由转换
+    let newSystemItem = adjustRouterList(element, true)
+    if (element.menu && element.menu.length > 0) {
+      //格式转换后的路由,同时收集按钮菜单权限
+      let newMenuList = new Array()
+      let menuList = element.menu
+      for (let index = 0; index < menuList.length; index++) {
+        const router = menuList[index]
+        let newRouterItem = adjustRouterList(router) //其他菜单路由转换
+        newMenuList.push(newRouterItem) //添加到数据待用
+        //按钮权限集合
+        if (router.type !== 1) {
+          btnPromission.push(router.code)
+        }
+      }
+      newSystemItem.children = assembleRouter(newMenuList)
+    }
+
+    newRouterList.push(newSystemItem)
+  }
+
+  return {
+    tree: newRouterList,
+    btn: btnPromission,
+  }
+}
+
+// 遍历系统模块下菜单,转化为路由组件对象
+function adjustRouterList(routerItem, isSystemMenu = false) {
+  let newRouterItem = {}
+  if (isSystemMenu) {
+    newRouterItem = {
+      id: routerItem.id,
+      name: routerItem.code,
+      hidden: false,
+      meta: {
+        title: routerItem.name,
+        icon: routerItem.icon,
+      },
+      path: '/' + routerItem.code, //路由路径
+      component: 'Layout', //组件地址
+      children: [],
+    }
+    return newRouterItem
+  }
+  newRouterItem.name = routerItem.code
+  newRouterItem.id = routerItem.id
+  newRouterItem.paterId = routerItem.paterId
+  newRouterItem.hidden = false
+  newRouterItem.meta = {
+    icon: routerItem.icon,
+    title: routerItem.name,
+  }
+
+  //根目录及其他目录处理
+  if (
+    (routerItem.paterId === null && routerItem.type != 2) ||
+    routerItem.type == 1
+  ) {
+    newRouterItem.path = '/' + routerItem.route //路由路径
+    newRouterItem.component = 'ParentView'
+  }
+
+  //菜单项处理
+  if (routerItem.type == 2) {
+    newRouterItem.path = '/' + routerItem.route //路由路径
+    newRouterItem.component = routerItem.route
+    newRouterItem.code = routerItem.code
+  }
+
+  //按钮/功能处理
+  if (routerItem.type == 3) {
+    newRouterItem = routerItem
+  }
+
+  return newRouterItem
+}
+
+//遍历后台传来的路由,组成路由树结构
+function assembleRouter(allRouterMenu) {
+  // 收集每一项的下标
+  const idMapping = allRouterMenu.reduce((acc, el, i) => {
+    acc[el.id] = i
+    return acc
+  }, {})
+  let root = []
+  allRouterMenu.forEach((el) => {
+    // 判断根节点
+    if (el.paterId === null || el.paterId === 0) {
+      root.push(el)
+      return
+    }
+    // 用映射表找到父元素
+    const parentEl = allRouterMenu[idMapping[el.paterId]]
+    // 把当前元素添加到父元素的`children`数组中
+    if (el.type !== 3) {
+      //非按钮,组成路由树结构
+      parentEl.children = [...(parentEl.children || []), el]
+    }
+  })
+  return root
+}
+
+//遍历树节点,组装成二级路由
+function recombineRoute(tree) {
+  let newTree = deepClone(tree)
+  let newRouter = []
+  for (let index = 0; index < newTree.length; index++) {
+    const element = newTree[index]
+    if (element.children && element.children.length > 0) {
+      element.children = filtNode(element.children)
+    }
+    newRouter.push(element)
+  }
+  return newRouter
+}
+
+//树形结构抓取所有末尾节点,组装数组
+function filtNode(tree) {
+  let nodeList = []
+  findLastNode(tree)
+  function findLastNode(childList) {
+    for (let index = 0; index < childList.length; index++) {
+      const element = childList[index]
+      if (!element.children) {
+        nodeList.push(element)
+      } else {
+        findLastNode(element.children)
+      }
+    }
+  }
+  return nodeList
+}
+
+export default usePermissionStore

+ 93 - 0
src/stores/user.js

@@ -0,0 +1,93 @@
+import { defineStore } from 'pinia'
+
+import config from '@/config'
+import storage from '@/utils/storage'
+import constant from '@/utils/constant'
+import { getToken, setToken, removeToken } from '@/utils/auth'
+import request from '../utils/request.js'
+
+const useUserStore = defineStore('user', {
+  state: () => ({
+    token: getToken(),
+    name: storage.get(constant.name),
+    avatar: storage.get(constant.avatar),
+    roles: storage.get(constant.roles),
+    permissions: storage.get(constant.permissions),
+  }),
+
+  actions: {
+    // 登录
+    Login(userInfo) {
+      return new Promise((resolve, reject) => {
+        request({
+          url: '/merc/mini/login',
+          data: {
+            loginName: userInfo.username.trim(),
+            password: userInfo.password,
+            clientType: 'wx_app',
+          },
+          method: 'POST',
+          headers: {
+            isToken: false,
+          },
+        })
+          .then((res) => {
+            setToken(res.satoken)
+            this.token = res.satoken
+            this.name = res.mercName
+            storage.set(constant.name, res.mercName)
+            resolve(res)
+          })
+          .catch((err) => {
+            reject(err)
+          })
+      })
+    },
+
+    // 获取用户信息
+    // GetInfo() {
+    //   return new Promise((resolve, reject) => {
+    //     getInfo()
+    //       .then((res) => {
+    //         const user = res.user
+    //         const avatar =
+    //           user == null || user.avatar == '' || user.avatar == null
+    //             ? ''
+    //             : baseUrl + user.avatar
+    //         const username =
+    //           user == null || user.userName == '' || user.userName == null
+    //             ? ''
+    //             : user.userName
+    //         if (res.roles && res.roles.length > 0) {
+    //           this.roles = res.roles
+    //           storage.set(constant.roles, res.roles)
+    //           this.permissions = res.permissions
+    //           storage.set(constant.permissions, res.permissions)
+    //         } else {
+    //           this.roles = ['ROLE_DEFAULT']
+    //           storage.set(constant.roles, ['ROLE_DEFAULT'])
+    //         }
+    //         resolve(res)
+    //       })
+    //       .catch((error) => {
+    //         reject(error)
+    //       })
+    //   })
+    // },
+
+    // 退出系统
+    LogOut() {
+      return new Promise((resolve, reject) => {
+        this.roles = ''
+        storage.set(constant.roles, '')
+        this.permissions = ''
+        storage.set(constant.permissions, '')
+        removeToken()
+        storage.clean()
+        resolve('退出登录成功~')
+      })
+    },
+  },
+})
+
+export default useUserStore

+ 24 - 22
uni.scss → src/uni.scss

@@ -11,7 +11,7 @@
  *
  * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
  */
-@import "@/uni_modules/vk-uview-ui/theme.scss";
+
 /* 颜色变量 */
 
 /* 行为相关颜色 */
@@ -21,32 +21,32 @@ $uni-color-warning: #f0ad4e;
 $uni-color-error: #dd524d;
 
 /* 文字基本颜色 */
-$uni-text-color:#333;//基本色
-$uni-text-color-inverse:#fff;//反色
-$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color: #333; // 基本色
+$uni-text-color-inverse: #fff; // 反色
+$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息
 $uni-text-color-placeholder: #808080;
-$uni-text-color-disable:#c0c0c0;
+$uni-text-color-disable: #c0c0c0;
 
 /* 背景颜色 */
-$uni-bg-color:#ffffff;
-$uni-bg-color-grey:#f8f8f8;
-$uni-bg-color-hover:#f1f1f1;//点击状态颜色
-$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+$uni-bg-color: #fff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色
 
 /* 边框颜色 */
-$uni-border-color:#c8c7cc;
+$uni-border-color: #c8c7cc;
 
 /* 尺寸变量 */
 
 /* 文字尺寸 */
-$uni-font-size-sm:12px;
-$uni-font-size-base:14px;
-$uni-font-size-lg:16;
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
 
 /* 图片尺寸 */
-$uni-img-size-sm:20px;
-$uni-img-size-base:26px;
-$uni-img-size-lg:40px;
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
 
 /* Border Radius */
 $uni-border-radius-sm: 2px;
@@ -68,9 +68,11 @@ $uni-spacing-col-lg: 12px;
 $uni-opacity-disabled: 0.3; // 组件禁用态的透明度
 
 /* 文章场景相关 */
-$uni-color-title: #2C405A; // 文章标题颜色
-$uni-font-size-title:20px;
-$uni-color-subtitle: #555555; // 二级标题颜色
-$uni-font-size-subtitle:26px;
-$uni-color-paragraph: #3F536E; // 文章段落颜色
-$uni-font-size-paragraph:15px;
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555; // 二级标题颜色
+$uni-font-size-subtitle: 18px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
+
+@import 'uview-plus/theme.scss';

+ 0 - 0
utils/auth.js → src/utils/auth.js


+ 171 - 0
src/utils/common.js

@@ -0,0 +1,171 @@
+/**
+ * 显示消息提示框
+ * @param content 提示的标题
+ */
+export function toast(content) {
+  uni.showToast({
+    icon: 'none',
+    title: content,
+  })
+}
+
+/**
+ * 显示模态弹窗
+ * @param content 提示的标题
+ */
+export function showConfirm(content) {
+  return new Promise((resolve, reject) => {
+    uni.showModal({
+      title: '提示',
+      content: content,
+      cancelText: '取消',
+      confirmText: '确定',
+      success: function (res) {
+        resolve(res)
+      },
+    })
+  })
+}
+
+/**
+ * 参数处理
+ * @param params 参数
+ */
+export function tansParams(params) {
+  let result = ''
+  for (const propName of Object.keys(params)) {
+    const value = params[propName]
+    var part = encodeURIComponent(propName) + '='
+    if (value !== null && value !== '' && typeof value !== 'undefined') {
+      if (typeof value === 'object') {
+        for (const key of Object.keys(value)) {
+          if (
+            value[key] !== null &&
+            value[key] !== '' &&
+            typeof value[key] !== 'undefined'
+          ) {
+            let params = propName + '[' + key + ']'
+            var subPart = encodeURIComponent(params) + '='
+            result += subPart + encodeURIComponent(value[key]) + '&'
+          }
+        }
+      } else {
+        result += part + encodeURIComponent(value) + '&'
+      }
+    }
+  }
+  return result
+}
+
+/**
+ * 随机数
+ * @param {Object} min
+ * @param {Object} max
+ */
+export function getRandomNum(min, max) {
+  var range = max - min
+  var rand = Math.random()
+  return min + Math.round(range * rand)
+}
+
+export function getSameData(arr1, arr2, key) {
+  const idMapping = arr1.reduce((acc, el, i) => {
+    acc[el[key]] = i
+    return acc
+  }, {})
+  arr2.forEach((i) => {
+    if (idMapping[i[key]]) {
+      //重复值
+      i.checked = true
+    }
+  })
+}
+
+/**
+ * @param {Function} func
+ * @param {number} wait
+ * @param {boolean} immediate
+ * @return {*}
+ */
+export function debounce(func, wait, immediate) {
+  let timeout, args, context, timestamp, result
+
+  const later = function () {
+    // 据上一次触发时间间隔
+    const last = +new Date() - timestamp
+
+    // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
+    if (last < wait && last > 0) {
+      timeout = setTimeout(later, wait - last)
+    } else {
+      timeout = null
+      // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
+      if (!immediate) {
+        result = func.apply(context, args)
+        if (!timeout) context = args = null
+      }
+    }
+  }
+
+  return function (...args) {
+    context = this
+    timestamp = +new Date()
+    const callNow = immediate && !timeout
+    // 如果延时不存在,重新设定延时
+    if (!timeout) timeout = setTimeout(later, wait)
+    if (callNow) {
+      result = func.apply(context, args)
+      context = args = null
+    }
+
+    return result
+  }
+}
+
+//搜索框关键词存储
+export function saveKeyWord(type, val) {
+  let arr = []
+  if (uni.getStorageSync(type)) {
+    let arr = JSON.parse(uni.getStorageSync(type))
+    if (arr.indexOf(val) != -1) {
+      console.log('arr.indexOf(val)', arr.indexOf(val))
+      arr.splice(arr.indexOf(val), 1)
+    }
+    arr.unshift(val)
+    if (arr.length > 6) {
+      arr.pop()
+    }
+    uni.setStorageSync(type, JSON.stringify(arr))
+    return arr
+  } else {
+    arr.unshift(val)
+    uni.setStorageSync(type, JSON.stringify(arr))
+    return arr
+  }
+}
+
+//价格保留两位小数点正则
+export function testPrice(val) {
+  let reg = /^\d+(\.([0-9]|\d[0-9]))?$/
+  return reg.test(val)
+}
+
+/**
+ * 深拷贝
+ * @param {Object} source
+ * @returns {Object}
+ */
+export function deepClone(source) {
+  if (!source && typeof source !== 'object') {
+    throw new Error('error arguments', 'deepClone')
+  }
+  const targetObj = source.constructor === Array ? [] : {}
+  Object.keys(source).forEach((keys) => {
+    if (source[keys] && typeof source[keys] === 'object') {
+      targetObj[keys] = deepClone(source[keys])
+    } else {
+      targetObj[keys] = source[keys]
+    }
+  })
+  return targetObj
+}

+ 0 - 0
utils/constant.js → src/utils/constant.js


+ 0 - 0
utils/download.js → src/utils/download.js


+ 0 - 0
utils/errorCode.js → src/utils/errorCode.js


+ 0 - 0
utils/getDict.js → src/utils/getDict.js


+ 0 - 0
utils/permission.js → src/utils/permission.js


+ 170 - 0
src/utils/request.js

@@ -0,0 +1,170 @@
+import useUserStore from '@/stores/user.js'
+import config from '@/config'
+import { getToken } from '@/utils/auth'
+import errorCode from '@/utils/errorCode'
+import { toast, showConfirm, tansParams } from '@/utils/common'
+
+let timeout = 10000
+const baseUrl = config.baseUrl
+
+const request = (config) => {
+  console.log(config)
+  // 是否需要设置 token
+  const isToken = (config.headers || {}).isToken === false
+  config.header = config.header || {}
+  if (getToken() && !isToken) {
+    config.header['satoken'] = getToken()
+    config.header['sysId'] = uni.getStorageSync('sysId')
+  }
+
+  // get请求映射params参数
+  if (config.params) {
+    let url = config.url + '?' + tansParams(config.params)
+    url = url.slice(0, -1)
+    config.url = url
+  }
+
+  return new Promise((resolve, reject) => {
+    uni
+      .request({
+        method: config.method || 'post',
+        timeout: config.timeout || timeout,
+        url: config.baseUrl || baseUrl + config.url,
+        data: config.data,
+        header: config.header,
+        dataType: 'json',
+      })
+      .then((response) => {
+        console.log(config.url + '==============', response)
+        const { data } = response
+        saveLogs(config.url, config.data, data.data)
+        const code = data.code || 404
+        const msg = errorCode[code] || data.msg || errorCode['default']
+        if (code === 501) {
+          let pages = getCurrentPages()
+          let currentPage = pages[pages.length - 1].route
+          if (currentPage != 'pages/login') {
+            toast('登录状态已过期,请重新登陆!')
+            reject('无效的会话,或者会话已过期,请重新登录。')
+            useUserStore()
+              .LogOut()
+              .then((res) => {
+                uni.reLaunch({
+                  url: '/pages/login',
+                })
+              })
+          }
+        } else if (code === 500) {
+          toast(msg.substr(0, 50))
+          reject(msg)
+        } else if (code !== 200) {
+          toast(msg)
+          reject(code)
+        } else if (code === 404) {
+          toast('请求超时')
+          reject(code)
+        }
+        resolve(data.data)
+      })
+      .catch((error) => {
+        console.log('err', error)
+        saveLogs(config.url, config.data, error)
+        uni.hideLoading()
+        let { message } = error
+        if (message === 'Network Error') {
+          message = '网络连接超时'
+        } else if (message.includes('timeout')) {
+          message = '网络连接超时'
+        } else if (message.includes('Request failed with status code')) {
+          message = '系统接口' + message.substr(message.length - 3) + '异常'
+        }
+        toast(message)
+        reject(error)
+      })
+  })
+}
+
+function saveLogs(url, params, res) {
+  let arr = []
+  let obj = {
+    url: url,
+    time: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM:ss'),
+    params: JSON.stringify(params) || '无',
+    res: JSON.stringify(res).substr(0, 1000),
+  }
+  if (uni.getStorageSync('logs')) {
+    let arr = JSON.parse(uni.getStorageSync('logs'))
+    arr.unshift(obj)
+    if (arr.length > 30) {
+      arr.pop()
+    }
+    uni.setStorageSync('logs', JSON.stringify(arr))
+  } else {
+    arr.unshift(obj)
+    uni.setStorageSync('logs', JSON.stringify(arr))
+  }
+}
+
+// 验证是否为blob格式
+async function blobValidate(data) {
+  try {
+    const text = await data.text()
+    JSON.parse(text)
+    return false
+  } catch (error) {
+    return true
+  }
+}
+
+export function downLoadReq(config) {
+  uni.showLoading({
+    title: '加载中',
+  })
+  // 是否需要设置 token
+  const isToken = (config.headers || {}).isToken === false
+  config.header = config.header || {}
+  if (getToken() && !isToken) {
+    config.header['satoken'] = getToken()
+    config.header['sysId'] = uni.getStorageSync('sysId')
+  }
+
+  // get请求映射params参数
+  if (config.params) {
+    let url = config.url + '?' + tansParams(config.params)
+    url = url.slice(0, -1)
+    config.url = url
+  }
+  return new Promise((resolve, reject) => {
+    uni
+      .request({
+        method: config.method || 'get',
+        timeout: config.timeout || timeout,
+        url: config.baseUrl || baseUrl + config.url,
+        data: config.data,
+        header: config.header,
+        dataType: 'json',
+      })
+      .then(async (response) => {
+        let data = response.data
+        uni.hideLoading()
+        const isLogin = await blobValidate(data)
+        if (isLogin) {
+          wx.getFileSystemManager().readFile({
+            filePath: data, //选择图片返回的相对路径
+            encoding: 'base64', //这个是很重要的
+            success: (res) => {
+              //成功的回调
+            },
+            fail: (err) => {},
+          })
+        } else {
+        }
+        resolve(data)
+      })
+      .catch((r) => {
+        reject(r)
+      })
+  })
+}
+
+export default request

+ 0 - 0
utils/share.js → src/utils/share.js


+ 0 - 0
utils/storage.js → src/utils/storage.js


+ 0 - 0
utils/upload.js → src/utils/upload.js


+ 0 - 96
stores/permission.js

@@ -1,96 +0,0 @@
-import {
-	defineStore
-} from 'pinia';
-
-import config from '@/config'
-import storage from '@/utils/storage'
-import constant from '@/utils/constant'
-
-import {
-	tabMenu,
-	workMenuList
-} from '@/api/system.js'
-
-const baseUrl = config.baseUrl
-
-const usePermissionStore = defineStore('permission', {
-	state: () => ({
-		permissions_menu: storage.get(constant.permissions_menu),
-		permissions_btn: storage.get(constant.permissions_btn)
-	}),
-	actions: {
-		// 获取用户权限信息
-		GetPermis() {
-			return new Promise(async (resolve, reject) => {
-				let sysIds = await getSystemMenus()
-				if (sysIds.length > 0) {
-					workMenuList({
-						sysId: sysIds //平台端获取固定系统ID
-					}).then(res => {
-						console.log('菜单', res)
-						resolve(res)
-					}).catch(error => {
-						reject(error)
-					})
-				} else {
-					reject('没有权限')
-				}
-			})
-		}
-	}
-});
-
-//获取顶部系统
-function getSystemMenus() {
-	return new Promise((resolve, reject) => {
-		tabMenu({}).then(res => {
-			console.log('res', res)
-			let arr = [];
-			//pc固定的四个系统id,如有改动,对应调整
-			// let menuIds = [371447078143236, 374535658992901, 374535711753477, 374535878972677];
-			//pc固定的四个系统标识,如有改动,对应调整
-			let menuCodes = ['xy_system', 'xy_quality', 'xy_data', 'xy_merc_be', 'xy_merc_mini'];
-			if (res && res.length) {
-				res.forEach(i => {
-					if (menuCodes.find(j => j == i.code)) {
-						arr.push(i.id)
-					}
-				})
-			}
-			resolve(arr)
-		}).catch(err => {
-			reject(err)
-		})
-	})
-}
-
-function assembleRouter(allRouterMenu) {
-	// 收集每一项的下标
-	const idMapping = allRouterMenu.reduce((acc, el, i) => {
-		acc[el.id] = i;
-		return acc;
-	}, {});
-	let menu = [];
-	let btn = [];
-	allRouterMenu.forEach(el => {
-		// 判断根节点
-		if (el.paterId === null || el.paterId === 0) {
-			menu.push(el)
-			return;
-		}
-		// 用映射表找到父元素
-		const parentEl = allRouterMenu[idMapping[el.paterId]];
-		// 把当前元素添加到父元素的`children`数组中
-		if (parentEl && el.type !== 3) { //非按钮,组成路由树结构
-			parentEl.children = [...(parentEl.children || []), el];
-		} else {
-			btn.push(el.code)
-		}
-	});
-	return {
-		menu: menu,
-		btn: btn
-	}
-}
-
-export default usePermissionStore

+ 0 - 94
stores/user.js

@@ -1,94 +0,0 @@
-import {
-	defineStore
-} from "pinia";
-
-import config from '@/config'
-import storage from '@/utils/storage'
-import constant from '@/utils/constant'
-import {
-	login,
-	logout,
-	getInfo
-} from '@/api/login'
-import {
-	getToken,
-	setToken,
-	removeToken
-} from '@/utils/auth'
-
-const baseUrl = config.baseUrl
-
-const useUserStore = defineStore('user', {
-	state: () => ({
-		token: getToken(),
-		name: storage.get(constant.name),
-		avatar: storage.get(constant.avatar),
-		roles: storage.get(constant.roles),
-		permissions: storage.get(constant.permissions)
-	}),
-
-	actions: {
-		// 登录
-		Login(userInfo) {
-			const clientType = "wx_app"
-			const code = ""
-			const loginName = userInfo.username.trim()
-			const password = userInfo.password
-			const pointJson = userInfo.pointJson
-			return new Promise((resolve, reject) => {
-				login(loginName, password, code, clientType, pointJson).then(res => {
-					console.log(res)
-					setToken(res.satoken)
-					this.token = res.satoken
-					this.name = res.mercName
-					storage.set(constant.name, res.mercName)
-					resolve(res)
-				}).catch(error => {
-					reject(error)
-				})
-			})
-		},
-
-		// 获取用户信息
-		GetInfo() {
-			return new Promise((resolve, reject) => {
-				getInfo().then(res => {
-					const user = res.user
-					const avatar = (user == null || user.avatar == "" || user.avatar == null) ?
-						'' : baseUrl + user.avatar
-					const username = (user == null || user.userName == "" || user.userName ==
-						null) ? "" : user.userName
-					if (res.roles && res.roles.length > 0) {
-						this.roles = res.roles
-						storage.set(constant.roles, res.roles)
-						this.permissions = res.permissions
-						storage.set(constant.permissions, res.permissions)
-					} else {
-						this.roles = ['ROLE_DEFAULT']
-						storage.set(constant.roles, ['ROLE_DEFAULT'])
-					}
-					resolve(res)
-				}).catch(error => {
-					reject(error)
-				})
-			})
-		},
-
-		// 退出系统
-		LogOut() {
-			return new Promise((resolve, reject) => {
-				this.roles = ''
-				storage.set(constant.roles, '')
-				this.permissions = ''
-				storage.set(constant.permissions, '')
-				this.permissions = res.permissions
-				storage.set(constant.permissions, res.permissions)
-				removeToken()
-				storage.clean()
-				resolve('退出登录成功~')
-			})
-		}
-	}
-})
-
-export default useUserStore

+ 0 - 147
utils/common.js

@@ -1,147 +0,0 @@
-/**
- * 显示消息提示框
- * @param content 提示的标题
- */
-export function toast(content) {
-	uni.showToast({
-		icon: 'none',
-		title: content
-	})
-}
-
-/**
- * 显示模态弹窗
- * @param content 提示的标题
- */
-export function showConfirm(content) {
-	return new Promise((resolve, reject) => {
-		uni.showModal({
-			title: '提示',
-			content: content,
-			cancelText: '取消',
-			confirmText: '确定',
-			success: function(res) {
-				resolve(res)
-			}
-		})
-	})
-}
-
-/**
- * 参数处理
- * @param params 参数
- */
-export function tansParams(params) {
-	let result = ''
-	for (const propName of Object.keys(params)) {
-		const value = params[propName]
-		var part = encodeURIComponent(propName) + "="
-		if (value !== null && value !== "" && typeof(value) !== "undefined") {
-			if (typeof value === 'object') {
-				for (const key of Object.keys(value)) {
-					if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') {
-						let params = propName + '[' + key + ']'
-						var subPart = encodeURIComponent(params) + "="
-						result += subPart + encodeURIComponent(value[key]) + "&"
-					}
-				}
-			} else {
-				result += part + encodeURIComponent(value) + "&"
-			}
-		}
-	}
-	return result
-}
-
-/**
- * 随机数
- * @param {Object} min
- * @param {Object} max
- */
-export function getRandomNum(min, max) {
-	var range = max - min;
-	var rand = Math.random()
-	return (min + Math.round(range * rand))
-}
-
-export function getSameData(arr1, arr2, key) {
-	const idMapping = arr1.reduce((acc, el, i) => {
-		acc[el[key]] = i;
-		return acc;
-	}, {});
-	arr2.forEach(i => {
-		if (idMapping[i[key]]) { //重复值
-			i.checked = true
-		}
-	})
-}
-
-/**
- * @param {Function} func
- * @param {number} wait
- * @param {boolean} immediate
- * @return {*}
- */
-export function debounce(func, wait, immediate) {
-	let timeout, args, context, timestamp, result
-
-	const later = function() {
-		// 据上一次触发时间间隔
-		const last = +new Date() - timestamp
-
-		// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
-		if (last < wait && last > 0) {
-			timeout = setTimeout(later, wait - last)
-		} else {
-			timeout = null
-			// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
-			if (!immediate) {
-				result = func.apply(context, args)
-				if (!timeout) context = args = null
-			}
-		}
-	}
-
-	return function(...args) {
-		context = this
-		timestamp = +new Date()
-		const callNow = immediate && !timeout
-		// 如果延时不存在,重新设定延时
-		if (!timeout) timeout = setTimeout(later, wait)
-		if (callNow) {
-			result = func.apply(context, args)
-			context = args = null
-		}
-
-		return result
-	}
-}
-
-
-//搜索框关键词存储
-export function saveKeyWord(type, val) {
-	let arr = []
-	if (uni.getStorageSync(type)) {
-		let arr = JSON.parse(uni.getStorageSync(type))
-		if (arr.indexOf(val) != -1) {
-			console.log('arr.indexOf(val)', arr.indexOf(val))
-			arr.splice(arr.indexOf(val), 1)
-		}
-		arr.unshift(val)
-		if (arr.length > 6) {
-			arr.pop()
-		}
-		uni.setStorageSync(type, JSON.stringify(arr))
-		return arr
-	} else {
-		arr.unshift(val)
-		uni.setStorageSync(type, JSON.stringify(arr))
-		return arr
-	}
-}
-
-//价格保留两位小数点正则
-export function testPrice(val) {
-	let reg = /^\d+(\.([0-9]|\d[0-9]))?$/
-	return reg.test(val)
-}

+ 7 - 0
vite.config.js

@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import uni from '@dcloudio/vite-plugin-uni'
+// https://vitejs.dev/config/
+export default defineConfig({
+  plugins: [uni()],
+  transpileDependencies: ['uview-plus'],
+})

Some files were not shown because too many files changed in this diff