李万涛 hai 1 ano
achega
0b5fd2bdd2
Modificáronse 100 ficheiros con 53950 adicións e 0 borrados
  1. 16 0
      .hbuilderx/launch.json
  2. 31 0
      App.vue
  3. 44 0
      api/genPic/index.js
  4. 27 0
      api/test/index.js
  5. 22 0
      common/config.js
  6. 136 0
      components/genAvatarComp/index.scss
  7. 271 0
      components/genAvatarComp/index.vue
  8. 46 0
      components/navBar/index.scss
  9. 115 0
      components/navBar/index.vue
  10. 20 0
      index.html
  11. 79 0
      main.js
  12. 59 0
      manifest.json
  13. 12 0
      node_modules/.bin/nanoid
  14. 17 0
      node_modules/.bin/nanoid.cmd
  15. 28 0
      node_modules/.bin/nanoid.ps1
  16. 12 0
      node_modules/.bin/parser
  17. 17 0
      node_modules/.bin/parser.cmd
  18. 28 0
      node_modules/.bin/parser.ps1
  19. 268 0
      node_modules/.package-lock.json
  20. 1073 0
      node_modules/@babel/parser/CHANGELOG.md
  21. 19 0
      node_modules/@babel/parser/LICENSE
  22. 19 0
      node_modules/@babel/parser/README.md
  23. 15 0
      node_modules/@babel/parser/bin/babel-parser.js
  24. 5 0
      node_modules/@babel/parser/index.cjs
  25. 1307 0
      node_modules/@babel/parser/lib/index.js
  26. 0 0
      node_modules/@babel/parser/lib/index.js.map
  27. 46 0
      node_modules/@babel/parser/package.json
  28. 241 0
      node_modules/@babel/parser/typings/babel-parser.d.ts
  29. 21 0
      node_modules/@jridgewell/sourcemap-codec/LICENSE
  30. 200 0
      node_modules/@jridgewell/sourcemap-codec/README.md
  31. 164 0
      node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
  32. 0 0
      node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
  33. 175 0
      node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
  34. 0 0
      node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
  35. 6 0
      node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
  36. 74 0
      node_modules/@jridgewell/sourcemap-codec/package.json
  37. 21 0
      node_modules/@vue/compiler-core/LICENSE
  38. 1 0
      node_modules/@vue/compiler-core/README.md
  39. 5486 0
      node_modules/@vue/compiler-core/dist/compiler-core.cjs.js
  40. 5355 0
      node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js
  41. 992 0
      node_modules/@vue/compiler-core/dist/compiler-core.d.ts
  42. 4698 0
      node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js
  43. 7 0
      node_modules/@vue/compiler-core/index.js
  44. 43 0
      node_modules/@vue/compiler-core/package.json
  45. 21 0
      node_modules/@vue/compiler-dom/LICENSE
  46. 1 0
      node_modules/@vue/compiler-dom/README.md
  47. 3047 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js
  48. 2978 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js
  49. 42 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts
  50. 5308 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js
  51. 0 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js
  52. 489 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js
  53. 5459 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.global.js
  54. 0 0
      node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js
  55. 7 0
      node_modules/@vue/compiler-dom/index.js
  56. 43 0
      node_modules/@vue/compiler-dom/package.json
  57. 21 0
      node_modules/@vue/compiler-sfc/LICENSE
  58. 80 0
      node_modules/@vue/compiler-sfc/README.md
  59. 12428 0
      node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js
  60. 473 0
      node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts
  61. 227 0
      node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js
  62. 60 0
      node_modules/@vue/compiler-sfc/package.json
  63. 21 0
      node_modules/@vue/compiler-ssr/LICENSE
  64. 1 0
      node_modules/@vue/compiler-ssr/README.md
  65. 1280 0
      node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js
  66. 4 0
      node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts
  67. 34 0
      node_modules/@vue/compiler-ssr/package.json
  68. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/api.js
  69. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/app.js
  70. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/component.js
  71. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/context.js
  72. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/hooks.js
  73. 22 0
      node_modules/@vue/devtools-api/lib/cjs/api/index.js
  74. 2 0
      node_modules/@vue/devtools-api/lib/cjs/api/util.js
  75. 5 0
      node_modules/@vue/devtools-api/lib/cjs/const.js
  76. 17 0
      node_modules/@vue/devtools-api/lib/cjs/env.js
  77. 44 0
      node_modules/@vue/devtools-api/lib/cjs/index.js
  78. 2 0
      node_modules/@vue/devtools-api/lib/cjs/plugin.js
  79. 111 0
      node_modules/@vue/devtools-api/lib/cjs/proxy.js
  80. 28 0
      node_modules/@vue/devtools-api/lib/cjs/time.js
  81. 108 0
      node_modules/@vue/devtools-api/lib/esm/api/api.d.ts
  82. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/api.js
  83. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/app.d.ts
  84. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/app.js
  85. 78 0
      node_modules/@vue/devtools-api/lib/esm/api/component.d.ts
  86. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/component.js
  87. 5 0
      node_modules/@vue/devtools-api/lib/esm/api/context.d.ts
  88. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/context.js
  89. 180 0
      node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts
  90. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/hooks.js
  91. 6 0
      node_modules/@vue/devtools-api/lib/esm/api/index.d.ts
  92. 6 0
      node_modules/@vue/devtools-api/lib/esm/api/index.js
  93. 4 0
      node_modules/@vue/devtools-api/lib/esm/api/util.d.ts
  94. 1 0
      node_modules/@vue/devtools-api/lib/esm/api/util.js
  95. 2 0
      node_modules/@vue/devtools-api/lib/esm/const.d.ts
  96. 2 0
      node_modules/@vue/devtools-api/lib/esm/const.js
  97. 15 0
      node_modules/@vue/devtools-api/lib/esm/env.d.ts
  98. 12 0
      node_modules/@vue/devtools-api/lib/esm/env.js
  99. 18 0
      node_modules/@vue/devtools-api/lib/esm/index.d.ts
  100. 26 0
      node_modules/@vue/devtools-api/lib/esm/index.js

+ 16 - 0
.hbuilderx/launch.json

xqd
@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 31 - 0
App.vue

xqd
@@ -0,0 +1,31 @@
+<script>
+	export default {
+		onLaunch: function() {
+
+
+		},
+		onShow: function() {
+
+		},
+		onHide: function() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
+	@import "@/uni_modules/uview-ui/index.scss";
+
+	/*每个页面公共css */
+	@import '@/uni_modules/uni-scss/index.scss';
+	/* #ifndef APP-NVUE */
+	@import '@/static/customicons.css';
+
+	// 设置整个项目的背景色
+	page {
+		background-color: #f5f5f5;
+	}
+
+	/* #endif */
+</style>

+ 44 - 0
api/genPic/index.js

xqd
@@ -0,0 +1,44 @@
+const {
+	http
+} = uni.$u
+
+
+
+export const buildPic = (params, config = {}) => http.post('/api/buildPicTrue', params, config)
+export const getImage = (params, config = {}) => http.post('/api/getImage', params, config)
+
+// 微信授权登陆
+export const wxAuthLoginReq = (params, config = {}) => http.post('/api/auth/mnplogin', params, config)
+
+// export const pushFile = (params, config = {}) => http.post('/api/checkAndUploadImg', params, config)
+
+// 创建任务
+export const createTask = (params, config = {}) => http.post('/api/createTask', params, config)
+
+// 任务列表
+export const taskList = (params, config = {}) => http.get('/api/getTaskList', params, config)
+
+
+export const getUserInfo = (params, config = {}) => http.get('/api/getUserInfo', params, config)
+
+// 获取AI模型
+// export const getAiModal = (params, config = {}) => http.get('/api/getUserInfo', params, config)
+
+
+
+// export const getAiModel = (params, config = {}) => http.get('/api/getAiModel', params, config)
+
+
+export const getAiModel = (params, config = {}) => {
+	let apiUrl = '/api/getAiModel'
+	Object.keys(params).forEach((item, index) => {
+		if (index == 0) {
+			apiUrl += `?${item}=${params[item]}`
+		} else {
+			apiUrl += `&${item}=${params[item]}`
+		}
+	})
+	console.log('处理后的apiUrl', apiUrl);
+
+	return http.get(apiUrl, params, config)
+}

+ 27 - 0
api/test/index.js

xqd
@@ -0,0 +1,27 @@
+const {
+	http
+} = uni.$u
+
+
+// 请求首页顶部轮播
+export const getCode = (params, config = {}) => http.post('/api/sms/send', params, config)
+
+
+
+export const getImage = (params, config = {}) => http.post('/api/getImage', params, config)
+
+
+
+export const getActivityDataDetailReq = (params, config = {}) => {
+	let apiUrl = '/api/users/getActivityDataDetail'
+	Object.keys(params).forEach((item, index) => {
+		if (index == 0) {
+			apiUrl += `?${item}=${params[item]}`
+		} else {
+			apiUrl += `&${item}=${params[item]}`
+		}
+	})
+	console.log('处理后的apiUrl', apiUrl);
+
+	return http.get(apiUrl, params, config)
+}

+ 22 - 0
common/config.js

xqd
@@ -0,0 +1,22 @@
+let configUrl = {}
+if (process.env.NODE_ENV === 'development') {
+	configUrl = {
+		baseUrl: 'https://mall.wangkuncheng.cn/index.php',
+		picUrl: 'https://t23.9026.com',
+		picBase: 'https://mall.wangkuncheng.cn/index.php',
+
+		appId: 'wx03acaa2776bdaceb',
+		shareModel: 0
+	}
+} else {
+	configUrl = {
+		baseUrl: 'https://mall.wangkuncheng.cn/index.php',
+		picUrl: 'https://t23.9026.com',
+		picBase: 'https://mall.wangkuncheng.cn/index.php',
+
+		appId: 'wx03acaa2776bdaceb',
+		shareModel: 0
+	}
+}
+
+module.exports = configUrl

+ 136 - 0
components/genAvatarComp/index.scss

xqd
@@ -0,0 +1,136 @@
+.upload{
+		padding: 20px 0px 0 20px;
+		
+		.tipTxt{
+			margin-bottom: 10rpx;
+		}
+		
+	}
+
+	.topBox {
+		height: 500rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+
+	::v-deep .buttonCalss {
+		margin-top: 40px !important;
+	}
+
+	::v-deep .u-upload__wrap {
+		// width: 350px !important;
+		// height: 350px !important;
+		// margin: 0 auto;
+	}
+
+
+
+	.imagesRow {
+		width: 80px;
+		height: 80px;
+		margin-left: 5px;
+	}
+
+	.textBorder {
+		width: 70%;
+		height: 130px;
+		border-radius: 50% 50% 0 0;
+	}
+
+	.images {
+		margin: 40px 0px 0px 20px;
+		width: 70%;
+		height: 130px;
+		border-radius: 50% 50% 0 0;
+	}
+
+	.content {
+		padding-left: 0;
+	}
+
+	.logo {
+		height: 200rpx;
+		width: 200rpx;
+		margin-top: 200rpx;
+		margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 50rpx;
+	}
+
+	.text-area {
+		display: flex;
+		justify-content: center;
+	}
+
+	.title {
+		font-size: 36rpx;
+		color: #8f8f94;
+	}
+
+	.borders {
+		border: black 2px solid;
+	}
+
+	::v-deep .u-upload__wrap__preview__image {
+		// width: 350px !important;
+		// height: 350px !important;
+	}
+	
+	::v-deep .u-upload__button {
+		border: 1rpx dashed #999!important;
+		border-radius: 20rpx!important;
+	}
+	
+	
+	.btnBox{
+		position: fixed;
+		bottom: 20px;
+		right: 10px;
+		width: 80px;
+		height: 80px;
+		border-radius: 50%;
+	
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		.btn{
+			width: 80px;
+			height: 80px;
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			color: white;
+			font-weight: bold;
+		}
+		
+		.b1{
+			background: green;
+		}
+		.b2{
+			background: orange;
+		}
+	
+	}
+
+
+.examplePic{
+	display: flex;
+	justify-content: space-around;
+	padding: 0 20rpx 0 20rpx;
+	.item{
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		width: 22%;
+		.imagesRow{
+			width: 100%;
+		}
+	}
+}
+
+.tipTxtBox{
+	padding: 0 20px;
+}

+ 271 - 0
components/genAvatarComp/index.vue

xqd
@@ -0,0 +1,271 @@
+<template>
+	<view class="content">
+		<view class="upload">
+			<view class="tipTxt">
+				请按要求点击上传您的照片
+			</view>
+			<u-upload :deletable="showDelBtn" style="margin-top: 20px;" :fileList="fileList1" @afterRead="afterRead"
+				@delete="deletePic" name="1" :maxCount="1" width="290" height="290"></u-upload>
+		</view>
+
+
+		<u-divider text="照片示例"></u-divider>
+
+		<view class="examplePic">
+			<view class="item" v-for="(item,index) in exampleList" @click="previewImg(exampleList, index)">
+				<image class="imagesRow" :src="item.url" mode="widthFix"></image>
+				<u-icon :name="index==0?'checkmark':'close'" :label="item.text" labelPos="top" labelSize="12px" style=""
+					color="#febb2b" size="18"></u-icon>
+			</view>
+		</view>
+		<view class="tipTxtBox">
+			<u--text color="#aeaeae" size="12px" align="center" text="温馨提醒:目前婴儿、老人、眼镜等特征效果有不稳定性,我们正在努力优化"></u--text>
+		</view>
+		<!-- <view v-if="is_show" style="margin-top: 40px;"><u-button class="buttonCalss" type="warning" shape="circle"
+				size="large" text="制作数字人分身" @click="buildPicTrue()"></u-button></view> -->
+
+		<!-- <view class="" style="display: flex;justify-content: space-between;margin-top: 20px;">
+			<button type="warn" style="" @click="reset">重新上传</button>
+			<button type="primary" style="" @click="buildPicTrue()">生成图片</button>
+		</view> -->
+
+		<view class="btnBox" v-if="isGen" style="display: flex;justify-content: space-between;margin-top: 20px;">
+			<view class="btn b1" v-if="stepUrl!==''&&showGenBtn" @click="buildPicTrue()">
+				立即生成
+			</view>
+			<view class="btn b2" v-else @click="reset">
+				重新上传
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				userInfo: uni.getStorageSync('userInfo'),
+
+				value: 0,
+				is_show: false,
+				fileList1: [],
+
+				stepUrl: '',
+				isGen: false,
+				showGenBtn: true,
+
+				fileListUp: [],
+				aiPath: '',
+
+				showDelBtn: true,
+
+				exampleList: [{
+						text: '五官清晰',
+						url: require('@/static/images/WX20231024-110939.png')
+					},
+					{
+						text: '不是正面',
+						url: require('@/static/images/20231024-110955.png')
+					},
+					{
+						text: '有遮挡',
+						url: require('@/static/images/20231024-111008.png')
+					},
+					{
+						text: '过于模糊',
+						url: require('@/static/images/20231024-111021.png')
+					},
+				],
+			}
+		},
+		onLoad() {
+
+		},
+		watch: {
+			stepUrl(n, o) {
+				if (n != '') {
+					this.isGen = true
+					this.showGenBtn = true
+				} else {
+					this.isGen = false
+					this.showGenBtn = false
+				}
+			}
+		},
+		methods: {
+
+			//点击预览图片
+			previewImg(list, index) {
+				let listr = []
+
+				list.forEach((item, index) => {
+					listr.push(item.url)
+				})
+
+				console.log('listr', listr);
+				uni.previewImage({
+					current: index,
+					urls: listr, //存放图片的数组
+					// urls: ["/static/images/WX20231024-110939.png", "/static/images/20231024-110955.png"],
+					loop: true,
+					indicator: 'default'
+				})
+			},
+
+			reset() {
+				this.stepUrl = ''
+				this.fileList1 = []
+				this.isGen = false
+
+				this.showDelBtn = true
+			},
+			change() {
+
+			},
+			click() {
+
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+				this.stepUrl = ''
+				// this.fileList1 = []
+				console.log('event', event);
+			},
+			// 新增图片
+			async afterRead(event) {
+				if (!uni.getStorageSync('token')) {
+					this.$toast('请登录后上传')
+					setTimeout(() => {
+						uni.reLaunch({
+							url: '/pages/main/index'
+						})
+					}, 1500)
+					return
+				}
+
+				console.log('afterRead------:', event);
+				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+
+					const result = await this.uploadFilePromise(lists[i].url)
+					// const result = await this.uploadFilePromise(lists[i])
+
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
+				}
+			},
+
+			async uploadFilePromise(url) {
+
+				let _this = this
+				return new Promise((resolve, reject) => {
+					let a = uni.uploadFile({
+						url: _this.$baseUrl + '/api/attachments', // 仅为示例,非真实的接口地址
+						filePath: url,
+						name: 'file',
+						header: {
+							Authorization: uni.getStorageSync('token'),
+						},
+						formData: {
+							// user: 'test',
+							'tag': 'camera',
+							// pathId: _this.aiPath,
+						},
+						success: (res) => {
+							let result = JSON.parse(res.data)
+
+							if (result.code == 0) {
+								// _this.fileListUp.push(result.data.data)
+
+								_this.stepUrl = result.data.file
+								console.log('上传并校验图片返回值--头像:', _this.stepUrl);
+								setTimeout(() => {
+									resolve(res.data.data)
+								}, 1000)
+							}
+						}
+					});
+				})
+			},
+
+			buildPicTrue() {
+				if (!this.stepUrl) {
+					return uni.showToast({
+						title: '请上传图片',
+						icon: 'none'
+					})
+				}
+				uni.showLoading({
+					title: '生成中...'
+				})
+				let _this = this
+				uni.request({
+					url: _this.$baseUrl + '/api/buildPicTrue', // 接口地址
+					method: 'POST', // 请求方法,可以是 GET、POST 等
+					data: {
+						pathPictrue: this.stepUrl,
+					},
+					header: {
+						Authorization: uni.getStorageSync('token'),
+					},
+					success: function(res) {
+						uni.request({
+							url: _this.$baseUrl + "/api/getImage",
+							method: 'POST',
+							data: {
+								file_name: res.data.data.result,
+							},
+							header: {
+								Authorization: uni.getStorageSync('token'),
+							},
+							success: function(res) {
+								_this.showDelBtn = false
+								// _this.stepUrl = ''
+								_this.showGenBtn = false
+								console.log(res)
+								console.log('制作商城的图片地址:', res.data.data.url)
+								_this.fileList1 = [{
+									// url: 'http://mall.wangkuncheng.cn/upload/lamp/20231031/d8c96316c879464cae5f677824e0ac4d.jpg'
+									url: res.data.data.url
+								}]
+								uni.hideLoading()
+							}
+
+						})
+						// 请求成功时的回调函数
+						console.log('请求成功', res.data);
+						// 在这里处理接口返回的数据
+					},
+					fail: function(res) {
+						// 请求失败时的回调函数
+						console.log('请求失败', res);
+						// 在这里处理请求失败的情况
+					},
+					complete: function() {
+						// 请求完成时的回调函数,无论成功或失败都会执行
+						console.log('请求完成');
+					}
+				});
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	@import "./index.scss";
+</style>

+ 46 - 0
components/navBar/index.scss

xqd
@@ -0,0 +1,46 @@
+	.navbar {
+			// background-image: url('https://img-home.csdnimg.cn/images/20230817060237.png') !important;
+			// background-size: 100% 100% !important;
+			background: green;
+			position: relative;
+			// z-index: 99;
+			.narbar-flexd {
+				// background-image: url('https://img-home.csdnimg.cn/images/20230817060237.png') !important;
+				// background-size: 100% 100% !important;
+				
+				background: green;
+				position: fixed;
+				top: 0;
+				left: 0;
+				z-index: 99;
+				width: 100%;
+				// padding-bottom: 10rpx;
+				.narbar-content {
+					padding: 0 40rpx;
+					display: flex;
+					box-sizing: border-box;
+					// justify-content:center;
+					align-items: center;
+					.left{
+						position: absolute;
+						left: 5%;
+						font-weight: 600;
+						display: flex;
+						align-items: center;
+						
+					}
+					.title{
+						font-size: 16px;
+						color: #fff;
+						font-weight: 600;
+						// line-height: 40px;
+					}
+					
+				}
+	 
+				
+			}
+			.navHeight {
+				height: 60px;
+			}
+		}

+ 115 - 0
components/navBar/index.vue

xqd
@@ -0,0 +1,115 @@
+<template>
+	<view class="navbar" :style="{height:statusBarHeight+navBareight +'px',background}"> <!-- 如若不写 高度始终为44 没有找到原因 -->
+		<view class="narbar-flexd" :style="[{background}]">
+			<view :style=" {height:statusBarHeight+'px'}"></view>
+			<view class="narbar-content"
+				:style="{height:navBareight+'px','justify-content':flex=='cen'?'center':'space-between'}">
+
+				<!-- 左侧返回按钮 -->
+				<view class="left" @click="onBack" v-if="back" :style="[{color},{paddingTop}]">
+					<uni-icons type="arrowleft" size="25" :color='color'></uni-icons>
+				</view>
+				<view class="left" @click="" v-if="!back&&navImg">
+					<image :showLoading="true" :src="navImg" style="width:40rpx;height:40rpx;margin-right: 8rpx;"
+						@click="">
+					</image>
+				</view>
+				<view class="title" :style="[{color}]" v-if="title">
+					{{title.replace('true','')}}
+				</view>
+
+			</view>
+		</view>
+		<view class="navHeight" :style="{height:statusBarHeight+navBareight +'px'}"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				statusBarHeight: 20,
+				navBareight: 45,
+				windowWidth: 375,
+			};
+		},
+		props: {
+			backType: { // 标题文字(默认为空)
+				type: String,
+				default: ''
+			},
+			navImg: { // 标题文字(默认为空)
+				type: String,
+				default: ''
+			},
+			flex: { // 标题文字(默认为空)
+				type: String,
+				default: 'left'
+			},
+			title: { // 标题文字(默认为空)
+				type: String,
+				default: ' '
+			},
+			color: { // 标题和返回按钮颜色(默认白色)
+				type: String,
+				default: '#fff'
+			},
+			//建议使用background  因为使用backgroundColor,会导致不识别渐变颜色
+			background: { // 背景颜色(不传值默认透明)
+				type: String,
+				default: 'transparent'
+			},
+			back: { // 是否显示返回按钮(不传值默认不显示)
+				type: Boolean,
+				default: false
+			},
+			backHome: { // 是否显示返回按钮(不传值默认不显示)
+				type: Boolean,
+				default: false
+			},
+		},
+
+		created() {
+			//获取手机系统信息 -- 状态栏高度
+			let {
+				statusBarHeight,
+				windowWidth
+			} = uni.getSystemInfoSync()
+			this.statusBarHeight = statusBarHeight
+			this.windowWidth = windowWidth
+			//去除
+			//#ifndef H5 || MP-ALIPAY ||APP-PLUS
+			//获取小程序胶囊的高度
+			let {
+				top,
+				bottom,
+				left
+			} = uni.getMenuButtonBoundingClientRect()
+			//高度 =(胶囊底部高低-状态栏高度)+(胶囊顶部高度-状态栏内的高度)
+			this.navBareight = (bottom - statusBarHeight) + (top - statusBarHeight)
+			this.windowWidth = left
+			//#endif
+		},
+
+		methods: {
+			// 左侧返回按钮调用
+			onBack() {
+				if (this.backHome) {
+					uni.switchTab({
+						url: '/pages/index/index'
+					})
+				} else {
+					this.$emit("onBack");
+					uni.navigateBack({
+						delta: 1, //返回层数,2则上上页
+					})
+				}
+			}
+		}
+
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "./index.scss";
+</style>

+ 20 - 0
index.html

xqd
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 79 - 0
main.js

xqd
@@ -0,0 +1,79 @@
+// #ifndef VUE3
+import Vue from 'vue'
+import App from './App'
+// import navBar from '@/components/navBar/index.vue'
+
+// Vue.component('navBar', navBar)
+
+
+import uView from '@/uni_modules/uview-ui'
+Vue.use(uView)
+
+import navBar from '@/components/navBar/index.vue'
+
+Vue.component('navBar', navBar)
+
+
+
+import store from 'store/index.js'
+Vue.prototype.$store = store
+
+// 常见功能函数封装
+Vue.prototype.$toast = (title, icon = "none", duration = 1500) => {
+	uni.showToast({
+		title,
+		icon,
+		duration
+	})
+}
+
+
+
+// console.log('uploadUrl----', uploadUrl);
+import uploadUrl from '@/common/config.js'
+Vue.prototype.$picUrl = uploadUrl.picUrl
+Vue.prototype.$picBase = uploadUrl.picBase
+Vue.prototype.$baseUrl = uploadUrl.baseUrl
+
+Vue.prototype.$appId = uploadUrl.appId
+Vue.prototype.$shareType = uploadUrl.shareModel
+
+
+// 常见功能函数封装
+Vue.prototype.$toast = (title, icon = "none", duration = 1500) => {
+	uni.showToast({
+		title,
+		icon,
+		duration
+	})
+}
+
+
+
+// 引入请求封装 
+require('./utils/request/index')(app)
+
+
+Vue.config.productionTip = false
+
+
+App.mpType = 'app'
+
+const app = new Vue({
+	...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+	createSSRApp
+} from 'vue'
+import App from './App.vue'
+export function createApp() {
+	const app = createSSRApp(App)
+	return {
+		app
+	}
+}
+// #endif

+ 59 - 0
manifest.json

xqd
@@ -0,0 +1,59 @@
+{
+    "name" : "genAvatarPic",
+    "appid" : "__UNI__EB6B1D9",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    "app-plus" : {
+        /* 5+App特有相关 */
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "nvueStyleCompiler" : "uni-app",
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {},
+        /* 模块配置 */
+        "distribute" : {
+            /* 应用发布信息 */
+            "android" : {
+                /* android打包配置 */
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            "ios" : {},
+            /* ios打包配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* SDK配置 */
+    "quickapp" : {},
+    /* 快应用特有相关 */
+    "mp-weixin" : {
+        "appid" : "wx98ab2939999e13de",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "vueVersion" : "2"
+}

+ 12 - 0
node_modules/.bin/nanoid

xqd
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+else 
+  exec node  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+fi

+ 17 - 0
node_modules/.bin/nanoid.cmd

xqd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\nanoid\bin\nanoid.cjs" %*

+ 28 - 0
node_modules/.bin/nanoid.ps1

xqd
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
+  } else {
+    & "node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 12 - 0
node_modules/.bin/parser

xqd
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+else 
+  exec node  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+fi

+ 17 - 0
node_modules/.bin/parser.cmd

xqd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@babel\parser\bin\babel-parser.js" %*

+ 28 - 0
node_modules/.bin/parser.ps1

xqd
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
+  } else {
+    & "node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 268 - 0
node_modules/.package-lock.json

xqd
@@ -0,0 +1,268 @@
+{
+  "name": "jiancaiPro2",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "node_modules/@babel/parser": {
+      "version": "7.22.13",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.13.tgz",
+      "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==",
+      "peer": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "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==",
+      "peer": true
+    },
+    "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==",
+      "peer": true,
+      "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/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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "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==",
+      "peer": true,
+      "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/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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "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==",
+      "peer": true
+    },
+    "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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "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==",
+      "peer": true,
+      "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/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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "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==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "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==",
+      "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==",
+      "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==",
+      "engines": {
+        "node": ">=0.10.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==",
+      "peer": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.3",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
+      "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "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==",
+      "peer": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "peer": true
+    },
+    "node_modules/postcss": {
+      "version": "8.4.29",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz",
+      "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
+      "peer": true,
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/shvl": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz",
+      "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==",
+      "deprecated": "older versions vulnerable to prototype pollution"
+    },
+    "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==",
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "peer": true,
+      "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/vuex": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz",
+      "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/devtools-api": "^6.0.0-beta.11"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/vuex-persistedstate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz",
+      "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==",
+      "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+      "dependencies": {
+        "deepmerge": "^4.2.2",
+        "shvl": "^2.0.3"
+      },
+      "peerDependencies": {
+        "vuex": "^3.0 || ^4.0.0-rc"
+      }
+    }
+  }
+}

+ 1073 - 0
node_modules/@babel/parser/CHANGELOG.md

xqd
@@ -0,0 +1,1073 @@
+# Changelog
+
+> **Tags:**
+> - :boom:       [Breaking Change]
+> - :eyeglasses: [Spec Compliance]
+> - :rocket:     [New Feature]
+> - :bug:        [Bug Fix]
+> - :memo:       [Documentation]
+> - :house:      [Internal]
+> - :nail_care:  [Polish]
+
+> Semver Policy: https://github.com/babel/babel/tree/main/packages/babel-parser#semver
+
+_Note: Gaps between patch versions are faulty, broken or test releases._
+
+See the [Babel Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) for the pre-6.8.0 version Changelog.
+
+## 6.17.1 (2017-05-10)
+
+### :bug: Bug Fix
+ * Fix typo in flow spread operator error (Brian Ng)
+ * Fixed invalid number literal parsing ([#473](https://github.com/babel/babylon/pull/473)) (Alex Kuzmenko)
+ * Fix number parser ([#433](https://github.com/babel/babylon/pull/433)) (Alex Kuzmenko)
+ * Ensure non pattern shorthand props are checked for reserved words ([#479](https://github.com/babel/babylon/pull/479)) (Brian Ng)
+ * Remove jsx context when parsing arrow functions ([#475](https://github.com/babel/babylon/pull/475)) (Brian Ng)
+ * Allow super in class properties ([#499](https://github.com/babel/babylon/pull/499)) (Brian Ng)
+ * Allow flow class field to be named constructor ([#510](https://github.com/babel/babylon/pull/510)) (Brian Ng)
+
+## 6.17.0 (2017-04-20)
+
+### :bug: Bug Fix
+ * Cherry-pick #418 to 6.x ([#476](https://github.com/babel/babylon/pull/476)) (Sebastian McKenzie)
+ * Add support for invalid escapes in tagged templates ([#274](https://github.com/babel/babylon/pull/274)) (Kevin Gibbons)
+ * Throw error if new.target is used outside of a function ([#402](https://github.com/babel/babylon/pull/402)) (Brian Ng)
+ * Fix parsing of class properties ([#351](https://github.com/babel/babylon/pull/351)) (Kevin Gibbons)
+ * Fix parsing yield with dynamicImport ([#383](https://github.com/babel/babylon/pull/383)) (Brian Ng)
+ * Ensure consistent start args for parseParenItem ([#386](https://github.com/babel/babylon/pull/386)) (Brian Ng)
+
+## 7.0.0-beta.8 (2017-04-04)
+
+### New Feature
+* Add support for flow type spread (#418) (Conrad Buck)
+* Allow statics in flow interfaces (#427) (Brian Ng)
+
+### Bug Fix
+* Fix predicate attachment to match flow parser (#428) (Brian Ng)
+* Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray)
+* Fix rest parameters with array and objects (#424) (Brian Ng)
+* Fix number parser (#433) (Alex Kuzmenko)
+
+### Docs
+* Fix CONTRIBUTING.md [skip ci] (#432) (Alex Kuzmenko)
+
+### Internal
+* Use babel-register script when running babel smoke tests (#442) (Brian Ng)
+
+## 7.0.0-beta.7 (2017-03-22)
+
+### Spec Compliance
+* Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu)
+
+### Bug Fix
+
+* Fix push-pop logic in flow (#405) (Daniel Tschinder)
+
+## 7.0.0-beta.6 (2017-03-21)
+
+### New Feature
+* Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons)
+
+### Polish
+* Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal)
+
+### Docs
+
+* [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning)
+
+## 7.0.0-beta.5 (2017-03-21)
+
+### Bug Fix
+* Throw error if new.target is used outside of a function (#402) (Brian Ng)
+* Fix parsing of class properties (#351) (Kevin Gibbons)
+
+### Other
+ * Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy)
+ * Optimize travis builds (#419) (Daniel Tschinder)
+ * Update codecov to 2.0 (#412) (Daniel Tschinder)
+ * Fix spec for ClassMethod: It doesn't have a function, it *is* a function. (#406) [skip ci] (Andy)
+ * Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning)
+ * Upgrade flow to 0.41 (Daniel Tschinder)
+ * Fix watch command (#403) (Brian Ng)
+ * Update yarn lock (Daniel Tschinder)
+ * Fix watch command (#403) (Brian Ng)
+ * chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot])
+ * Add estree test for correct order of directives (Daniel Tschinder)
+ * Add DoExpression to spec (#364) (Alex Kuzmenko)
+ * Mention cloning of repository in CONTRIBUTING.md (#391) [skip ci] (Sumedh Nimkarde)
+ * Explain how to run only one test (#389) [skip ci] (Aaron Ang)
+
+ ## 7.0.0-beta.4 (2017-03-01)
+
+* Don't consume async when checking for async func decl (#377) (Brian Ng)
+* add `ranges` option [skip ci] (Henry Zhu)
+* Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine)
+
+## 7.0.0-beta.3 (2017-02-28)
+
+- [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384)
+- Merge changes from 6.x
+
+## 7.0.0-beta.2 (2017-02-20)
+
+- estree: correctly change literals in all cases (#368) (Daniel Tschinder)
+
+## 7.0.0-beta.1 (2017-02-20)
+
+- Fix negative number literal typeannotations (#366) (Daniel Tschinder)
+- Update contributing with more test info [skip ci] (#355) (Brian Ng)
+
+## 7.0.0-beta.0 (2017-02-15)
+
+- Reintroduce Variance node (#333) (Daniel Tschinder)
+- Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick)
+- [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail)
+- chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot])
+- chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot])
+- Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder)
+- Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi)
+- Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder)
+- Remove classConstructorCall plugin (#291) (Brian Ng)
+- Update yarn.lock (Daniel Tschinder)
+- Update cross-env to 3.x (Daniel Tschinder)
+- [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov)
+- Remove `String.fromCodePoint` shim (#279) (Mathias Bynens)
+
+## 6.16.1 (2017-02-23)
+
+### :bug: Regression
+
+- Revert "Fix export default async function to be FunctionDeclaration" ([#375](https://github.com/babel/babylon/pull/375))
+
+Need to modify Babel for this AST node change, so moving to 7.0.
+
+- Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" ([#376](https://github.com/babel/babylon/pull/376))
+
+[react-native](https://github.com/facebook/react-native/issues/12542) broke with this so we reverted.
+
+## 6.16.0 (2017-02-23)
+
+### :rocket: New Feature
+
+***ESTree*** compatibility as plugin ([#277](https://github.com/babel/babylon/pull/277)) (Daniel Tschinder)
+
+We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin `estree` can be enabled. In this mode the parser will output an AST that is compliant to the specs of [ESTree](https://github.com/estree/estree/)
+
+We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include `acorn`, `esprima`, `espree`, `flow-parser`, etc.
+
+To enable `estree` mode simply add the plugin in the config:
+```json
+{
+  "plugins": [ "estree" ]
+}
+```
+
+If you want to migrate your project from non-ESTree mode to ESTree, have a look at our [Readme](https://github.com/babel/babylon/#output), where all deviations are mentioned.
+
+Add a parseExpression public method ([#213](https://github.com/babel/babylon/pull/213)) (jeromew)
+
+Babylon exports a new function to parse a single expression
+
+```js
+import { parseExpression } from 'babylon';
+
+const ast = parseExpression('x || y && z', options);
+```
+
+The returned AST will only consist of the expression. The options are the same as for `parse()`
+
+Add startLine option ([#346](https://github.com/babel/babylon/pull/346)) (Raphael Mu)
+
+A new option was added to babylon allowing to change the initial linenumber for the first line which is usually `1`.
+Changing this for example to `100` will make line `1` of the input source to be marked as line `100`, line `2` as `101`, line `3` as `102`, ...
+
+Function predicate declaration ([#103](https://github.com/babel/babylon/pull/103)) (Panagiotis Vekris)
+
+Added support for function predicates which flow introduced in version 0.33.0
+
+```js
+declare function is_number(x: mixed): boolean %checks(typeof x === "number");
+```
+
+Allow imports in declare module ([#315](https://github.com/babel/babylon/pull/315)) (Daniel Tschinder)
+
+Added support for imports within module declarations which flow introduced in version 0.37.0
+
+```js
+declare module "C" {
+  import type { DT } from "D";
+  declare export type CT = { D: DT };
+}
+```
+
+### :eyeglasses: Spec Compliance
+
+Forbid semicolons after decorators in classes ([#352](https://github.com/babel/babylon/pull/352)) (Kevin Gibbons)
+
+This example now correctly throws an error when there is a semicolon after the decorator:
+
+```js
+class A {
+@a;
+foo(){}
+}
+```
+
+Keywords are not allowed as local specifier ([#307](https://github.com/babel/babylon/pull/307)) (Daniel Tschinder)
+
+Using keywords in imports is not allowed anymore:
+
+```js
+import { default } from "foo";
+import { a as debugger } from "foo";
+```
+
+Do not allow overwritting of primitive types ([#314](https://github.com/babel/babylon/pull/314)) (Daniel Tschinder)
+
+In flow it is now forbidden to overwrite the primitive types `"any"`, `"mixed"`, `"empty"`, `"bool"`, `"boolean"`, `"number"`, `"string"`, `"void"` and `"null"` with your own type declaration.
+
+Disallow import type { type a } from … ([#305](https://github.com/babel/babylon/pull/305)) (Daniel Tschinder)
+
+The following code now correctly throws an error
+
+```js
+import type { type a } from "foo";
+```
+
+Don't parse class properties without initializers when classProperties is disabled and Flow is enabled ([#300](https://github.com/babel/babylon/pull/300)) (Andrew Levine)
+
+Ensure that you enable the `classProperties` plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the `flow` plugin but this was not intended the behaviour.
+
+If you enable the flow plugin you can only define the type of the class properties, but not initialize them.
+
+Fix export default async function to be FunctionDeclaration ([#324](https://github.com/babel/babylon/pull/324)) (Daniel Tschinder)
+
+Parsing the following code now returns a `FunctionDeclaration` AST node instead of `FunctionExpression`.
+
+```js
+export default async function bar() {};
+```
+
+### :nail_care: Polish
+
+Improve error message on attempt to destructure named import ([#288](https://github.com/babel/babylon/pull/288)) (Brian Ng)
+
+### :bug: Bug Fix
+
+Fix negative number literal typeannotations ([#366](https://github.com/babel/babylon/pull/366)) (Daniel Tschinder)
+
+Ensure takeDecorators is called on exported class ([#358](https://github.com/babel/babylon/pull/358)) (Brian Ng)
+
+ESTree: correctly change literals in all cases ([#368](https://github.com/babel/babylon/pull/368)) (Daniel Tschinder)
+
+Correctly convert RestProperty to Assignable ([#339](https://github.com/babel/babylon/pull/339)) (Daniel Tschinder)
+
+Fix #321 by allowing question marks in type params ([#338](https://github.com/babel/babylon/pull/338)) (Daniel Tschinder)
+
+Fix #336 by correctly setting arrow-param ([#337](https://github.com/babel/babylon/pull/337)) (Daniel Tschinder)
+
+Fix parse error when destructuring `set` with default value ([#317](https://github.com/babel/babylon/pull/317)) (Brian Ng)
+
+Fix ObjectTypeCallProperty static ([#298](https://github.com/babel/babylon/pull/298)) (Dan Harper)
+
+
+### :house: Internal
+
+Fix generator-method-with-computed-name spec ([#360](https://github.com/babel/babylon/pull/360)) (Alex Rattray)
+
+Fix flow type-parameter-declaration test with unintended semantic ([#361](https://github.com/babel/babylon/pull/361)) (Alex Rattray)
+
+Cleanup and splitup parser functions ([#295](https://github.com/babel/babylon/pull/295)) (Daniel Tschinder)
+
+chore(package): update flow-bin to version 0.38.0 ([#313](https://github.com/babel/babylon/pull/313)) (greenkeeper[bot])
+
+Call inner function instead of 1:1 copy to plugin ([#294](https://github.com/babel/babylon/pull/294)) (Daniel Tschinder)
+
+Update eslint-config-babel to the latest version 🚀 ([#299](https://github.com/babel/babylon/pull/299)) (greenkeeper[bot])
+
+Update eslint-config-babel to the latest version 🚀 ([#293](https://github.com/babel/babylon/pull/293)) (greenkeeper[bot])
+
+devDeps: remove eslint-plugin-babel ([#292](https://github.com/babel/babylon/pull/292)) (Kai Cataldo)
+
+Correct indent eslint rule config ([#276](https://github.com/babel/babylon/pull/276)) (Daniel Tschinder)
+
+Fail tests that have expected.json and throws-option ([#285](https://github.com/babel/babylon/pull/285)) (Daniel Tschinder)
+
+### :memo: Documentation
+
+Update contributing with more test info [skip ci] ([#355](https://github.com/babel/babylon/pull/355)) (Brian Ng)
+
+Update API documentation ([#330](https://github.com/babel/babylon/pull/330)) (Timothy Gu)
+
+Added keywords to package.json ([#323](https://github.com/babel/babylon/pull/323)) (Dmytro)
+
+AST spec: fix casing of `RegExpLiteral` ([#318](https://github.com/babel/babylon/pull/318)) (Mathias Bynens)
+
+## 6.15.0 (2017-01-10)
+
+### :eyeglasses: Spec Compliance
+
+Add support for Flow shorthand import type ([#267](https://github.com/babel/babylon/pull/267)) (Jeff Morrison)
+
+This change implements flows new shorthand import syntax
+and where previously you had to write this code:
+
+```js
+import {someValue} from "blah";
+import type {someType} from "blah";
+import typeof {someOtherValue} from "blah";
+```
+
+you can now write it like this:
+
+```js
+import {
+  someValue,
+  type someType,
+  typeof someOtherValue,
+} from "blah";
+```
+
+For more information look at [this](https://github.com/facebook/flow/pull/2890) pull request.
+
+flow: allow leading pipes in all positions ([#256](https://github.com/babel/babylon/pull/256)) (Vladimir Kurchatkin)
+
+This change now allows a leading pipe everywhere types can be used:
+```js
+var f = (x): | 1 | 2 => 1;
+```
+
+Throw error when exporting non-declaration ([#241](https://github.com/babel/babylon/pull/241)) (Kai Cataldo)
+
+Previously babylon parsed the following exports, although they are not valid:
+```js
+export typeof foo;
+export new Foo();
+export function() {};
+export for (;;);
+export while(foo);
+```
+
+### :bug: Bug Fix
+
+Don't set inType flag when parsing property names ([#266](https://github.com/babel/babylon/pull/266)) (Vladimir Kurchatkin)
+
+This fixes parsing of this case:
+
+```js
+const map = {
+  [age <= 17] : 'Too young'
+};
+```
+
+Fix source location for JSXEmptyExpression nodes (fixes #248) ([#249](https://github.com/babel/babylon/pull/249)) (James Long)
+
+The following case produced an invalid AST
+```js
+<div>{/* foo */}</div>
+```
+
+Use fromCodePoint to convert high value unicode entities ([#243](https://github.com/babel/babylon/pull/243)) (Ryan Duffy)
+
+When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST.
+
+Rename folder to avoid Windows-illegal characters ([#281](https://github.com/babel/babylon/pull/281)) (Ryan Plant)
+
+Allow this.state.clone() when parsing decorators ([#262](https://github.com/babel/babylon/pull/262)) (Alex Rattray)
+
+### :house: Internal
+
+User external-helpers ([#254](https://github.com/babel/babylon/pull/254)) (Daniel Tschinder)
+
+Add watch script for dev ([#234](https://github.com/babel/babylon/pull/234)) (Kai Cataldo)
+
+Freeze current plugins list for "*" option, and remove from README.md ([#245](https://github.com/babel/babylon/pull/245)) (Andrew Levine)
+
+Prepare tests for multiple fixture runners. ([#240](https://github.com/babel/babylon/pull/240)) (Daniel Tschinder)
+
+Add some test coverage for decorators stage-0 plugin ([#250](https://github.com/babel/babylon/pull/250)) (Andrew Levine)
+
+Refactor tokenizer types file ([#263](https://github.com/babel/babylon/pull/263)) (Sven SAULEAU)
+
+Update eslint-config-babel to the latest version 🚀 ([#273](https://github.com/babel/babylon/pull/273)) (greenkeeper[bot])
+
+chore(package): update rollup to version 0.41.0 ([#272](https://github.com/babel/babylon/pull/272)) (greenkeeper[bot])
+
+chore(package): update flow-bin to version 0.37.0 ([#255](https://github.com/babel/babylon/pull/255)) (greenkeeper[bot])
+
+## 6.14.1 (2016-11-17)
+
+### :bug: Bug Fix
+
+Allow `"plugins": ["*"]` ([#229](https://github.com/babel/babylon/pull/229)) (Daniel Tschinder)
+
+```js
+{
+  "plugins": ["*"]
+}
+```
+
+Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer.
+
+## 6.14.0 (2016-11-16)
+
+### :eyeglasses: Spec Compliance
+
+Throw error for reserved words `enum` and `await` ([#195](https://github.com/babel/babylon/pull/195)) (Kai Cataldo)
+
+[11.6.2.2 Future Reserved Words](http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words)
+
+Babylon will throw for more reserved words such as `enum` or `await` (in strict mode).
+
+```
+class enum {} // throws
+class await {} // throws in strict mode (module)
+```
+
+Optional names for function types and object type indexers ([#197](https://github.com/babel/babylon/pull/197)) (Gabe Levi)
+
+So where you used to have to write
+
+```js
+type A = (x: string, y: boolean) => number;
+type B = (z: string) => number;
+type C = { [key: string]: number };
+```
+
+you can now write (with flow 0.34.0)
+
+```js
+type A = (string, boolean) => number;
+type B = string => number;
+type C = { [string]: number };
+```
+
+Parse flow nested array type annotations like `number[][]` ([#219](https://github.com/babel/babylon/pull/219)) (Bernhard Häussner)
+
+Supports these form now of specifying array types:
+
+```js
+var a: number[][][][];
+var b: string[][];
+```
+
+### :bug: Bug Fix
+
+Correctly eat semicolon at the end of `DelcareModuleExports` ([#223](https://github.com/babel/babylon/pull/223))  (Daniel Tschinder)
+
+```
+declare module "foo" { declare module.exports: number }
+declare module "foo" { declare module.exports: number; }  // also allowed now
+```
+
+### :house: Internal
+
+ * Count Babel tests towards Babylon code coverage ([#182](https://github.com/babel/babylon/pull/182)) (Moti Zilberman)
+ * Fix strange line endings ([#214](https://github.com/babel/babylon/pull/214)) (Thomas Grainger)
+ * Add node 7 (Daniel Tschinder)
+ * chore(package): update flow-bin to version 0.34.0 ([#204](https://github.com/babel/babylon/pull/204)) (Greenkeeper)
+
+## v6.13.1 (2016-10-26)
+
+### :nail_care: Polish
+
+- Use rollup for bundling to speed up startup time ([#190](https://github.com/babel/babylon/pull/190)) ([@drewml](https://github.com/DrewML))
+
+```js
+const babylon = require('babylon');
+const ast = babylon.parse('var foo = "lol";');
+```
+
+With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph.
+
+**Without bundling**
+![image](https://cloud.githubusercontent.com/assets/5233399/19420264/3133497e-93ad-11e6-9a6a-2da59c4f5c13.png)
+
+**With bundling**
+![image](https://cloud.githubusercontent.com/assets/5233399/19420267/388f556e-93ad-11e6-813e-7c5c396be322.png)
+
+- add clean command [skip ci] ([#201](https://github.com/babel/babylon/pull/201)) (Henry Zhu)
+- add ForAwaitStatement (async generator already added) [skip ci] ([#196](https://github.com/babel/babylon/pull/196)) (Henry Zhu)
+
+## v6.13.0 (2016-10-21)
+
+### :eyeglasses: Spec Compliance
+
+Property variance type annotations for Flow plugin ([#161](https://github.com/babel/babylon/pull/161)) (Sam Goldman)
+
+> See https://flowtype.org/docs/variance.html for more information
+
+```js
+type T = { +p: T };
+interface T { -p: T };
+declare class T { +[k:K]: V };
+class T { -[k:K]: V };
+class C2 { +p: T = e };
+```
+
+Raise error on duplicate definition of __proto__ ([#183](https://github.com/babel/babylon/pull/183)) (Moti Zilberman)
+
+```js
+({ __proto__: 1, __proto__: 2 }) // Throws an error now
+```
+
+### :bug: Bug Fix
+
+Flow: Allow class properties to be named `static` ([#184](https://github.com/babel/babylon/pull/184)) (Moti Zilberman)
+
+```js
+declare class A {
+  static: T;
+}
+```
+
+Allow "async" as identifier for object literal property shorthand ([#187](https://github.com/babel/babylon/pull/187)) (Andrew Levine)
+
+```js
+var foo = { async, bar };
+```
+
+### :nail_care: Polish
+
+Fix flowtype and add inType to state ([#189](https://github.com/babel/babylon/pull/189)) (Daniel Tschinder)
+
+> This improves the performance slightly (because of hidden classes)
+
+### :house: Internal
+
+Fix .gitattributes line ending setting ([#191](https://github.com/babel/babylon/pull/191)) (Moti Zilberman)
+
+Increase test coverage ([#175](https://github.com/babel/babylon/pull/175) (Moti Zilberman)
+
+Readd missin .eslinignore for IDEs (Daniel Tschinder)
+
+Error on missing expected.json fixture in CI ([#188](https://github.com/babel/babylon/pull/188)) (Moti Zilberman)
+
+Add .gitattributes and .editorconfig for LF line endings ([#179](https://github.com/babel/babylon/pull/179)) (Moti Zilberman)
+
+Fixes two tests that are failing after the merge of #172 ([#177](https://github.com/babel/babylon/pull/177)) (Moti Zilberman)
+
+## v6.12.0 (2016-10-14)
+
+### :eyeglasses: Spec Compliance
+
+Implement import() syntax ([#163](https://github.com/babel/babylon/pull/163)) (Jordan Gensler)
+
+#### Dynamic Import
+
+- Proposal Repo: https://github.com/domenic/proposal-dynamic-import
+- Championed by [@domenic](https://github.com/domenic)
+- stage-2
+- [sept-28 tc39 notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-09/sept-28.md#113a-import)
+
+> This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript
+
+```js
+import(`./section-modules/${link.dataset.entryModule}.js`)
+.then(module => {
+  module.loadPageInto(main);
+})
+```
+
+Add EmptyTypeAnnotation ([#171](https://github.com/babel/babylon/pull/171)) (Sam Goldman)
+
+#### EmptyTypeAnnotation
+
+Just wasn't covered before.
+
+```js
+type T = empty;
+```
+
+### :bug: Bug Fix
+
+Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
+
+```js
+// was failing due to sparse array
+export const { foo: [ ,, qux7 ] } = bar;
+```
+
+Allow keyword in Flow object declaration property names with type parameters ([#146](https://github.com/babel/babylon/pull/146)) (Dan Harper)
+
+```js
+declare class X {
+  foobar<T>(): void;
+  static foobar<T>(): void;
+}
+```
+
+Allow keyword in object/class property names with Flow type parameters ([#145](https://github.com/babel/babylon/pull/145)) (Dan Harper)
+
+```js
+class Foo {
+  delete<T>(item: T): T {
+    return item;
+  }
+}
+```
+
+Allow typeAnnotations for yield expressions ([#174](https://github.com/babel/babylon/pull/174))) (Daniel Tschinder)
+
+```js
+function *foo() {
+  const x = (yield 5: any);
+}
+```
+
+### :nail_care: Polish
+
+Annotate more errors with expected token ([#172](https://github.com/babel/babylon/pull/172))) (Moti Zilberman)
+
+```js
+// Unexpected token, expected ; (1:6)
+{ set 1 }
+```
+
+### :house: Internal
+
+Remove kcheck ([#173](https://github.com/babel/babylon/pull/173)))  (Daniel Tschinder)
+
+Also run flow, linting, babel tests on separate instances (add back node 0.10)
+
+## v6.11.6 (2016-10-12)
+
+### :bug: Bug Fix/Regression
+
+Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
+
+```js
+// was failing with `Cannot read property 'type' of null` because of null identifiers
+export const { foo: [ ,, qux7 ] } = bar;
+```
+
+## v6.11.5 (2016-10-12)
+
+### :eyeglasses: Spec Compliance
+
+Fix: Check for duplicate named exports in exported destructuring assignments ([#144](https://github.com/babel/babylon/pull/144)) (Kai Cataldo)
+
+```js
+// `foo` has already been exported. Exported identifiers must be unique. (2:20)
+export function foo() {};
+export const { a: [{foo}] } = bar;
+```
+
+Fix: Check for duplicate named exports in exported rest elements/properties ([#164](https://github.com/babel/babylon/pull/164)) (Kai Cataldo)
+
+```js
+// `foo` has already been exported. Exported identifiers must be unique. (2:22)
+export const foo = 1;
+export const [bar, ...foo] = baz;
+```
+
+### :bug: Bug Fix
+
+Fix: Allow identifier `async` for default param in arrow expression ([#165](https://github.com/babel/babylon/pull/165)) (Kai Cataldo)
+
+```js
+// this is ok now
+const test = ({async = true}) => {};
+```
+
+### :nail_care: Polish
+
+Babylon will now print out the token it's expecting if there's a `SyntaxError` ([#150](https://github.com/babel/babylon/pull/150)) (Daniel Tschinder)
+
+```bash
+# So in the case of a missing ending curly (`}`)
+Module build failed: SyntaxError: Unexpected token, expected } (30:0)
+  28 |   }
+  29 |
+> 30 |
+     | ^
+```
+
+## v6.11.4 (2016-10-03)
+
+Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu)
+
+## v6.11.3 (2016-10-01)
+
+### :eyeglasses: Spec Compliance
+
+Add static errors for object rest (#149) ([@danez](https://github.com/danez))
+
+> https://github.com/sebmarkbage/ecmascript-rest-spread
+
+Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right.
+
+```js
+let { x, y, ...z } =  { x: 1, y: 2, z: 3 };
+// x = 1
+// y = 2
+// z = { z: 3 }
+```
+
+#### New Syntax Errors:
+
+**SyntaxError**: The rest element has to be the last element when destructuring (1:10)
+```bash
+> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3};
+    |           ^
+# Previous behavior:
+# x = { x: 1, y: 2, z: 3 }
+# y = 2
+# z = 3
+```
+
+Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think.
+
+**SyntaxError**: Cannot have multiple rest elements when destructuring (1:13)
+
+```bash
+> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3};
+    |              ^
+# Previous behavior:
+# x = 1
+# y = { y: 2, z: 3 }
+# z = { y: 2, z: 3 }
+```
+
+Before y and z would just be the same value anyway so there is no reason to need to have both.
+
+**SyntaxError**: A trailing comma is not permitted after the rest element (1:16)
+
+```js
+let { x, y, ...z, } = obj;
+```
+
+The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense.
+
+---
+
+get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell))
+
+```js
+// valid
+function something({ set = null, get = null }) {}
+```
+
+## v6.11.2 (2016-09-23)
+
+### Bug Fix
+
+- [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo
+
+```js
+// regression with duplicate export check
+SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13)
+  20 |
+  21 | export const { rhythm } = typography;
+> 22 | export const { TypographyStyle } = typography
+```
+
+Bail out for now, and make a change to account for destructuring in the next release.
+
+## 6.11.1 (2016-09-22)
+
+### Bug Fix
+- [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez
+
+```javascript
+export toString from './toString';
+```
+
+```bash
+`toString` has already been exported. Exported identifiers must be unique. (1:7)
+> 1 | export toString from './toString';
+    |        ^
+  2 |
+```
+
+## 6.11.0 (2016-09-22)
+
+### Spec Compliance (will break CI)
+
+- Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo
+
+```js
+// Only one default export allowed per module. (2:9)
+export default function() {};
+export { foo as default };
+
+// Only one default export allowed per module. (2:0)
+export default {};
+export default function() {};
+
+// `Foo` has already been exported. Exported identifiers must be unique. (2:0)
+export { Foo };
+export class Foo {};
+```
+
+### New Feature (Syntax)
+
+- Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88
+
+```js
+// AST
+interface ClassProperty <: Node {
+  type: "ClassProperty";
+  key: Identifier;
+  value: Expression;
+  computed: boolean; // added
+}
+```
+
+```js
+// with "plugins": ["classProperties"]
+class Foo {
+  [x]
+  ['y']
+}
+
+class Bar {
+  [p]
+  [m] () {}
+}
+ ```
+
+### Bug Fix
+
+- Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper
+
+```js
+declare class X {
+    a: number;
+    static b: number; // static
+    c: number; // this was being marked as static in the AST as well
+}
+```
+
+### Polish
+
+- Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88
+
+```js
+// Used to error with:
+// SyntaxError: Assigning to rvalue (1:0)
+
+// Now:
+// Invalid left-hand side in assignment expression (1:0)
+3 = 4
+
+// Invalid left-hand side in for-in statement (1:5)
+for (+i in {});
+```
+
+### Internal
+
+- Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez
+- Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo
+
+## 6.10.0 (2016-09-19)
+
+> We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue.
+
+### Spec Compliance
+
+* Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu)
+
+> It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors
+
+More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists)
+
+For example:
+
+```js
+// this errors because it uses destructuring and default parameters
+// in a function with a "use strict" directive
+function a([ option1, option2 ] = []) {
+  "use strict";
+}
+ ```
+
+The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to.
+
+### New Feature
+
+* Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer)
+
+Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8
+
+Looks like:
+
+```js
+var a : {| x: number, y: string |} = { x: 0, y: 'foo' };
+```
+
+### Bug Fixes
+
+* Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder)
+* Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper)
+* Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper)
+
+### Misc
+
+* Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder)
+* Fix Contributing guidelines [skip ci] (Daniel Tschinder)
+
+## 6.9.2 (2016-09-09)
+
+The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller.
+
+## 6.9.1 (2016-08-23)
+
+This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops.
+
+### Bug Fixes
+
+- Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez
+- Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez
+- Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper
+- Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez
+- Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez
+
+## 6.9.0 (2016-08-16)
+
+### New syntax support
+
+- Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer
+
+(Be aware that React is not going to support this syntax)
+
+```js
+<div>
+  {...todos.map(todo => <Todo key={todo.id} todo={todo}/>)}
+</div>
+```
+
+- Add support for declare module.exports ([#72](https://github.com/babel/babylon/pull/72)) @danez
+
+```js
+declare module "foo" {
+  declare module.exports: {}
+}
+```
+
+### New Features
+
+- If supplied, attach filename property to comment node loc. ([#80](https://github.com/babel/babylon/pull/80)) @divmain
+- Add identifier name to node loc field ([#90](https://github.com/babel/babylon/pull/90)) @kittens
+
+### Bug Fixes
+
+- Fix exponential operator to behave according to spec ([#75](https://github.com/babel/babylon/pull/75)) @danez
+- Fix lookahead to not add comments to arrays which are not cloned ([#76](https://github.com/babel/babylon/pull/76)) @danez
+- Fix accidental fall-through in Flow type parsing. ([#82](https://github.com/babel/babylon/pull/82)) @xiemaisi
+- Only allow declares inside declare module ([#73](https://github.com/babel/babylon/pull/73)) @danez
+- Small fix for parsing type parameter declarations ([#83](https://github.com/babel/babylon/pull/83)) @gabelevi
+- Fix arrow param locations with flow types ([#57](https://github.com/babel/babylon/pull/57)) @danez
+- Fixes SyntaxError position with flow optional type ([#65](https://github.com/babel/babylon/pull/65)) @danez
+
+### Internal
+
+- Add codecoverage to tests @danez
+- Fix tests to not save expected output if we expect the test to fail @danez
+- Make a shallow clone of babel for testing @danez
+- chore(package): update cross-env to version 2.0.0 ([#77](https://github.com/babel/babylon/pull/77)) @greenkeeperio-bot
+- chore(package): update ava to version 0.16.0 ([#86](https://github.com/babel/babylon/pull/86)) @greenkeeperio-bot
+- chore(package): update babel-plugin-istanbul to version 2.0.0 ([#89](https://github.com/babel/babylon/pull/89)) @greenkeeperio-bot
+- chore(package): update nyc to version 8.0.0 ([#88](https://github.com/babel/babylon/pull/88)) @greenkeeperio-bot
+
+## 6.8.4 (2016-07-06)
+
+### Bug Fixes
+
+- Fix the location of params, when flow and default value used ([#68](https://github.com/babel/babylon/pull/68)) @danez
+
+## 6.8.3 (2016-07-02)
+
+### Bug Fixes
+
+- Fix performance regression introduced in 6.8.2 with conditionals ([#63](https://github.com/babel/babylon/pull/63)) @danez
+
+## 6.8.2 (2016-06-24)
+
+### Bug Fixes
+
+- Fix parse error with yielding jsx elements in generators `function* it() { yield <a></a>; }` ([#31](https://github.com/babel/babylon/pull/31)) @eldereal
+- When cloning nodes do not clone its comments ([#24](https://github.com/babel/babylon/pull/24)) @danez
+- Fix parse errors when using arrow functions with an spread element and return type `(...props): void => {}` ([#10](https://github.com/babel/babylon/pull/10)) @danez
+- Fix leading comments added from previous node ([#23](https://github.com/babel/babylon/pull/23)) @danez
+- Fix parse errors with flow's optional arguments `(arg?) => {}` ([#19](https://github.com/babel/babylon/pull/19)) @danez
+- Support negative numeric type literals @kittens
+- Remove line terminator restriction after await keyword @kittens
+- Remove grouped type arrow restriction as it seems flow no longer has it @kittens
+- Fix parse error with generic methods that have the name `get` or `set` `class foo { get() {} }` ([#55](https://github.com/babel/babylon/pull/55)) @vkurchatkin
+- Fix parse error with arrow functions that have flow type parameter declarations `<T>(x: T): T => x;` ([#54](https://github.com/babel/babylon/pull/54)) @gabelevi
+
+### Documentation
+
+- Document AST differences from ESTree ([#41](https://github.com/babel/babylon/pull/41)) @nene
+- Move ast spec from babel/babel ([#46](https://github.com/babel/babylon/pull/46)) @hzoo
+
+### Internal
+
+- Enable skipped tests ([#16](https://github.com/babel/babylon/pull/16)) @danez
+- Add script to test latest version of babylon with babel ([#21](https://github.com/babel/babylon/pull/21)) @danez
+- Upgrade test runner ava @kittens
+- Add missing generate-identifier-regex script @kittens
+- Rename parser context types @kittens
+- Add node v6 to travis testing @hzoo
+- Update to Unicode v9 ([#45](https://github.com/babel/babylon/pull/45)) @mathiasbynens
+
+## 6.8.1 (2016-06-06)
+
+### New Feature
+
+- Parse type parameter declarations with defaults like `type Foo<T = string> = T`
+
+### Bug Fixes
+- Type parameter declarations need 1 or more type parameters.
+- The existential type `*` is not a valid type parameter.
+- The existential type `*` is a primary type
+
+### Spec Compliance
+- The param list for type parameter declarations now consists of `TypeParameter` nodes
+- New `TypeParameter` AST Node (replaces using the `Identifier` node before)
+
+```
+interface TypeParameter <: Node {
+  bound: TypeAnnotation;
+  default: TypeAnnotation;
+  name: string;
+  variance: "plus" | "minus";
+}
+```
+
+## 6.8.0 (2016-05-02)
+
+#### New Feature
+
+##### Parse Method Parameter Decorators ([#12](https://github.com/babel/babylon/pull/12))
+
+> [Method Parameter Decorators](https://goo.gl/8MmCMG) is now a TC39 [stage 0 proposal](https://github.com/tc39/ecma262/blob/master/stage0.md).
+
+Examples:
+
+```js
+class Foo {
+  constructor(@foo() x, @bar({ a: 123 }) @baz() y) {}
+}
+
+export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {}
+
+var obj = {
+  method(@foo() x, @bar({ a: 123 }) @baz() y) {}
+};
+```
+
+##### Parse for-await statements (w/ `asyncGenerators` plugin) ([#17](https://github.com/babel/babylon/pull/17))
+
+There is also a new node type, `ForAwaitStatement`.
+
+> [Async generators and for-await](https://github.com/tc39/proposal-async-iteration) are now a [stage 2 proposal](https://github.com/tc39/ecma262#current-proposals).
+
+Example:
+
+```js
+async function f() {
+  for await (let x of y);
+}
+```

+ 19 - 0
node_modules/@babel/parser/LICENSE

xqd
@@ -0,0 +1,19 @@
+Copyright (C) 2012-2014 by various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 19 - 0
node_modules/@babel/parser/README.md

xqd
@@ -0,0 +1,19 @@
+# @babel/parser
+
+> A JavaScript parser
+
+See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/parser
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/parser --dev
+```

+ 15 - 0
node_modules/@babel/parser/bin/babel-parser.js

xqd
@@ -0,0 +1,15 @@
+#!/usr/bin/env node
+/* eslint no-var: 0 */
+
+var parser = require("..");
+var fs = require("fs");
+
+var filename = process.argv[2];
+if (!filename) {
+  console.error("no filename specified");
+} else {
+  var file = fs.readFileSync(filename, "utf8");
+  var ast = parser.parse(file);
+
+  console.log(JSON.stringify(ast, null, "  "));
+}

+ 5 - 0
node_modules/@babel/parser/index.cjs

xqd
@@ -0,0 +1,5 @@
+try {
+  module.exports = require("./lib/index.cjs");
+} catch {
+  module.exports = require("./lib/index.js");
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1307 - 0
node_modules/@babel/parser/lib/index.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
node_modules/@babel/parser/lib/index.js.map


+ 46 - 0
node_modules/@babel/parser/package.json

xqd
@@ -0,0 +1,46 @@
+{
+  "name": "@babel/parser",
+  "version": "7.22.13",
+  "description": "A JavaScript parser",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "homepage": "https://babel.dev/docs/en/next/babel-parser",
+  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "keywords": [
+    "babel",
+    "javascript",
+    "parser",
+    "tc39",
+    "ecmascript",
+    "@babel/parser"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-parser"
+  },
+  "main": "./lib/index.js",
+  "types": "./typings/babel-parser.d.ts",
+  "files": [
+    "bin",
+    "lib",
+    "typings/babel-parser.d.ts",
+    "index.cjs"
+  ],
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "devDependencies": {
+    "@babel/code-frame": "^7.22.13",
+    "@babel/helper-check-duplicate-nodes": "^7.22.5",
+    "@babel/helper-fixtures": "^7.22.13",
+    "@babel/helper-string-parser": "^7.22.5",
+    "@babel/helper-validator-identifier": "^7.22.5",
+    "charcodes": "^0.2.0"
+  },
+  "bin": "./bin/babel-parser.js",
+  "type": "commonjs"
+}

+ 241 - 0
node_modules/@babel/parser/typings/babel-parser.d.ts

xqd
@@ -0,0 +1,241 @@
+// This file is auto-generated! Do not modify it directly.
+/* eslint-disable import/no-extraneous-dependencies, @typescript-eslint/consistent-type-imports, prettier/prettier */
+import * as _babel_types from '@babel/types';
+
+type Plugin =
+  | "asyncDoExpressions"
+  | "asyncGenerators"
+  | "bigInt"
+  | "classPrivateMethods"
+  | "classPrivateProperties"
+  | "classProperties"
+  | "classStaticBlock" // Enabled by default
+  | "decimal"
+  | "decorators-legacy"
+  | "decoratorAutoAccessors"
+  | "destructuringPrivate"
+  | "doExpressions"
+  | "dynamicImport"
+  | "explicitResourceManagement"
+  | "exportDefaultFrom"
+  | "exportNamespaceFrom" // deprecated
+  | "flow"
+  | "flowComments"
+  | "functionBind"
+  | "functionSent"
+  | "importMeta"
+  | "jsx"
+  | "logicalAssignment"
+  | "importAssertions" // deprecated
+  | "importAttributes"
+  | "importReflection"
+  | "moduleBlocks"
+  | "moduleStringNames"
+  | "nullishCoalescingOperator"
+  | "numericSeparator"
+  | "objectRestSpread"
+  | "optionalCatchBinding"
+  | "optionalChaining"
+  | "partialApplication"
+  | "placeholders"
+  | "privateIn" // Enabled by default
+  | "regexpUnicodeSets" // Enabled by default
+  | "throwExpressions"
+  | "topLevelAwait"
+  | "v8intrinsic"
+  | ParserPluginWithOptions[0];
+
+type ParserPluginWithOptions =
+  | ["decorators", DecoratorsPluginOptions]
+  | ["estree", { classFeatures?: boolean }]
+  | ["importAttributes", { deprecatedAssertSyntax: boolean }]
+  // @deprecated
+  | ["moduleAttributes", { version: "may-2020" }]
+  | ["pipelineOperator", PipelineOperatorPluginOptions]
+  | ["recordAndTuple", RecordAndTuplePluginOptions]
+  | ["flow", FlowPluginOptions]
+  | ["typescript", TypeScriptPluginOptions];
+
+type PluginConfig = Plugin | ParserPluginWithOptions;
+
+interface DecoratorsPluginOptions {
+  decoratorsBeforeExport?: boolean;
+  allowCallParenthesized?: boolean;
+}
+
+interface PipelineOperatorPluginOptions {
+  proposal: "minimal" | "fsharp" | "hack" | "smart";
+  topicToken?: "%" | "#" | "@@" | "^^" | "^";
+}
+
+interface RecordAndTuplePluginOptions {
+  syntaxType: "bar" | "hash";
+}
+
+interface FlowPluginOptions {
+  all?: boolean;
+  enums?: boolean;
+}
+
+interface TypeScriptPluginOptions {
+  dts?: boolean;
+  disallowAmbiguousJSXLike?: boolean;
+}
+
+// Type definitions for @babel/parser
+// Project: https://github.com/babel/babel/tree/main/packages/babel-parser
+// Definitions by: Troy Gerwien <https://github.com/yortus>
+//                 Marvin Hagemeister <https://github.com/marvinhagemeister>
+//                 Avi Vahl <https://github.com/AviVahl>
+// TypeScript Version: 2.9
+
+/**
+ * Parse the provided code as an entire ECMAScript program.
+ */
+declare function parse(
+  input: string,
+  options?: ParserOptions
+): ParseResult<_babel_types.File>;
+
+/**
+ * Parse the provided code as a single expression.
+ */
+declare function parseExpression(
+  input: string,
+  options?: ParserOptions
+): ParseResult<_babel_types.Expression>;
+
+interface ParserOptions {
+  /**
+   * By default, import and export declarations can only appear at a program's top level.
+   * Setting this option to true allows them anywhere where a statement is allowed.
+   */
+  allowImportExportEverywhere?: boolean;
+
+  /**
+   * By default, await use is not allowed outside of an async function.
+   * Set this to true to accept such code.
+   */
+  allowAwaitOutsideFunction?: boolean;
+
+  /**
+   * By default, a return statement at the top level raises an error.
+   * Set this to true to accept such code.
+   */
+  allowReturnOutsideFunction?: boolean;
+
+  /**
+   * By default, new.target use is not allowed outside of a function or class.
+   * Set this to true to accept such code.
+   */
+  allowNewTargetOutsideFunction?: boolean;
+
+  allowSuperOutsideMethod?: boolean;
+
+  /**
+   * By default, exported identifiers must refer to a declared variable.
+   * Set this to true to allow export statements to reference undeclared variables.
+   */
+  allowUndeclaredExports?: boolean;
+
+  /**
+   * By default, Babel parser JavaScript code according to Annex B syntax.
+   * Set this to `false` to disable such behavior.
+   */
+  annexB?: boolean;
+
+  /**
+   * By default, Babel attaches comments to adjacent AST nodes.
+   * When this option is set to false, comments are not attached.
+   * It can provide up to 30% performance improvement when the input code has many comments.
+   * @babel/eslint-parser will set it for you.
+   * It is not recommended to use attachComment: false with Babel transform,
+   * as doing so removes all the comments in output code, and renders annotations such as
+   * /* istanbul ignore next *\/ nonfunctional.
+   */
+  attachComment?: boolean;
+
+  /**
+   * By default, Babel always throws an error when it finds some invalid code.
+   * When this option is set to true, it will store the parsing error and
+   * try to continue parsing the invalid input file.
+   */
+  errorRecovery?: boolean;
+
+  /**
+   * Indicate the mode the code should be parsed in.
+   * Can be one of "script", "module", or "unambiguous". Defaults to "script".
+   * "unambiguous" will make @babel/parser attempt to guess, based on the presence
+   * of ES6 import or export statements.
+   * Files with ES6 imports and exports are considered "module" and are otherwise "script".
+   */
+  sourceType?: "script" | "module" | "unambiguous";
+
+  /**
+   * Correlate output AST nodes with their source filename.
+   * Useful when generating code and source maps from the ASTs of multiple input files.
+   */
+  sourceFilename?: string;
+
+  /**
+   * By default, the first line of code parsed is treated as line 1.
+   * You can provide a line number to alternatively start with.
+   * Useful for integration with other source tools.
+   */
+  startLine?: number;
+
+  /**
+   * By default, the parsed code is treated as if it starts from line 1, column 0.
+   * You can provide a column number to alternatively start with.
+   * Useful for integration with other source tools.
+   */
+  startColumn?: number;
+
+  /**
+   * Array containing the plugins that you want to enable.
+   */
+  plugins?: ParserPlugin[];
+
+  /**
+   * Should the parser work in strict mode.
+   * Defaults to true if sourceType === 'module'. Otherwise, false.
+   */
+  strictMode?: boolean;
+
+  /**
+   * Adds a ranges property to each node: [node.start, node.end]
+   */
+  ranges?: boolean;
+
+  /**
+   * Adds all parsed tokens to a tokens property on the File node.
+   */
+  tokens?: boolean;
+
+  /**
+   * By default, the parser adds information about parentheses by setting
+   * `extra.parenthesized` to `true` as needed.
+   * When this option is `true` the parser creates `ParenthesizedExpression`
+   * AST nodes instead of using the `extra` property.
+   */
+  createParenthesizedExpressions?: boolean;
+}
+
+type ParserPlugin = PluginConfig;
+
+
+declare const tokTypes: {
+  // todo(flow->ts) real token type
+  [name: string]: any;
+};
+
+interface ParseError {
+  code: string;
+  reasonCode: string;
+}
+
+type ParseResult<Result> = Result & {
+  errors: ParseError[];
+};
+
+export { DecoratorsPluginOptions, FlowPluginOptions, ParseError, ParseResult, ParserOptions, ParserPlugin, ParserPluginWithOptions, PipelineOperatorPluginOptions, RecordAndTuplePluginOptions, TypeScriptPluginOptions, parse, parseExpression, tokTypes };

+ 21 - 0
node_modules/@jridgewell/sourcemap-codec/LICENSE

xqd
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2015 Rich Harris
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 200 - 0
node_modules/@jridgewell/sourcemap-codec/README.md

xqd
@@ -0,0 +1,200 @@
+# @jridgewell/sourcemap-codec
+
+Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
+
+
+## Why?
+
+Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.
+
+This package makes the process slightly easier.
+
+
+## Installation
+
+```bash
+npm install @jridgewell/sourcemap-codec
+```
+
+
+## Usage
+
+```js
+import { encode, decode } from '@jridgewell/sourcemap-codec';
+
+var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+
+assert.deepEqual( decoded, [
+	// the first line (of the generated code) has no mappings,
+	// as shown by the starting semi-colon (which separates lines)
+	[],
+
+	// the second line contains four (comma-separated) segments
+	[
+		// segments are encoded as you'd expect:
+		// [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
+
+		// i.e. the first segment begins at column 2, and maps back to the second column
+		// of the second line (both zero-based) of the 0th source, and uses the 0th
+		// name in the `map.names` array
+		[ 2, 0, 2, 2, 0 ],
+
+		// the remaining segments are 4-length rather than 5-length,
+		// because they don't map a name
+		[ 4, 0, 2, 4 ],
+		[ 6, 0, 2, 5 ],
+		[ 7, 0, 2, 7 ]
+	],
+
+	// the final line contains two segments
+	[
+		[ 2, 1, 10, 19 ],
+		[ 12, 1, 11, 20 ]
+	]
+]);
+
+var encoded = encode( decoded );
+assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
+```
+
+## Benchmarks
+
+```
+node v18.0.0
+
+amp.js.map - 45120 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec       5479160 bytes
+sourcemap-codec                   5659336 bytes
+source-map-0.6.1                 17144440 bytes
+source-map-0.8.0                  6867424 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
+decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
+decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
+decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec       1261620 bytes
+sourcemap-codec                   9119248 bytes
+source-map-0.6.1                  8968560 bytes
+source-map-0.8.0                  8952952 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
+encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
+encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
+encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+babel.min.js.map - 347793 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec      35338184 bytes
+sourcemap-codec                  35922736 bytes
+source-map-0.6.1                 62366360 bytes
+source-map-0.8.0                 44337416 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
+decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
+decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
+decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
+Fastest is decode: source-map-0.8.0
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec       7212604 bytes
+sourcemap-codec                  21421456 bytes
+source-map-0.6.1                 25286888 bytes
+source-map-0.8.0                 25498744 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
+encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
+encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
+encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+preact.js.map - 1992 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec        500272 bytes
+sourcemap-codec                    516864 bytes
+source-map-0.6.1                  1596672 bytes
+source-map-0.8.0                   517272 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
+decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
+decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
+decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec        321026 bytes
+sourcemap-codec                    830832 bytes
+source-map-0.6.1                   586608 bytes
+source-map-0.8.0                   586680 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
+encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
+encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
+encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+
+
+***
+
+
+react.js.map - 5726 segments
+
+Decode Memory Usage:
+@jridgewell/sourcemap-codec        734848 bytes
+sourcemap-codec                    954200 bytes
+source-map-0.6.1                  2276432 bytes
+source-map-0.8.0                   955488 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Decode speed:
+decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
+decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
+decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
+decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
+Fastest is decode: @jridgewell/sourcemap-codec
+
+Encode Memory Usage:
+@jridgewell/sourcemap-codec        638672 bytes
+sourcemap-codec                   1109840 bytes
+source-map-0.6.1                  1321224 bytes
+source-map-0.8.0                  1324448 bytes
+Smallest memory usage is @jridgewell/sourcemap-codec
+
+Encode speed:
+encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
+encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
+encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
+encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
+Fastest is encode: @jridgewell/sourcemap-codec
+```
+
+# License
+
+MIT

+ 164 - 0
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs

xqd
@@ -0,0 +1,164 @@
+const comma = ','.charCodeAt(0);
+const semicolon = ';'.charCodeAt(0);
+const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+const intToChar = new Uint8Array(64); // 64 possible chars.
+const charToInt = new Uint8Array(128); // z is 122 in ASCII
+for (let i = 0; i < chars.length; i++) {
+    const c = chars.charCodeAt(i);
+    intToChar[i] = c;
+    charToInt[c] = i;
+}
+// Provide a fallback for older environments.
+const td = typeof TextDecoder !== 'undefined'
+    ? /* #__PURE__ */ new TextDecoder()
+    : typeof Buffer !== 'undefined'
+        ? {
+            decode(buf) {
+                const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+                return out.toString();
+            },
+        }
+        : {
+            decode(buf) {
+                let out = '';
+                for (let i = 0; i < buf.length; i++) {
+                    out += String.fromCharCode(buf[i]);
+                }
+                return out;
+            },
+        };
+function decode(mappings) {
+    const state = new Int32Array(5);
+    const decoded = [];
+    let index = 0;
+    do {
+        const semi = indexOf(mappings, index);
+        const line = [];
+        let sorted = true;
+        let lastCol = 0;
+        state[0] = 0;
+        for (let i = index; i < semi; i++) {
+            let seg;
+            i = decodeInteger(mappings, i, state, 0); // genColumn
+            const col = state[0];
+            if (col < lastCol)
+                sorted = false;
+            lastCol = col;
+            if (hasMoreVlq(mappings, i, semi)) {
+                i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+                i = decodeInteger(mappings, i, state, 2); // sourceLine
+                i = decodeInteger(mappings, i, state, 3); // sourceColumn
+                if (hasMoreVlq(mappings, i, semi)) {
+                    i = decodeInteger(mappings, i, state, 4); // namesIndex
+                    seg = [col, state[1], state[2], state[3], state[4]];
+                }
+                else {
+                    seg = [col, state[1], state[2], state[3]];
+                }
+            }
+            else {
+                seg = [col];
+            }
+            line.push(seg);
+        }
+        if (!sorted)
+            sort(line);
+        decoded.push(line);
+        index = semi + 1;
+    } while (index <= mappings.length);
+    return decoded;
+}
+function indexOf(mappings, index) {
+    const idx = mappings.indexOf(';', index);
+    return idx === -1 ? mappings.length : idx;
+}
+function decodeInteger(mappings, pos, state, j) {
+    let value = 0;
+    let shift = 0;
+    let integer = 0;
+    do {
+        const c = mappings.charCodeAt(pos++);
+        integer = charToInt[c];
+        value |= (integer & 31) << shift;
+        shift += 5;
+    } while (integer & 32);
+    const shouldNegate = value & 1;
+    value >>>= 1;
+    if (shouldNegate) {
+        value = -0x80000000 | -value;
+    }
+    state[j] += value;
+    return pos;
+}
+function hasMoreVlq(mappings, i, length) {
+    if (i >= length)
+        return false;
+    return mappings.charCodeAt(i) !== comma;
+}
+function sort(line) {
+    line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+    return a[0] - b[0];
+}
+function encode(decoded) {
+    const state = new Int32Array(5);
+    const bufLength = 1024 * 16;
+    const subLength = bufLength - 36;
+    const buf = new Uint8Array(bufLength);
+    const sub = buf.subarray(0, subLength);
+    let pos = 0;
+    let out = '';
+    for (let i = 0; i < decoded.length; i++) {
+        const line = decoded[i];
+        if (i > 0) {
+            if (pos === bufLength) {
+                out += td.decode(buf);
+                pos = 0;
+            }
+            buf[pos++] = semicolon;
+        }
+        if (line.length === 0)
+            continue;
+        state[0] = 0;
+        for (let j = 0; j < line.length; j++) {
+            const segment = line[j];
+            // We can push up to 5 ints, each int can take at most 7 chars, and we
+            // may push a comma.
+            if (pos > subLength) {
+                out += td.decode(sub);
+                buf.copyWithin(0, subLength, pos);
+                pos -= subLength;
+            }
+            if (j > 0)
+                buf[pos++] = comma;
+            pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+            if (segment.length === 1)
+                continue;
+            pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+            pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+            pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+            if (segment.length === 4)
+                continue;
+            pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+        }
+    }
+    return out + td.decode(buf.subarray(0, pos));
+}
+function encodeInteger(buf, pos, state, segment, j) {
+    const next = segment[j];
+    let num = next - state[j];
+    state[j] = next;
+    num = num < 0 ? (-num << 1) | 1 : num << 1;
+    do {
+        let clamped = num & 0b011111;
+        num >>>= 5;
+        if (num > 0)
+            clamped |= 0b100000;
+        buf[pos++] = intToChar[clamped];
+    } while (num > 0);
+    return pos;
+}
+
+export { decode, encode };
+//# sourceMappingURL=sourcemap-codec.mjs.map

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map


+ 175 - 0
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js

xqd
@@ -0,0 +1,175 @@
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+    typeof define === 'function' && define.amd ? define(['exports'], factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));
+})(this, (function (exports) { 'use strict';
+
+    const comma = ','.charCodeAt(0);
+    const semicolon = ';'.charCodeAt(0);
+    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+    const intToChar = new Uint8Array(64); // 64 possible chars.
+    const charToInt = new Uint8Array(128); // z is 122 in ASCII
+    for (let i = 0; i < chars.length; i++) {
+        const c = chars.charCodeAt(i);
+        intToChar[i] = c;
+        charToInt[c] = i;
+    }
+    // Provide a fallback for older environments.
+    const td = typeof TextDecoder !== 'undefined'
+        ? /* #__PURE__ */ new TextDecoder()
+        : typeof Buffer !== 'undefined'
+            ? {
+                decode(buf) {
+                    const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+                    return out.toString();
+                },
+            }
+            : {
+                decode(buf) {
+                    let out = '';
+                    for (let i = 0; i < buf.length; i++) {
+                        out += String.fromCharCode(buf[i]);
+                    }
+                    return out;
+                },
+            };
+    function decode(mappings) {
+        const state = new Int32Array(5);
+        const decoded = [];
+        let index = 0;
+        do {
+            const semi = indexOf(mappings, index);
+            const line = [];
+            let sorted = true;
+            let lastCol = 0;
+            state[0] = 0;
+            for (let i = index; i < semi; i++) {
+                let seg;
+                i = decodeInteger(mappings, i, state, 0); // genColumn
+                const col = state[0];
+                if (col < lastCol)
+                    sorted = false;
+                lastCol = col;
+                if (hasMoreVlq(mappings, i, semi)) {
+                    i = decodeInteger(mappings, i, state, 1); // sourcesIndex
+                    i = decodeInteger(mappings, i, state, 2); // sourceLine
+                    i = decodeInteger(mappings, i, state, 3); // sourceColumn
+                    if (hasMoreVlq(mappings, i, semi)) {
+                        i = decodeInteger(mappings, i, state, 4); // namesIndex
+                        seg = [col, state[1], state[2], state[3], state[4]];
+                    }
+                    else {
+                        seg = [col, state[1], state[2], state[3]];
+                    }
+                }
+                else {
+                    seg = [col];
+                }
+                line.push(seg);
+            }
+            if (!sorted)
+                sort(line);
+            decoded.push(line);
+            index = semi + 1;
+        } while (index <= mappings.length);
+        return decoded;
+    }
+    function indexOf(mappings, index) {
+        const idx = mappings.indexOf(';', index);
+        return idx === -1 ? mappings.length : idx;
+    }
+    function decodeInteger(mappings, pos, state, j) {
+        let value = 0;
+        let shift = 0;
+        let integer = 0;
+        do {
+            const c = mappings.charCodeAt(pos++);
+            integer = charToInt[c];
+            value |= (integer & 31) << shift;
+            shift += 5;
+        } while (integer & 32);
+        const shouldNegate = value & 1;
+        value >>>= 1;
+        if (shouldNegate) {
+            value = -0x80000000 | -value;
+        }
+        state[j] += value;
+        return pos;
+    }
+    function hasMoreVlq(mappings, i, length) {
+        if (i >= length)
+            return false;
+        return mappings.charCodeAt(i) !== comma;
+    }
+    function sort(line) {
+        line.sort(sortComparator);
+    }
+    function sortComparator(a, b) {
+        return a[0] - b[0];
+    }
+    function encode(decoded) {
+        const state = new Int32Array(5);
+        const bufLength = 1024 * 16;
+        const subLength = bufLength - 36;
+        const buf = new Uint8Array(bufLength);
+        const sub = buf.subarray(0, subLength);
+        let pos = 0;
+        let out = '';
+        for (let i = 0; i < decoded.length; i++) {
+            const line = decoded[i];
+            if (i > 0) {
+                if (pos === bufLength) {
+                    out += td.decode(buf);
+                    pos = 0;
+                }
+                buf[pos++] = semicolon;
+            }
+            if (line.length === 0)
+                continue;
+            state[0] = 0;
+            for (let j = 0; j < line.length; j++) {
+                const segment = line[j];
+                // We can push up to 5 ints, each int can take at most 7 chars, and we
+                // may push a comma.
+                if (pos > subLength) {
+                    out += td.decode(sub);
+                    buf.copyWithin(0, subLength, pos);
+                    pos -= subLength;
+                }
+                if (j > 0)
+                    buf[pos++] = comma;
+                pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
+                if (segment.length === 1)
+                    continue;
+                pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
+                pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
+                pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
+                if (segment.length === 4)
+                    continue;
+                pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
+            }
+        }
+        return out + td.decode(buf.subarray(0, pos));
+    }
+    function encodeInteger(buf, pos, state, segment, j) {
+        const next = segment[j];
+        let num = next - state[j];
+        state[j] = next;
+        num = num < 0 ? (-num << 1) | 1 : num << 1;
+        do {
+            let clamped = num & 0b011111;
+            num >>>= 5;
+            if (num > 0)
+                clamped |= 0b100000;
+            buf[pos++] = intToChar[clamped];
+        } while (num > 0);
+        return pos;
+    }
+
+    exports.decode = decode;
+    exports.encode = encode;
+
+    Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
+//# sourceMappingURL=sourcemap-codec.umd.js.map

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map


+ 6 - 0
node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts

xqd
@@ -0,0 +1,6 @@
+export declare type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
+export declare type SourceMapLine = SourceMapSegment[];
+export declare type SourceMapMappings = SourceMapLine[];
+export declare function decode(mappings: string): SourceMapMappings;
+export declare function encode(decoded: SourceMapMappings): string;
+export declare function encode(decoded: Readonly<SourceMapMappings>): string;

+ 74 - 0
node_modules/@jridgewell/sourcemap-codec/package.json

xqd
@@ -0,0 +1,74 @@
+{
+  "name": "@jridgewell/sourcemap-codec",
+  "version": "1.4.15",
+  "description": "Encode/decode sourcemap mappings",
+  "keywords": [
+    "sourcemap",
+    "vlq"
+  ],
+  "main": "dist/sourcemap-codec.umd.js",
+  "module": "dist/sourcemap-codec.mjs",
+  "types": "dist/types/sourcemap-codec.d.ts",
+  "files": [
+    "dist"
+  ],
+  "exports": {
+    ".": [
+      {
+        "types": "./dist/types/sourcemap-codec.d.ts",
+        "browser": "./dist/sourcemap-codec.umd.js",
+        "require": "./dist/sourcemap-codec.umd.js",
+        "import": "./dist/sourcemap-codec.mjs"
+      },
+      "./dist/sourcemap-codec.umd.js"
+    ],
+    "./package.json": "./package.json"
+  },
+  "scripts": {
+    "benchmark": "run-s build:rollup benchmark:*",
+    "benchmark:install": "cd benchmark && npm install",
+    "benchmark:only": "node --expose-gc benchmark/index.js",
+    "build": "run-s -n build:*",
+    "build:rollup": "rollup -c rollup.config.js",
+    "build:ts": "tsc --project tsconfig.build.json",
+    "lint": "run-s -n lint:*",
+    "lint:prettier": "npm run test:lint:prettier -- --write",
+    "lint:ts": "npm run test:lint:ts -- --fix",
+    "prebuild": "rm -rf dist",
+    "prepublishOnly": "npm run preversion",
+    "preversion": "run-s test build",
+    "pretest": "run-s build:rollup",
+    "test": "run-s -n test:lint test:only",
+    "test:debug": "mocha --inspect-brk",
+    "test:lint": "run-s -n test:lint:*",
+    "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+    "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+    "test:only": "mocha",
+    "test:coverage": "c8 mocha",
+    "test:watch": "mocha --watch"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jridgewell/sourcemap-codec.git"
+  },
+  "author": "Rich Harris",
+  "license": "MIT",
+  "devDependencies": {
+    "@rollup/plugin-typescript": "8.3.0",
+    "@types/node": "17.0.15",
+    "@typescript-eslint/eslint-plugin": "5.10.0",
+    "@typescript-eslint/parser": "5.10.0",
+    "benchmark": "2.1.4",
+    "c8": "7.11.2",
+    "eslint": "8.7.0",
+    "eslint-config-prettier": "8.3.0",
+    "mocha": "9.2.0",
+    "npm-run-all": "4.1.5",
+    "prettier": "2.5.1",
+    "rollup": "2.64.0",
+    "source-map": "0.6.1",
+    "source-map-js": "1.0.2",
+    "sourcemap-codec": "1.4.8",
+    "typescript": "4.5.4"
+  }
+}

+ 21 - 0
node_modules/@vue/compiler-core/LICENSE

xqd
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-present, Yuxi (Evan) You
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 1 - 0
node_modules/@vue/compiler-core/README.md

xqd
@@ -0,0 +1 @@
+# @vue/compiler-core

+ 5486 - 0
node_modules/@vue/compiler-core/dist/compiler-core.cjs.js

xqd
@@ -0,0 +1,5486 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var shared = require('@vue/shared');
+var parser = require('@babel/parser');
+var sourceMapJs = require('source-map-js');
+var estreeWalker = require('estree-walker');
+
+function defaultOnError(error) {
+  throw error;
+}
+function defaultOnWarn(msg) {
+  console.warn(`[Vue warn] ${msg.message}`);
+}
+function createCompilerError(code, loc, messages, additionalMessage) {
+  const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ;
+  const error = new SyntaxError(String(msg));
+  error.code = code;
+  error.loc = loc;
+  return error;
+}
+const errorMessages = {
+  // parse errors
+  [0]: "Illegal comment.",
+  [1]: "CDATA section is allowed only in XML context.",
+  [2]: "Duplicate attribute.",
+  [3]: "End tag cannot have attributes.",
+  [4]: "Illegal '/' in tags.",
+  [5]: "Unexpected EOF in tag.",
+  [6]: "Unexpected EOF in CDATA section.",
+  [7]: "Unexpected EOF in comment.",
+  [8]: "Unexpected EOF in script.",
+  [9]: "Unexpected EOF in tag.",
+  [10]: "Incorrectly closed comment.",
+  [11]: "Incorrectly opened comment.",
+  [12]: "Illegal tag name. Use '&lt;' to print '<'.",
+  [13]: "Attribute value was expected.",
+  [14]: "End tag name was expected.",
+  [15]: "Whitespace was expected.",
+  [16]: "Unexpected '<!--' in comment.",
+  [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`,
+  [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",
+  [19]: "Attribute name cannot start with '='.",
+  [21]: "'<?' is allowed only in XML context.",
+  [20]: `Unexpected null character.`,
+  [22]: "Illegal '/' in tags.",
+  // Vue-specific parse errors
+  [23]: "Invalid end tag.",
+  [24]: "Element is missing end tag.",
+  [25]: "Interpolation end sign was not found.",
+  [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",
+  [26]: "Legal directive name was expected.",
+  // transform errors
+  [28]: `v-if/v-else-if is missing expression.`,
+  [29]: `v-if/else branches must use unique keys.`,
+  [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,
+  [31]: `v-for is missing expression.`,
+  [32]: `v-for has invalid expression.`,
+  [33]: `<template v-for> key should be placed on the <template> tag.`,
+  [34]: `v-bind is missing expression.`,
+  [35]: `v-on is missing expression.`,
+  [36]: `Unexpected custom directive on <slot> outlet.`,
+  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
+  [38]: `Duplicate slot names found. `,
+  [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,
+  [40]: `v-slot can only be used on components or <template> tags.`,
+  [41]: `v-model is missing expression.`,
+  [42]: `v-model value must be a valid JavaScript member expression.`,
+  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
+Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
+  [45]: `Error parsing JavaScript expression: `,
+  [46]: `<KeepAlive> expects exactly one child component.`,
+  // generic errors
+  [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
+  [48]: `ES module mode is not supported in this build of compiler.`,
+  [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
+  [50]: `"scopeId" option is only supported in module mode.`,
+  // deprecations
+  [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`,
+  [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`,
+  // just to fulfill types
+  [53]: ``
+};
+
+const FRAGMENT = Symbol(`Fragment` );
+const TELEPORT = Symbol(`Teleport` );
+const SUSPENSE = Symbol(`Suspense` );
+const KEEP_ALIVE = Symbol(`KeepAlive` );
+const BASE_TRANSITION = Symbol(`BaseTransition` );
+const OPEN_BLOCK = Symbol(`openBlock` );
+const CREATE_BLOCK = Symbol(`createBlock` );
+const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` );
+const CREATE_VNODE = Symbol(`createVNode` );
+const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` );
+const CREATE_COMMENT = Symbol(`createCommentVNode` );
+const CREATE_TEXT = Symbol(`createTextVNode` );
+const CREATE_STATIC = Symbol(`createStaticVNode` );
+const RESOLVE_COMPONENT = Symbol(`resolveComponent` );
+const RESOLVE_DYNAMIC_COMPONENT = Symbol(
+  `resolveDynamicComponent` 
+);
+const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` );
+const RESOLVE_FILTER = Symbol(`resolveFilter` );
+const WITH_DIRECTIVES = Symbol(`withDirectives` );
+const RENDER_LIST = Symbol(`renderList` );
+const RENDER_SLOT = Symbol(`renderSlot` );
+const CREATE_SLOTS = Symbol(`createSlots` );
+const TO_DISPLAY_STRING = Symbol(`toDisplayString` );
+const MERGE_PROPS = Symbol(`mergeProps` );
+const NORMALIZE_CLASS = Symbol(`normalizeClass` );
+const NORMALIZE_STYLE = Symbol(`normalizeStyle` );
+const NORMALIZE_PROPS = Symbol(`normalizeProps` );
+const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` );
+const TO_HANDLERS = Symbol(`toHandlers` );
+const CAMELIZE = Symbol(`camelize` );
+const CAPITALIZE = Symbol(`capitalize` );
+const TO_HANDLER_KEY = Symbol(`toHandlerKey` );
+const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` );
+const PUSH_SCOPE_ID = Symbol(`pushScopeId` );
+const POP_SCOPE_ID = Symbol(`popScopeId` );
+const WITH_CTX = Symbol(`withCtx` );
+const UNREF = Symbol(`unref` );
+const IS_REF = Symbol(`isRef` );
+const WITH_MEMO = Symbol(`withMemo` );
+const IS_MEMO_SAME = Symbol(`isMemoSame` );
+const helperNameMap = {
+  [FRAGMENT]: `Fragment`,
+  [TELEPORT]: `Teleport`,
+  [SUSPENSE]: `Suspense`,
+  [KEEP_ALIVE]: `KeepAlive`,
+  [BASE_TRANSITION]: `BaseTransition`,
+  [OPEN_BLOCK]: `openBlock`,
+  [CREATE_BLOCK]: `createBlock`,
+  [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+  [CREATE_VNODE]: `createVNode`,
+  [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+  [CREATE_COMMENT]: `createCommentVNode`,
+  [CREATE_TEXT]: `createTextVNode`,
+  [CREATE_STATIC]: `createStaticVNode`,
+  [RESOLVE_COMPONENT]: `resolveComponent`,
+  [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+  [RESOLVE_DIRECTIVE]: `resolveDirective`,
+  [RESOLVE_FILTER]: `resolveFilter`,
+  [WITH_DIRECTIVES]: `withDirectives`,
+  [RENDER_LIST]: `renderList`,
+  [RENDER_SLOT]: `renderSlot`,
+  [CREATE_SLOTS]: `createSlots`,
+  [TO_DISPLAY_STRING]: `toDisplayString`,
+  [MERGE_PROPS]: `mergeProps`,
+  [NORMALIZE_CLASS]: `normalizeClass`,
+  [NORMALIZE_STYLE]: `normalizeStyle`,
+  [NORMALIZE_PROPS]: `normalizeProps`,
+  [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+  [TO_HANDLERS]: `toHandlers`,
+  [CAMELIZE]: `camelize`,
+  [CAPITALIZE]: `capitalize`,
+  [TO_HANDLER_KEY]: `toHandlerKey`,
+  [SET_BLOCK_TRACKING]: `setBlockTracking`,
+  [PUSH_SCOPE_ID]: `pushScopeId`,
+  [POP_SCOPE_ID]: `popScopeId`,
+  [WITH_CTX]: `withCtx`,
+  [UNREF]: `unref`,
+  [IS_REF]: `isRef`,
+  [WITH_MEMO]: `withMemo`,
+  [IS_MEMO_SAME]: `isMemoSame`
+};
+function registerRuntimeHelpers(helpers) {
+  Object.getOwnPropertySymbols(helpers).forEach((s) => {
+    helperNameMap[s] = helpers[s];
+  });
+}
+
+const locStub = {
+  source: "",
+  start: { line: 1, column: 1, offset: 0 },
+  end: { line: 1, column: 1, offset: 0 }
+};
+function createRoot(children, loc = locStub) {
+  return {
+    type: 0,
+    children,
+    helpers: /* @__PURE__ */ new Set(),
+    components: [],
+    directives: [],
+    hoists: [],
+    imports: [],
+    cached: 0,
+    temps: 0,
+    codegenNode: void 0,
+    loc
+  };
+}
+function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+  if (context) {
+    if (isBlock) {
+      context.helper(OPEN_BLOCK);
+      context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+    } else {
+      context.helper(getVNodeHelper(context.inSSR, isComponent));
+    }
+    if (directives) {
+      context.helper(WITH_DIRECTIVES);
+    }
+  }
+  return {
+    type: 13,
+    tag,
+    props,
+    children,
+    patchFlag,
+    dynamicProps,
+    directives,
+    isBlock,
+    disableTracking,
+    isComponent,
+    loc
+  };
+}
+function createArrayExpression(elements, loc = locStub) {
+  return {
+    type: 17,
+    loc,
+    elements
+  };
+}
+function createObjectExpression(properties, loc = locStub) {
+  return {
+    type: 15,
+    loc,
+    properties
+  };
+}
+function createObjectProperty(key, value) {
+  return {
+    type: 16,
+    loc: locStub,
+    key: shared.isString(key) ? createSimpleExpression(key, true) : key,
+    value
+  };
+}
+function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
+  return {
+    type: 4,
+    loc,
+    content,
+    isStatic,
+    constType: isStatic ? 3 : constType
+  };
+}
+function createInterpolation(content, loc) {
+  return {
+    type: 5,
+    loc,
+    content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content
+  };
+}
+function createCompoundExpression(children, loc = locStub) {
+  return {
+    type: 8,
+    loc,
+    children
+  };
+}
+function createCallExpression(callee, args = [], loc = locStub) {
+  return {
+    type: 14,
+    loc,
+    callee,
+    arguments: args
+  };
+}
+function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
+  return {
+    type: 18,
+    params,
+    returns,
+    newline,
+    isSlot,
+    loc
+  };
+}
+function createConditionalExpression(test, consequent, alternate, newline = true) {
+  return {
+    type: 19,
+    test,
+    consequent,
+    alternate,
+    newline,
+    loc: locStub
+  };
+}
+function createCacheExpression(index, value, isVNode = false) {
+  return {
+    type: 20,
+    index,
+    value,
+    isVNode,
+    loc: locStub
+  };
+}
+function createBlockStatement(body) {
+  return {
+    type: 21,
+    body,
+    loc: locStub
+  };
+}
+function createTemplateLiteral(elements) {
+  return {
+    type: 22,
+    elements,
+    loc: locStub
+  };
+}
+function createIfStatement(test, consequent, alternate) {
+  return {
+    type: 23,
+    test,
+    consequent,
+    alternate,
+    loc: locStub
+  };
+}
+function createAssignmentExpression(left, right) {
+  return {
+    type: 24,
+    left,
+    right,
+    loc: locStub
+  };
+}
+function createSequenceExpression(expressions) {
+  return {
+    type: 25,
+    expressions,
+    loc: locStub
+  };
+}
+function createReturnStatement(returns) {
+  return {
+    type: 26,
+    returns,
+    loc: locStub
+  };
+}
+function getVNodeHelper(ssr, isComponent) {
+  return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+}
+function getVNodeBlockHelper(ssr, isComponent) {
+  return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+}
+function convertToBlock(node, { helper, removeHelper, inSSR }) {
+  if (!node.isBlock) {
+    node.isBlock = true;
+    removeHelper(getVNodeHelper(inSSR, node.isComponent));
+    helper(OPEN_BLOCK);
+    helper(getVNodeBlockHelper(inSSR, node.isComponent));
+  }
+}
+
+const isStaticExp = (p) => p.type === 4 && p.isStatic;
+const isBuiltInType = (tag, expected) => tag === expected || tag === shared.hyphenate(expected);
+function isCoreComponent(tag) {
+  if (isBuiltInType(tag, "Teleport")) {
+    return TELEPORT;
+  } else if (isBuiltInType(tag, "Suspense")) {
+    return SUSPENSE;
+  } else if (isBuiltInType(tag, "KeepAlive")) {
+    return KEEP_ALIVE;
+  } else if (isBuiltInType(tag, "BaseTransition")) {
+    return BASE_TRANSITION;
+  }
+}
+const nonIdentifierRE = /^\d|[^\$\w]/;
+const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
+const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
+const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
+const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
+const isMemberExpressionBrowser = (path) => {
+  path = path.trim().replace(whitespaceRE, (s) => s.trim());
+  let state = 0 /* inMemberExp */;
+  let stateStack = [];
+  let currentOpenBracketCount = 0;
+  let currentOpenParensCount = 0;
+  let currentStringType = null;
+  for (let i = 0; i < path.length; i++) {
+    const char = path.charAt(i);
+    switch (state) {
+      case 0 /* inMemberExp */:
+        if (char === "[") {
+          stateStack.push(state);
+          state = 1 /* inBrackets */;
+          currentOpenBracketCount++;
+        } else if (char === "(") {
+          stateStack.push(state);
+          state = 2 /* inParens */;
+          currentOpenParensCount++;
+        } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
+          return false;
+        }
+        break;
+      case 1 /* inBrackets */:
+        if (char === `'` || char === `"` || char === "`") {
+          stateStack.push(state);
+          state = 3 /* inString */;
+          currentStringType = char;
+        } else if (char === `[`) {
+          currentOpenBracketCount++;
+        } else if (char === `]`) {
+          if (!--currentOpenBracketCount) {
+            state = stateStack.pop();
+          }
+        }
+        break;
+      case 2 /* inParens */:
+        if (char === `'` || char === `"` || char === "`") {
+          stateStack.push(state);
+          state = 3 /* inString */;
+          currentStringType = char;
+        } else if (char === `(`) {
+          currentOpenParensCount++;
+        } else if (char === `)`) {
+          if (i === path.length - 1) {
+            return false;
+          }
+          if (!--currentOpenParensCount) {
+            state = stateStack.pop();
+          }
+        }
+        break;
+      case 3 /* inString */:
+        if (char === currentStringType) {
+          state = stateStack.pop();
+          currentStringType = null;
+        }
+        break;
+    }
+  }
+  return !currentOpenBracketCount && !currentOpenParensCount;
+};
+const isMemberExpressionNode = (path, context) => {
+  try {
+    let ret = parser.parseExpression(path, {
+      plugins: context.expressionPlugins
+    });
+    if (ret.type === "TSAsExpression" || ret.type === "TSTypeAssertion") {
+      ret = ret.expression;
+    }
+    return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier";
+  } catch (e) {
+    return false;
+  }
+};
+const isMemberExpression = isMemberExpressionNode;
+function getInnerRange(loc, offset, length) {
+  const source = loc.source.slice(offset, offset + length);
+  const newLoc = {
+    source,
+    start: advancePositionWithClone(loc.start, loc.source, offset),
+    end: loc.end
+  };
+  if (length != null) {
+    newLoc.end = advancePositionWithClone(
+      loc.start,
+      loc.source,
+      offset + length
+    );
+  }
+  return newLoc;
+}
+function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
+  return advancePositionWithMutation(
+    shared.extend({}, pos),
+    source,
+    numberOfCharacters
+  );
+}
+function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {
+  let linesCount = 0;
+  let lastNewLinePos = -1;
+  for (let i = 0; i < numberOfCharacters; i++) {
+    if (source.charCodeAt(i) === 10) {
+      linesCount++;
+      lastNewLinePos = i;
+    }
+  }
+  pos.offset += numberOfCharacters;
+  pos.line += linesCount;
+  pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;
+  return pos;
+}
+function assert(condition, msg) {
+  if (!condition) {
+    throw new Error(msg || `unexpected compiler condition`);
+  }
+}
+function findDir(node, name, allowEmpty = false) {
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) {
+      return p;
+    }
+  }
+}
+function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      if (dynamicOnly)
+        continue;
+      if (p.name === name && (p.value || allowEmpty)) {
+        return p;
+      }
+    } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {
+      return p;
+    }
+  }
+}
+function isStaticArgOf(arg, name) {
+  return !!(arg && isStaticExp(arg) && arg.content === name);
+}
+function hasDynamicKeyVBind(node) {
+  return node.props.some(
+    (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj"
+    p.arg.type !== 4 || // v-bind:[_ctx.foo]
+    !p.arg.isStatic)
+    // v-bind:[foo]
+  );
+}
+function isText$1(node) {
+  return node.type === 5 || node.type === 2;
+}
+function isVSlot(p) {
+  return p.type === 7 && p.name === "slot";
+}
+function isTemplateNode(node) {
+  return node.type === 1 && node.tagType === 3;
+}
+function isSlotOutlet(node) {
+  return node.type === 1 && node.tagType === 2;
+}
+const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);
+function getUnnormalizedProps(props, callPath = []) {
+  if (props && !shared.isString(props) && props.type === 14) {
+    const callee = props.callee;
+    if (!shared.isString(callee) && propsHelperSet.has(callee)) {
+      return getUnnormalizedProps(
+        props.arguments[0],
+        callPath.concat(props)
+      );
+    }
+  }
+  return [props, callPath];
+}
+function injectProp(node, prop, context) {
+  let propsWithInjection;
+  let props = node.type === 13 ? node.props : node.arguments[2];
+  let callPath = [];
+  let parentCall;
+  if (props && !shared.isString(props) && props.type === 14) {
+    const ret = getUnnormalizedProps(props);
+    props = ret[0];
+    callPath = ret[1];
+    parentCall = callPath[callPath.length - 1];
+  }
+  if (props == null || shared.isString(props)) {
+    propsWithInjection = createObjectExpression([prop]);
+  } else if (props.type === 14) {
+    const first = props.arguments[0];
+    if (!shared.isString(first) && first.type === 15) {
+      if (!hasProp(prop, first)) {
+        first.properties.unshift(prop);
+      }
+    } else {
+      if (props.callee === TO_HANDLERS) {
+        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+          createObjectExpression([prop]),
+          props
+        ]);
+      } else {
+        props.arguments.unshift(createObjectExpression([prop]));
+      }
+    }
+    !propsWithInjection && (propsWithInjection = props);
+  } else if (props.type === 15) {
+    if (!hasProp(prop, props)) {
+      props.properties.unshift(prop);
+    }
+    propsWithInjection = props;
+  } else {
+    propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+      createObjectExpression([prop]),
+      props
+    ]);
+    if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
+      parentCall = callPath[callPath.length - 2];
+    }
+  }
+  if (node.type === 13) {
+    if (parentCall) {
+      parentCall.arguments[0] = propsWithInjection;
+    } else {
+      node.props = propsWithInjection;
+    }
+  } else {
+    if (parentCall) {
+      parentCall.arguments[0] = propsWithInjection;
+    } else {
+      node.arguments[2] = propsWithInjection;
+    }
+  }
+}
+function hasProp(prop, props) {
+  let result = false;
+  if (prop.key.type === 4) {
+    const propKeyName = prop.key.content;
+    result = props.properties.some(
+      (p) => p.key.type === 4 && p.key.content === propKeyName
+    );
+  }
+  return result;
+}
+function toValidAssetId(name, type) {
+  return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
+    return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString();
+  })}`;
+}
+function hasScopeRef(node, ids) {
+  if (!node || Object.keys(ids).length === 0) {
+    return false;
+  }
+  switch (node.type) {
+    case 1:
+      for (let i = 0; i < node.props.length; i++) {
+        const p = node.props[i];
+        if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {
+          return true;
+        }
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 11:
+      if (hasScopeRef(node.source, ids)) {
+        return true;
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 9:
+      return node.branches.some((b) => hasScopeRef(b, ids));
+    case 10:
+      if (hasScopeRef(node.condition, ids)) {
+        return true;
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 4:
+      return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content];
+    case 8:
+      return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids));
+    case 5:
+    case 12:
+      return hasScopeRef(node.content, ids);
+    case 2:
+    case 3:
+      return false;
+    default:
+      return false;
+  }
+}
+function getMemoedVNodeCall(node) {
+  if (node.type === 14 && node.callee === WITH_MEMO) {
+    return node.arguments[1].returns;
+  } else {
+    return node;
+  }
+}
+
+const deprecationData = {
+  ["COMPILER_IS_ON_ELEMENT"]: {
+    message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
+  },
+  ["COMPILER_V_BIND_SYNC"]: {
+    message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
+  },
+  ["COMPILER_V_BIND_PROP"]: {
+    message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.`
+  },
+  ["COMPILER_V_BIND_OBJECT_ORDER"]: {
+    message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
+  },
+  ["COMPILER_V_ON_NATIVE"]: {
+    message: `.native modifier for v-on has been removed as is no longer necessary.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
+  },
+  ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: {
+    message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
+  },
+  ["COMPILER_NATIVE_TEMPLATE"]: {
+    message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`
+  },
+  ["COMPILER_INLINE_TEMPLATE"]: {
+    message: `"inline-template" has been removed in Vue 3.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
+  },
+  ["COMPILER_FILTER"]: {
+    message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
+  }
+};
+function getCompatValue(key, context) {
+  const config = context.options ? context.options.compatConfig : context.compatConfig;
+  const value = config && config[key];
+  if (key === "MODE") {
+    return value || 3;
+  } else {
+    return value;
+  }
+}
+function isCompatEnabled(key, context) {
+  const mode = getCompatValue("MODE", context);
+  const value = getCompatValue(key, context);
+  return mode === 3 ? value === true : value !== false;
+}
+function checkCompatEnabled(key, context, loc, ...args) {
+  const enabled = isCompatEnabled(key, context);
+  if (enabled) {
+    warnDeprecation(key, context, loc, ...args);
+  }
+  return enabled;
+}
+function warnDeprecation(key, context, loc, ...args) {
+  const val = getCompatValue(key, context);
+  if (val === "suppress-warning") {
+    return;
+  }
+  const { message, link } = deprecationData[key];
+  const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? `
+  Details: ${link}` : ``}`;
+  const err = new SyntaxError(msg);
+  err.code = key;
+  if (loc)
+    err.loc = loc;
+  context.onWarn(err);
+}
+
+const decodeRE = /&(gt|lt|amp|apos|quot);/g;
+const decodeMap = {
+  gt: ">",
+  lt: "<",
+  amp: "&",
+  apos: "'",
+  quot: '"'
+};
+const defaultParserOptions = {
+  delimiters: [`{{`, `}}`],
+  getNamespace: () => 0,
+  getTextMode: () => 0,
+  isVoidTag: shared.NO,
+  isPreTag: shared.NO,
+  isCustomElement: shared.NO,
+  decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
+  onError: defaultOnError,
+  onWarn: defaultOnWarn,
+  comments: true
+};
+function baseParse(content, options = {}) {
+  const context = createParserContext(content, options);
+  const start = getCursor(context);
+  return createRoot(
+    parseChildren(context, 0, []),
+    getSelection(context, start)
+  );
+}
+function createParserContext(content, rawOptions) {
+  const options = shared.extend({}, defaultParserOptions);
+  let key;
+  for (key in rawOptions) {
+    options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key];
+  }
+  return {
+    options,
+    column: 1,
+    line: 1,
+    offset: 0,
+    originalSource: content,
+    source: content,
+    inPre: false,
+    inVPre: false,
+    onWarn: options.onWarn
+  };
+}
+function parseChildren(context, mode, ancestors) {
+  const parent = last(ancestors);
+  const ns = parent ? parent.ns : 0;
+  const nodes = [];
+  while (!isEnd(context, mode, ancestors)) {
+    const s = context.source;
+    let node = void 0;
+    if (mode === 0 || mode === 1) {
+      if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {
+        node = parseInterpolation(context, mode);
+      } else if (mode === 0 && s[0] === "<") {
+        if (s.length === 1) {
+          emitError(context, 5, 1);
+        } else if (s[1] === "!") {
+          if (startsWith(s, "<!--")) {
+            node = parseComment(context);
+          } else if (startsWith(s, "<!DOCTYPE")) {
+            node = parseBogusComment(context);
+          } else if (startsWith(s, "<![CDATA[")) {
+            if (ns !== 0) {
+              node = parseCDATA(context, ancestors);
+            } else {
+              emitError(context, 1);
+              node = parseBogusComment(context);
+            }
+          } else {
+            emitError(context, 11);
+            node = parseBogusComment(context);
+          }
+        } else if (s[1] === "/") {
+          if (s.length === 2) {
+            emitError(context, 5, 2);
+          } else if (s[2] === ">") {
+            emitError(context, 14, 2);
+            advanceBy(context, 3);
+            continue;
+          } else if (/[a-z]/i.test(s[2])) {
+            emitError(context, 23);
+            parseTag(context, TagType.End, parent);
+            continue;
+          } else {
+            emitError(
+              context,
+              12,
+              2
+            );
+            node = parseBogusComment(context);
+          }
+        } else if (/[a-z]/i.test(s[1])) {
+          node = parseElement(context, ancestors);
+          if (isCompatEnabled(
+            "COMPILER_NATIVE_TEMPLATE",
+            context
+          ) && node && node.tag === "template" && !node.props.some(
+            (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+          )) {
+            warnDeprecation(
+              "COMPILER_NATIVE_TEMPLATE",
+              context,
+              node.loc
+            );
+            node = node.children;
+          }
+        } else if (s[1] === "?") {
+          emitError(
+            context,
+            21,
+            1
+          );
+          node = parseBogusComment(context);
+        } else {
+          emitError(context, 12, 1);
+        }
+      }
+    }
+    if (!node) {
+      node = parseText(context, mode);
+    }
+    if (shared.isArray(node)) {
+      for (let i = 0; i < node.length; i++) {
+        pushNode(nodes, node[i]);
+      }
+    } else {
+      pushNode(nodes, node);
+    }
+  }
+  let removedWhitespace = false;
+  if (mode !== 2 && mode !== 1) {
+    const shouldCondense = context.options.whitespace !== "preserve";
+    for (let i = 0; i < nodes.length; i++) {
+      const node = nodes[i];
+      if (node.type === 2) {
+        if (!context.inPre) {
+          if (!/[^\t\r\n\f ]/.test(node.content)) {
+            const prev = nodes[i - 1];
+            const next = nodes[i + 1];
+            if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) {
+              removedWhitespace = true;
+              nodes[i] = null;
+            } else {
+              node.content = " ";
+            }
+          } else if (shouldCondense) {
+            node.content = node.content.replace(/[\t\r\n\f ]+/g, " ");
+          }
+        } else {
+          node.content = node.content.replace(/\r\n/g, "\n");
+        }
+      } else if (node.type === 3 && !context.options.comments) {
+        removedWhitespace = true;
+        nodes[i] = null;
+      }
+    }
+    if (context.inPre && parent && context.options.isPreTag(parent.tag)) {
+      const first = nodes[0];
+      if (first && first.type === 2) {
+        first.content = first.content.replace(/^\r?\n/, "");
+      }
+    }
+  }
+  return removedWhitespace ? nodes.filter(Boolean) : nodes;
+}
+function pushNode(nodes, node) {
+  if (node.type === 2) {
+    const prev = last(nodes);
+    if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) {
+      prev.content += node.content;
+      prev.loc.end = node.loc.end;
+      prev.loc.source += node.loc.source;
+      return;
+    }
+  }
+  nodes.push(node);
+}
+function parseCDATA(context, ancestors) {
+  advanceBy(context, 9);
+  const nodes = parseChildren(context, 3, ancestors);
+  if (context.source.length === 0) {
+    emitError(context, 6);
+  } else {
+    advanceBy(context, 3);
+  }
+  return nodes;
+}
+function parseComment(context) {
+  const start = getCursor(context);
+  let content;
+  const match = /--(\!)?>/.exec(context.source);
+  if (!match) {
+    content = context.source.slice(4);
+    advanceBy(context, context.source.length);
+    emitError(context, 7);
+  } else {
+    if (match.index <= 3) {
+      emitError(context, 0);
+    }
+    if (match[1]) {
+      emitError(context, 10);
+    }
+    content = context.source.slice(4, match.index);
+    const s = context.source.slice(0, match.index);
+    let prevIndex = 1, nestedIndex = 0;
+    while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) {
+      advanceBy(context, nestedIndex - prevIndex + 1);
+      if (nestedIndex + 4 < s.length) {
+        emitError(context, 16);
+      }
+      prevIndex = nestedIndex + 1;
+    }
+    advanceBy(context, match.index + match[0].length - prevIndex + 1);
+  }
+  return {
+    type: 3,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseBogusComment(context) {
+  const start = getCursor(context);
+  const contentStart = context.source[1] === "?" ? 1 : 2;
+  let content;
+  const closeIndex = context.source.indexOf(">");
+  if (closeIndex === -1) {
+    content = context.source.slice(contentStart);
+    advanceBy(context, context.source.length);
+  } else {
+    content = context.source.slice(contentStart, closeIndex);
+    advanceBy(context, closeIndex + 1);
+  }
+  return {
+    type: 3,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseElement(context, ancestors) {
+  const wasInPre = context.inPre;
+  const wasInVPre = context.inVPre;
+  const parent = last(ancestors);
+  const element = parseTag(context, TagType.Start, parent);
+  const isPreBoundary = context.inPre && !wasInPre;
+  const isVPreBoundary = context.inVPre && !wasInVPre;
+  if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
+    if (isPreBoundary) {
+      context.inPre = false;
+    }
+    if (isVPreBoundary) {
+      context.inVPre = false;
+    }
+    return element;
+  }
+  ancestors.push(element);
+  const mode = context.options.getTextMode(element, parent);
+  const children = parseChildren(context, mode, ancestors);
+  ancestors.pop();
+  {
+    const inlineTemplateProp = element.props.find(
+      (p) => p.type === 6 && p.name === "inline-template"
+    );
+    if (inlineTemplateProp && checkCompatEnabled(
+      "COMPILER_INLINE_TEMPLATE",
+      context,
+      inlineTemplateProp.loc
+    )) {
+      const loc = getSelection(context, element.loc.end);
+      inlineTemplateProp.value = {
+        type: 2,
+        content: loc.source,
+        loc
+      };
+    }
+  }
+  element.children = children;
+  if (startsWithEndTagOpen(context.source, element.tag)) {
+    parseTag(context, TagType.End, parent);
+  } else {
+    emitError(context, 24, 0, element.loc.start);
+    if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
+      const first = children[0];
+      if (first && startsWith(first.loc.source, "<!--")) {
+        emitError(context, 8);
+      }
+    }
+  }
+  element.loc = getSelection(context, element.loc.start);
+  if (isPreBoundary) {
+    context.inPre = false;
+  }
+  if (isVPreBoundary) {
+    context.inVPre = false;
+  }
+  return element;
+}
+var TagType = /* @__PURE__ */ ((TagType2) => {
+  TagType2[TagType2["Start"] = 0] = "Start";
+  TagType2[TagType2["End"] = 1] = "End";
+  return TagType2;
+})(TagType || {});
+const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap(
+  `if,else,else-if,for,slot`
+);
+function parseTag(context, type, parent) {
+  const start = getCursor(context);
+  const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);
+  const tag = match[1];
+  const ns = context.options.getNamespace(tag, parent);
+  advanceBy(context, match[0].length);
+  advanceSpaces(context);
+  const cursor = getCursor(context);
+  const currentSource = context.source;
+  if (context.options.isPreTag(tag)) {
+    context.inPre = true;
+  }
+  let props = parseAttributes(context, type);
+  if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) {
+    context.inVPre = true;
+    shared.extend(context, cursor);
+    context.source = currentSource;
+    props = parseAttributes(context, type).filter((p) => p.name !== "v-pre");
+  }
+  let isSelfClosing = false;
+  if (context.source.length === 0) {
+    emitError(context, 9);
+  } else {
+    isSelfClosing = startsWith(context.source, "/>");
+    if (type === 1 /* End */ && isSelfClosing) {
+      emitError(context, 4);
+    }
+    advanceBy(context, isSelfClosing ? 2 : 1);
+  }
+  if (type === 1 /* End */) {
+    return;
+  }
+  if (isCompatEnabled(
+    "COMPILER_V_IF_V_FOR_PRECEDENCE",
+    context
+  )) {
+    let hasIf = false;
+    let hasFor = false;
+    for (let i = 0; i < props.length; i++) {
+      const p = props[i];
+      if (p.type === 7) {
+        if (p.name === "if") {
+          hasIf = true;
+        } else if (p.name === "for") {
+          hasFor = true;
+        }
+      }
+      if (hasIf && hasFor) {
+        warnDeprecation(
+          "COMPILER_V_IF_V_FOR_PRECEDENCE",
+          context,
+          getSelection(context, start)
+        );
+        break;
+      }
+    }
+  }
+  let tagType = 0;
+  if (!context.inVPre) {
+    if (tag === "slot") {
+      tagType = 2;
+    } else if (tag === "template") {
+      if (props.some(
+        (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+      )) {
+        tagType = 3;
+      }
+    } else if (isComponent(tag, props, context)) {
+      tagType = 1;
+    }
+  }
+  return {
+    type: 1,
+    ns,
+    tag,
+    tagType,
+    props,
+    isSelfClosing,
+    children: [],
+    loc: getSelection(context, start),
+    codegenNode: void 0
+    // to be created during transform phase
+  };
+}
+function isComponent(tag, props, context) {
+  const options = context.options;
+  if (options.isCustomElement(tag)) {
+    return false;
+  }
+  if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) {
+    return true;
+  }
+  for (let i = 0; i < props.length; i++) {
+    const p = props[i];
+    if (p.type === 6) {
+      if (p.name === "is" && p.value) {
+        if (p.value.content.startsWith("vue:")) {
+          return true;
+        } else if (checkCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context,
+          p.loc
+        )) {
+          return true;
+        }
+      }
+    } else {
+      if (p.name === "is") {
+        return true;
+      } else if (
+        // :is on plain element - only treat as component in compat mode
+        p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context,
+          p.loc
+        )
+      ) {
+        return true;
+      }
+    }
+  }
+}
+function parseAttributes(context, type) {
+  const props = [];
+  const attributeNames = /* @__PURE__ */ new Set();
+  while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) {
+    if (startsWith(context.source, "/")) {
+      emitError(context, 22);
+      advanceBy(context, 1);
+      advanceSpaces(context);
+      continue;
+    }
+    if (type === 1 /* End */) {
+      emitError(context, 3);
+    }
+    const attr = parseAttribute(context, attributeNames);
+    if (attr.type === 6 && attr.value && attr.name === "class") {
+      attr.value.content = attr.value.content.replace(/\s+/g, " ").trim();
+    }
+    if (type === 0 /* Start */) {
+      props.push(attr);
+    }
+    if (/^[^\t\r\n\f />]/.test(context.source)) {
+      emitError(context, 15);
+    }
+    advanceSpaces(context);
+  }
+  return props;
+}
+function parseAttribute(context, nameSet) {
+  var _a;
+  const start = getCursor(context);
+  const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);
+  const name = match[0];
+  if (nameSet.has(name)) {
+    emitError(context, 2);
+  }
+  nameSet.add(name);
+  if (name[0] === "=") {
+    emitError(context, 19);
+  }
+  {
+    const pattern = /["'<]/g;
+    let m;
+    while (m = pattern.exec(name)) {
+      emitError(
+        context,
+        17,
+        m.index
+      );
+    }
+  }
+  advanceBy(context, name.length);
+  let value = void 0;
+  if (/^[\t\r\n\f ]*=/.test(context.source)) {
+    advanceSpaces(context);
+    advanceBy(context, 1);
+    advanceSpaces(context);
+    value = parseAttributeValue(context);
+    if (!value) {
+      emitError(context, 13);
+    }
+  }
+  const loc = getSelection(context, start);
+  if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {
+    const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(
+      name
+    );
+    let isPropShorthand = startsWith(name, ".");
+    let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot");
+    let arg;
+    if (match2[2]) {
+      const isSlot = dirName === "slot";
+      const startOffset = name.lastIndexOf(
+        match2[2],
+        name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0)
+      );
+      const loc2 = getSelection(
+        context,
+        getNewPosition(context, start, startOffset),
+        getNewPosition(
+          context,
+          start,
+          startOffset + match2[2].length + (isSlot && match2[3] || "").length
+        )
+      );
+      let content = match2[2];
+      let isStatic = true;
+      if (content.startsWith("[")) {
+        isStatic = false;
+        if (!content.endsWith("]")) {
+          emitError(
+            context,
+            27
+          );
+          content = content.slice(1);
+        } else {
+          content = content.slice(1, content.length - 1);
+        }
+      } else if (isSlot) {
+        content += match2[3] || "";
+      }
+      arg = {
+        type: 4,
+        content,
+        isStatic,
+        constType: isStatic ? 3 : 0,
+        loc: loc2
+      };
+    }
+    if (value && value.isQuoted) {
+      const valueLoc = value.loc;
+      valueLoc.start.offset++;
+      valueLoc.start.column++;
+      valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);
+      valueLoc.source = valueLoc.source.slice(1, -1);
+    }
+    const modifiers = match2[3] ? match2[3].slice(1).split(".") : [];
+    if (isPropShorthand)
+      modifiers.push("prop");
+    if (dirName === "bind" && arg) {
+      if (modifiers.includes("sync") && checkCompatEnabled(
+        "COMPILER_V_BIND_SYNC",
+        context,
+        loc,
+        arg.loc.source
+      )) {
+        dirName = "model";
+        modifiers.splice(modifiers.indexOf("sync"), 1);
+      }
+      if (modifiers.includes("prop")) {
+        checkCompatEnabled(
+          "COMPILER_V_BIND_PROP",
+          context,
+          loc
+        );
+      }
+    }
+    return {
+      type: 7,
+      name: dirName,
+      exp: value && {
+        type: 4,
+        content: value.content,
+        isStatic: false,
+        // Treat as non-constant by default. This can be potentially set to
+        // other values by `transformExpression` to make it eligible for hoisting.
+        constType: 0,
+        loc: value.loc
+      },
+      arg,
+      modifiers,
+      loc
+    };
+  }
+  if (!context.inVPre && startsWith(name, "v-")) {
+    emitError(context, 26);
+  }
+  return {
+    type: 6,
+    name,
+    value: value && {
+      type: 2,
+      content: value.content,
+      loc: value.loc
+    },
+    loc
+  };
+}
+function parseAttributeValue(context) {
+  const start = getCursor(context);
+  let content;
+  const quote = context.source[0];
+  const isQuoted = quote === `"` || quote === `'`;
+  if (isQuoted) {
+    advanceBy(context, 1);
+    const endIndex = context.source.indexOf(quote);
+    if (endIndex === -1) {
+      content = parseTextData(
+        context,
+        context.source.length,
+        4
+      );
+    } else {
+      content = parseTextData(context, endIndex, 4);
+      advanceBy(context, 1);
+    }
+  } else {
+    const match = /^[^\t\r\n\f >]+/.exec(context.source);
+    if (!match) {
+      return void 0;
+    }
+    const unexpectedChars = /["'<=`]/g;
+    let m;
+    while (m = unexpectedChars.exec(match[0])) {
+      emitError(
+        context,
+        18,
+        m.index
+      );
+    }
+    content = parseTextData(context, match[0].length, 4);
+  }
+  return { content, isQuoted, loc: getSelection(context, start) };
+}
+function parseInterpolation(context, mode) {
+  const [open, close] = context.options.delimiters;
+  const closeIndex = context.source.indexOf(close, open.length);
+  if (closeIndex === -1) {
+    emitError(context, 25);
+    return void 0;
+  }
+  const start = getCursor(context);
+  advanceBy(context, open.length);
+  const innerStart = getCursor(context);
+  const innerEnd = getCursor(context);
+  const rawContentLength = closeIndex - open.length;
+  const rawContent = context.source.slice(0, rawContentLength);
+  const preTrimContent = parseTextData(context, rawContentLength, mode);
+  const content = preTrimContent.trim();
+  const startOffset = preTrimContent.indexOf(content);
+  if (startOffset > 0) {
+    advancePositionWithMutation(innerStart, rawContent, startOffset);
+  }
+  const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);
+  advancePositionWithMutation(innerEnd, rawContent, endOffset);
+  advanceBy(context, close.length);
+  return {
+    type: 5,
+    content: {
+      type: 4,
+      isStatic: false,
+      // Set `isConstant` to false by default and will decide in transformExpression
+      constType: 0,
+      content,
+      loc: getSelection(context, innerStart, innerEnd)
+    },
+    loc: getSelection(context, start)
+  };
+}
+function parseText(context, mode) {
+  const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]];
+  let endIndex = context.source.length;
+  for (let i = 0; i < endTokens.length; i++) {
+    const index = context.source.indexOf(endTokens[i], 1);
+    if (index !== -1 && endIndex > index) {
+      endIndex = index;
+    }
+  }
+  const start = getCursor(context);
+  const content = parseTextData(context, endIndex, mode);
+  return {
+    type: 2,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseTextData(context, length, mode) {
+  const rawText = context.source.slice(0, length);
+  advanceBy(context, length);
+  if (mode === 2 || mode === 3 || !rawText.includes("&")) {
+    return rawText;
+  } else {
+    return context.options.decodeEntities(
+      rawText,
+      mode === 4
+    );
+  }
+}
+function getCursor(context) {
+  const { column, line, offset } = context;
+  return { column, line, offset };
+}
+function getSelection(context, start, end) {
+  end = end || getCursor(context);
+  return {
+    start,
+    end,
+    source: context.originalSource.slice(start.offset, end.offset)
+  };
+}
+function last(xs) {
+  return xs[xs.length - 1];
+}
+function startsWith(source, searchString) {
+  return source.startsWith(searchString);
+}
+function advanceBy(context, numberOfCharacters) {
+  const { source } = context;
+  advancePositionWithMutation(context, source, numberOfCharacters);
+  context.source = source.slice(numberOfCharacters);
+}
+function advanceSpaces(context) {
+  const match = /^[\t\r\n\f ]+/.exec(context.source);
+  if (match) {
+    advanceBy(context, match[0].length);
+  }
+}
+function getNewPosition(context, start, numberOfCharacters) {
+  return advancePositionWithClone(
+    start,
+    context.originalSource.slice(start.offset, numberOfCharacters),
+    numberOfCharacters
+  );
+}
+function emitError(context, code, offset, loc = getCursor(context)) {
+  if (offset) {
+    loc.offset += offset;
+    loc.column += offset;
+  }
+  context.options.onError(
+    createCompilerError(code, {
+      start: loc,
+      end: loc,
+      source: ""
+    })
+  );
+}
+function isEnd(context, mode, ancestors) {
+  const s = context.source;
+  switch (mode) {
+    case 0:
+      if (startsWith(s, "</")) {
+        for (let i = ancestors.length - 1; i >= 0; --i) {
+          if (startsWithEndTagOpen(s, ancestors[i].tag)) {
+            return true;
+          }
+        }
+      }
+      break;
+    case 1:
+    case 2: {
+      const parent = last(ancestors);
+      if (parent && startsWithEndTagOpen(s, parent.tag)) {
+        return true;
+      }
+      break;
+    }
+    case 3:
+      if (startsWith(s, "]]>")) {
+        return true;
+      }
+      break;
+  }
+  return !s;
+}
+function startsWithEndTagOpen(source, tag) {
+  return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">");
+}
+
+function hoistStatic(root, context) {
+  walk(
+    root,
+    context,
+    // Root node is unfortunately non-hoistable due to potential parent
+    // fallthrough attributes.
+    isSingleElementRoot(root, root.children[0])
+  );
+}
+function isSingleElementRoot(root, child) {
+  const { children } = root;
+  return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
+}
+function walk(node, context, doNotHoistNode = false) {
+  const { children } = node;
+  const originalCount = children.length;
+  let hoistedCount = 0;
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+    if (child.type === 1 && child.tagType === 0) {
+      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
+      if (constantType > 0) {
+        if (constantType >= 2) {
+          child.codegenNode.patchFlag = -1 + (` /* HOISTED */` );
+          child.codegenNode = context.hoist(child.codegenNode);
+          hoistedCount++;
+          continue;
+        }
+      } else {
+        const codegenNode = child.codegenNode;
+        if (codegenNode.type === 13) {
+          const flag = getPatchFlag(codegenNode);
+          if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {
+            const props = getNodeProps(child);
+            if (props) {
+              codegenNode.props = context.hoist(props);
+            }
+          }
+          if (codegenNode.dynamicProps) {
+            codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
+          }
+        }
+      }
+    }
+    if (child.type === 1) {
+      const isComponent = child.tagType === 1;
+      if (isComponent) {
+        context.scopes.vSlot++;
+      }
+      walk(child, context);
+      if (isComponent) {
+        context.scopes.vSlot--;
+      }
+    } else if (child.type === 11) {
+      walk(child, context, child.children.length === 1);
+    } else if (child.type === 9) {
+      for (let i2 = 0; i2 < child.branches.length; i2++) {
+        walk(
+          child.branches[i2],
+          context,
+          child.branches[i2].children.length === 1
+        );
+      }
+    }
+  }
+  if (hoistedCount && context.transformHoist) {
+    context.transformHoist(children, context, node);
+  }
+  if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) {
+    node.codegenNode.children = context.hoist(
+      createArrayExpression(node.codegenNode.children)
+    );
+  }
+}
+function getConstantType(node, context) {
+  const { constantCache } = context;
+  switch (node.type) {
+    case 1:
+      if (node.tagType !== 0) {
+        return 0;
+      }
+      const cached = constantCache.get(node);
+      if (cached !== void 0) {
+        return cached;
+      }
+      const codegenNode = node.codegenNode;
+      if (codegenNode.type !== 13) {
+        return 0;
+      }
+      if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") {
+        return 0;
+      }
+      const flag = getPatchFlag(codegenNode);
+      if (!flag) {
+        let returnType2 = 3;
+        const generatedPropsType = getGeneratedPropsConstantType(node, context);
+        if (generatedPropsType === 0) {
+          constantCache.set(node, 0);
+          return 0;
+        }
+        if (generatedPropsType < returnType2) {
+          returnType2 = generatedPropsType;
+        }
+        for (let i = 0; i < node.children.length; i++) {
+          const childType = getConstantType(node.children[i], context);
+          if (childType === 0) {
+            constantCache.set(node, 0);
+            return 0;
+          }
+          if (childType < returnType2) {
+            returnType2 = childType;
+          }
+        }
+        if (returnType2 > 1) {
+          for (let i = 0; i < node.props.length; i++) {
+            const p = node.props[i];
+            if (p.type === 7 && p.name === "bind" && p.exp) {
+              const expType = getConstantType(p.exp, context);
+              if (expType === 0) {
+                constantCache.set(node, 0);
+                return 0;
+              }
+              if (expType < returnType2) {
+                returnType2 = expType;
+              }
+            }
+          }
+        }
+        if (codegenNode.isBlock) {
+          for (let i = 0; i < node.props.length; i++) {
+            const p = node.props[i];
+            if (p.type === 7) {
+              constantCache.set(node, 0);
+              return 0;
+            }
+          }
+          context.removeHelper(OPEN_BLOCK);
+          context.removeHelper(
+            getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)
+          );
+          codegenNode.isBlock = false;
+          context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
+        }
+        constantCache.set(node, returnType2);
+        return returnType2;
+      } else {
+        constantCache.set(node, 0);
+        return 0;
+      }
+    case 2:
+    case 3:
+      return 3;
+    case 9:
+    case 11:
+    case 10:
+      return 0;
+    case 5:
+    case 12:
+      return getConstantType(node.content, context);
+    case 4:
+      return node.constType;
+    case 8:
+      let returnType = 3;
+      for (let i = 0; i < node.children.length; i++) {
+        const child = node.children[i];
+        if (shared.isString(child) || shared.isSymbol(child)) {
+          continue;
+        }
+        const childType = getConstantType(child, context);
+        if (childType === 0) {
+          return 0;
+        } else if (childType < returnType) {
+          returnType = childType;
+        }
+      }
+      return returnType;
+    default:
+      return 0;
+  }
+}
+const allowHoistedHelperSet = /* @__PURE__ */ new Set([
+  NORMALIZE_CLASS,
+  NORMALIZE_STYLE,
+  NORMALIZE_PROPS,
+  GUARD_REACTIVE_PROPS
+]);
+function getConstantTypeOfHelperCall(value, context) {
+  if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {
+    const arg = value.arguments[0];
+    if (arg.type === 4) {
+      return getConstantType(arg, context);
+    } else if (arg.type === 14) {
+      return getConstantTypeOfHelperCall(arg, context);
+    }
+  }
+  return 0;
+}
+function getGeneratedPropsConstantType(node, context) {
+  let returnType = 3;
+  const props = getNodeProps(node);
+  if (props && props.type === 15) {
+    const { properties } = props;
+    for (let i = 0; i < properties.length; i++) {
+      const { key, value } = properties[i];
+      const keyType = getConstantType(key, context);
+      if (keyType === 0) {
+        return keyType;
+      }
+      if (keyType < returnType) {
+        returnType = keyType;
+      }
+      let valueType;
+      if (value.type === 4) {
+        valueType = getConstantType(value, context);
+      } else if (value.type === 14) {
+        valueType = getConstantTypeOfHelperCall(value, context);
+      } else {
+        valueType = 0;
+      }
+      if (valueType === 0) {
+        return valueType;
+      }
+      if (valueType < returnType) {
+        returnType = valueType;
+      }
+    }
+  }
+  return returnType;
+}
+function getNodeProps(node) {
+  const codegenNode = node.codegenNode;
+  if (codegenNode.type === 13) {
+    return codegenNode.props;
+  }
+}
+function getPatchFlag(node) {
+  const flag = node.patchFlag;
+  return flag ? parseInt(flag, 10) : void 0;
+}
+
+function createTransformContext(root, {
+  filename = "",
+  prefixIdentifiers = false,
+  hoistStatic: hoistStatic2 = false,
+  cacheHandlers = false,
+  nodeTransforms = [],
+  directiveTransforms = {},
+  transformHoist = null,
+  isBuiltInComponent = shared.NOOP,
+  isCustomElement = shared.NOOP,
+  expressionPlugins = [],
+  scopeId = null,
+  slotted = true,
+  ssr = false,
+  inSSR = false,
+  ssrCssVars = ``,
+  bindingMetadata = shared.EMPTY_OBJ,
+  inline = false,
+  isTS = false,
+  onError = defaultOnError,
+  onWarn = defaultOnWarn,
+  compatConfig
+}) {
+  const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/);
+  const context = {
+    // options
+    selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])),
+    prefixIdentifiers,
+    hoistStatic: hoistStatic2,
+    cacheHandlers,
+    nodeTransforms,
+    directiveTransforms,
+    transformHoist,
+    isBuiltInComponent,
+    isCustomElement,
+    expressionPlugins,
+    scopeId,
+    slotted,
+    ssr,
+    inSSR,
+    ssrCssVars,
+    bindingMetadata,
+    inline,
+    isTS,
+    onError,
+    onWarn,
+    compatConfig,
+    // state
+    root,
+    helpers: /* @__PURE__ */ new Map(),
+    components: /* @__PURE__ */ new Set(),
+    directives: /* @__PURE__ */ new Set(),
+    hoists: [],
+    imports: [],
+    constantCache: /* @__PURE__ */ new Map(),
+    temps: 0,
+    cached: 0,
+    identifiers: /* @__PURE__ */ Object.create(null),
+    scopes: {
+      vFor: 0,
+      vSlot: 0,
+      vPre: 0,
+      vOnce: 0
+    },
+    parent: null,
+    currentNode: root,
+    childIndex: 0,
+    inVOnce: false,
+    // methods
+    helper(name) {
+      const count = context.helpers.get(name) || 0;
+      context.helpers.set(name, count + 1);
+      return name;
+    },
+    removeHelper(name) {
+      const count = context.helpers.get(name);
+      if (count) {
+        const currentCount = count - 1;
+        if (!currentCount) {
+          context.helpers.delete(name);
+        } else {
+          context.helpers.set(name, currentCount);
+        }
+      }
+    },
+    helperString(name) {
+      return `_${helperNameMap[context.helper(name)]}`;
+    },
+    replaceNode(node) {
+      {
+        if (!context.currentNode) {
+          throw new Error(`Node being replaced is already removed.`);
+        }
+        if (!context.parent) {
+          throw new Error(`Cannot replace root node.`);
+        }
+      }
+      context.parent.children[context.childIndex] = context.currentNode = node;
+    },
+    removeNode(node) {
+      if (!context.parent) {
+        throw new Error(`Cannot remove root node.`);
+      }
+      const list = context.parent.children;
+      const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;
+      if (removalIndex < 0) {
+        throw new Error(`node being removed is not a child of current parent`);
+      }
+      if (!node || node === context.currentNode) {
+        context.currentNode = null;
+        context.onNodeRemoved();
+      } else {
+        if (context.childIndex > removalIndex) {
+          context.childIndex--;
+          context.onNodeRemoved();
+        }
+      }
+      context.parent.children.splice(removalIndex, 1);
+    },
+    onNodeRemoved: () => {
+    },
+    addIdentifiers(exp) {
+      {
+        if (shared.isString(exp)) {
+          addId(exp);
+        } else if (exp.identifiers) {
+          exp.identifiers.forEach(addId);
+        } else if (exp.type === 4) {
+          addId(exp.content);
+        }
+      }
+    },
+    removeIdentifiers(exp) {
+      {
+        if (shared.isString(exp)) {
+          removeId(exp);
+        } else if (exp.identifiers) {
+          exp.identifiers.forEach(removeId);
+        } else if (exp.type === 4) {
+          removeId(exp.content);
+        }
+      }
+    },
+    hoist(exp) {
+      if (shared.isString(exp))
+        exp = createSimpleExpression(exp);
+      context.hoists.push(exp);
+      const identifier = createSimpleExpression(
+        `_hoisted_${context.hoists.length}`,
+        false,
+        exp.loc,
+        2
+      );
+      identifier.hoisted = exp;
+      return identifier;
+    },
+    cache(exp, isVNode = false) {
+      return createCacheExpression(context.cached++, exp, isVNode);
+    }
+  };
+  {
+    context.filters = /* @__PURE__ */ new Set();
+  }
+  function addId(id) {
+    const { identifiers } = context;
+    if (identifiers[id] === void 0) {
+      identifiers[id] = 0;
+    }
+    identifiers[id]++;
+  }
+  function removeId(id) {
+    context.identifiers[id]--;
+  }
+  return context;
+}
+function transform(root, options) {
+  const context = createTransformContext(root, options);
+  traverseNode(root, context);
+  if (options.hoistStatic) {
+    hoistStatic(root, context);
+  }
+  if (!options.ssr) {
+    createRootCodegen(root, context);
+  }
+  root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);
+  root.components = [...context.components];
+  root.directives = [...context.directives];
+  root.imports = context.imports;
+  root.hoists = context.hoists;
+  root.temps = context.temps;
+  root.cached = context.cached;
+  {
+    root.filters = [...context.filters];
+  }
+}
+function createRootCodegen(root, context) {
+  const { helper } = context;
+  const { children } = root;
+  if (children.length === 1) {
+    const child = children[0];
+    if (isSingleElementRoot(root, child) && child.codegenNode) {
+      const codegenNode = child.codegenNode;
+      if (codegenNode.type === 13) {
+        convertToBlock(codegenNode, context);
+      }
+      root.codegenNode = codegenNode;
+    } else {
+      root.codegenNode = child;
+    }
+  } else if (children.length > 1) {
+    let patchFlag = 64;
+    let patchFlagText = shared.PatchFlagNames[64];
+    if (children.filter((c) => c.type !== 3).length === 1) {
+      patchFlag |= 2048;
+      patchFlagText += `, ${shared.PatchFlagNames[2048]}`;
+    }
+    root.codegenNode = createVNodeCall(
+      context,
+      helper(FRAGMENT),
+      void 0,
+      root.children,
+      patchFlag + (` /* ${patchFlagText} */` ),
+      void 0,
+      void 0,
+      true,
+      void 0,
+      false
+      /* isComponent */
+    );
+  } else ;
+}
+function traverseChildren(parent, context) {
+  let i = 0;
+  const nodeRemoved = () => {
+    i--;
+  };
+  for (; i < parent.children.length; i++) {
+    const child = parent.children[i];
+    if (shared.isString(child))
+      continue;
+    context.parent = parent;
+    context.childIndex = i;
+    context.onNodeRemoved = nodeRemoved;
+    traverseNode(child, context);
+  }
+}
+function traverseNode(node, context) {
+  context.currentNode = node;
+  const { nodeTransforms } = context;
+  const exitFns = [];
+  for (let i2 = 0; i2 < nodeTransforms.length; i2++) {
+    const onExit = nodeTransforms[i2](node, context);
+    if (onExit) {
+      if (shared.isArray(onExit)) {
+        exitFns.push(...onExit);
+      } else {
+        exitFns.push(onExit);
+      }
+    }
+    if (!context.currentNode) {
+      return;
+    } else {
+      node = context.currentNode;
+    }
+  }
+  switch (node.type) {
+    case 3:
+      if (!context.ssr) {
+        context.helper(CREATE_COMMENT);
+      }
+      break;
+    case 5:
+      if (!context.ssr) {
+        context.helper(TO_DISPLAY_STRING);
+      }
+      break;
+    case 9:
+      for (let i2 = 0; i2 < node.branches.length; i2++) {
+        traverseNode(node.branches[i2], context);
+      }
+      break;
+    case 10:
+    case 11:
+    case 1:
+    case 0:
+      traverseChildren(node, context);
+      break;
+  }
+  context.currentNode = node;
+  let i = exitFns.length;
+  while (i--) {
+    exitFns[i]();
+  }
+}
+function createStructuralDirectiveTransform(name, fn) {
+  const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n);
+  return (node, context) => {
+    if (node.type === 1) {
+      const { props } = node;
+      if (node.tagType === 3 && props.some(isVSlot)) {
+        return;
+      }
+      const exitFns = [];
+      for (let i = 0; i < props.length; i++) {
+        const prop = props[i];
+        if (prop.type === 7 && matches(prop.name)) {
+          props.splice(i, 1);
+          i--;
+          const onExit = fn(node, prop, context);
+          if (onExit)
+            exitFns.push(onExit);
+        }
+      }
+      return exitFns;
+    }
+  };
+}
+
+const PURE_ANNOTATION = `/*#__PURE__*/`;
+const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
+function createCodegenContext(ast, {
+  mode = "function",
+  prefixIdentifiers = mode === "module",
+  sourceMap = false,
+  filename = `template.vue.html`,
+  scopeId = null,
+  optimizeImports = false,
+  runtimeGlobalName = `Vue`,
+  runtimeModuleName = `vue`,
+  ssrRuntimeModuleName = "vue/server-renderer",
+  ssr = false,
+  isTS = false,
+  inSSR = false
+}) {
+  const context = {
+    mode,
+    prefixIdentifiers,
+    sourceMap,
+    filename,
+    scopeId,
+    optimizeImports,
+    runtimeGlobalName,
+    runtimeModuleName,
+    ssrRuntimeModuleName,
+    ssr,
+    isTS,
+    inSSR,
+    source: ast.loc.source,
+    code: ``,
+    column: 1,
+    line: 1,
+    offset: 0,
+    indentLevel: 0,
+    pure: false,
+    map: void 0,
+    helper(key) {
+      return `_${helperNameMap[key]}`;
+    },
+    push(code, node) {
+      context.code += code;
+      if (context.map) {
+        if (node) {
+          let name;
+          if (node.type === 4 && !node.isStatic) {
+            const content = node.content.replace(/^_ctx\./, "");
+            if (content !== node.content && isSimpleIdentifier(content)) {
+              name = content;
+            }
+          }
+          addMapping(node.loc.start, name);
+        }
+        advancePositionWithMutation(context, code);
+        if (node && node.loc !== locStub) {
+          addMapping(node.loc.end);
+        }
+      }
+    },
+    indent() {
+      newline(++context.indentLevel);
+    },
+    deindent(withoutNewLine = false) {
+      if (withoutNewLine) {
+        --context.indentLevel;
+      } else {
+        newline(--context.indentLevel);
+      }
+    },
+    newline() {
+      newline(context.indentLevel);
+    }
+  };
+  function newline(n) {
+    context.push("\n" + `  `.repeat(n));
+  }
+  function addMapping(loc, name) {
+    context.map.addMapping({
+      name,
+      source: context.filename,
+      original: {
+        line: loc.line,
+        column: loc.column - 1
+        // source-map column is 0 based
+      },
+      generated: {
+        line: context.line,
+        column: context.column - 1
+      }
+    });
+  }
+  if (sourceMap) {
+    context.map = new sourceMapJs.SourceMapGenerator();
+    context.map.setSourceContent(filename, context.source);
+  }
+  return context;
+}
+function generate(ast, options = {}) {
+  const context = createCodegenContext(ast, options);
+  if (options.onContextCreated)
+    options.onContextCreated(context);
+  const {
+    mode,
+    push,
+    prefixIdentifiers,
+    indent,
+    deindent,
+    newline,
+    scopeId,
+    ssr
+  } = context;
+  const helpers = Array.from(ast.helpers);
+  const hasHelpers = helpers.length > 0;
+  const useWithBlock = !prefixIdentifiers && mode !== "module";
+  const genScopeId = scopeId != null && mode === "module";
+  const isSetupInlined = !!options.inline;
+  const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;
+  if (mode === "module") {
+    genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined);
+  } else {
+    genFunctionPreamble(ast, preambleContext);
+  }
+  const functionName = ssr ? `ssrRender` : `render`;
+  const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"];
+  if (options.bindingMetadata && !options.inline) {
+    args.push("$props", "$setup", "$data", "$options");
+  }
+  const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", ");
+  if (isSetupInlined) {
+    push(`(${signature}) => {`);
+  } else {
+    push(`function ${functionName}(${signature}) {`);
+  }
+  indent();
+  if (useWithBlock) {
+    push(`with (_ctx) {`);
+    indent();
+    if (hasHelpers) {
+      push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`);
+      push(`
+`);
+      newline();
+    }
+  }
+  if (ast.components.length) {
+    genAssets(ast.components, "component", context);
+    if (ast.directives.length || ast.temps > 0) {
+      newline();
+    }
+  }
+  if (ast.directives.length) {
+    genAssets(ast.directives, "directive", context);
+    if (ast.temps > 0) {
+      newline();
+    }
+  }
+  if (ast.filters && ast.filters.length) {
+    newline();
+    genAssets(ast.filters, "filter", context);
+    newline();
+  }
+  if (ast.temps > 0) {
+    push(`let `);
+    for (let i = 0; i < ast.temps; i++) {
+      push(`${i > 0 ? `, ` : ``}_temp${i}`);
+    }
+  }
+  if (ast.components.length || ast.directives.length || ast.temps) {
+    push(`
+`);
+    newline();
+  }
+  if (!ssr) {
+    push(`return `);
+  }
+  if (ast.codegenNode) {
+    genNode(ast.codegenNode, context);
+  } else {
+    push(`null`);
+  }
+  if (useWithBlock) {
+    deindent();
+    push(`}`);
+  }
+  deindent();
+  push(`}`);
+  return {
+    ast,
+    code: context.code,
+    preamble: isSetupInlined ? preambleContext.code : ``,
+    // SourceMapGenerator does have toJSON() method but it's not in the types
+    map: context.map ? context.map.toJSON() : void 0
+  };
+}
+function genFunctionPreamble(ast, context) {
+  const {
+    ssr,
+    prefixIdentifiers,
+    push,
+    newline,
+    runtimeModuleName,
+    runtimeGlobalName,
+    ssrRuntimeModuleName
+  } = context;
+  const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName;
+  const helpers = Array.from(ast.helpers);
+  if (helpers.length > 0) {
+    if (prefixIdentifiers) {
+      push(`const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding}
+`);
+    } else {
+      push(`const _Vue = ${VueBinding}
+`);
+      if (ast.hoists.length) {
+        const staticHelpers = [
+          CREATE_VNODE,
+          CREATE_ELEMENT_VNODE,
+          CREATE_COMMENT,
+          CREATE_TEXT,
+          CREATE_STATIC
+        ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", ");
+        push(`const { ${staticHelpers} } = _Vue
+`);
+      }
+    }
+  }
+  if (ast.ssrHelpers && ast.ssrHelpers.length) {
+    push(
+      `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}")
+`
+    );
+  }
+  genHoists(ast.hoists, context);
+  newline();
+  push(`return `);
+}
+function genModulePreamble(ast, context, genScopeId, inline) {
+  const {
+    push,
+    newline,
+    optimizeImports,
+    runtimeModuleName,
+    ssrRuntimeModuleName
+  } = context;
+  if (genScopeId && ast.hoists.length) {
+    ast.helpers.add(PUSH_SCOPE_ID);
+    ast.helpers.add(POP_SCOPE_ID);
+  }
+  if (ast.helpers.size) {
+    const helpers = Array.from(ast.helpers);
+    if (optimizeImports) {
+      push(
+        `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)}
+`
+      );
+      push(
+        `
+// Binding optimization for webpack code-split
+const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")}
+`
+      );
+    } else {
+      push(
+        `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)}
+`
+      );
+    }
+  }
+  if (ast.ssrHelpers && ast.ssrHelpers.length) {
+    push(
+      `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}"
+`
+    );
+  }
+  if (ast.imports.length) {
+    genImports(ast.imports, context);
+    newline();
+  }
+  genHoists(ast.hoists, context);
+  newline();
+  if (!inline) {
+    push(`export `);
+  }
+}
+function genAssets(assets, type, { helper, push, newline, isTS }) {
+  const resolver = helper(
+    type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE
+  );
+  for (let i = 0; i < assets.length; i++) {
+    let id = assets[i];
+    const maybeSelfReference = id.endsWith("__self");
+    if (maybeSelfReference) {
+      id = id.slice(0, -6);
+    }
+    push(
+      `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`
+    );
+    if (i < assets.length - 1) {
+      newline();
+    }
+  }
+}
+function genHoists(hoists, context) {
+  if (!hoists.length) {
+    return;
+  }
+  context.pure = true;
+  const { push, newline, helper, scopeId, mode } = context;
+  const genScopeId = scopeId != null && mode !== "function";
+  newline();
+  if (genScopeId) {
+    push(
+      `const _withScopeId = n => (${helper(
+        PUSH_SCOPE_ID
+      )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)`
+    );
+    newline();
+  }
+  for (let i = 0; i < hoists.length; i++) {
+    const exp = hoists[i];
+    if (exp) {
+      const needScopeIdWrapper = genScopeId && exp.type === 13;
+      push(
+        `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}`
+      );
+      genNode(exp, context);
+      if (needScopeIdWrapper) {
+        push(`)`);
+      }
+      newline();
+    }
+  }
+  context.pure = false;
+}
+function genImports(importsOptions, context) {
+  if (!importsOptions.length) {
+    return;
+  }
+  importsOptions.forEach((imports) => {
+    context.push(`import `);
+    genNode(imports.exp, context);
+    context.push(` from '${imports.path}'`);
+    context.newline();
+  });
+}
+function isText(n) {
+  return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;
+}
+function genNodeListAsArray(nodes, context) {
+  const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n));
+  context.push(`[`);
+  multilines && context.indent();
+  genNodeList(nodes, context, multilines);
+  multilines && context.deindent();
+  context.push(`]`);
+}
+function genNodeList(nodes, context, multilines = false, comma = true) {
+  const { push, newline } = context;
+  for (let i = 0; i < nodes.length; i++) {
+    const node = nodes[i];
+    if (shared.isString(node)) {
+      push(node);
+    } else if (shared.isArray(node)) {
+      genNodeListAsArray(node, context);
+    } else {
+      genNode(node, context);
+    }
+    if (i < nodes.length - 1) {
+      if (multilines) {
+        comma && push(",");
+        newline();
+      } else {
+        comma && push(", ");
+      }
+    }
+  }
+}
+function genNode(node, context) {
+  if (shared.isString(node)) {
+    context.push(node);
+    return;
+  }
+  if (shared.isSymbol(node)) {
+    context.push(context.helper(node));
+    return;
+  }
+  switch (node.type) {
+    case 1:
+    case 9:
+    case 11:
+      assert(
+        node.codegenNode != null,
+        `Codegen node is missing for element/if/for node. Apply appropriate transforms first.`
+      );
+      genNode(node.codegenNode, context);
+      break;
+    case 2:
+      genText(node, context);
+      break;
+    case 4:
+      genExpression(node, context);
+      break;
+    case 5:
+      genInterpolation(node, context);
+      break;
+    case 12:
+      genNode(node.codegenNode, context);
+      break;
+    case 8:
+      genCompoundExpression(node, context);
+      break;
+    case 3:
+      genComment(node, context);
+      break;
+    case 13:
+      genVNodeCall(node, context);
+      break;
+    case 14:
+      genCallExpression(node, context);
+      break;
+    case 15:
+      genObjectExpression(node, context);
+      break;
+    case 17:
+      genArrayExpression(node, context);
+      break;
+    case 18:
+      genFunctionExpression(node, context);
+      break;
+    case 19:
+      genConditionalExpression(node, context);
+      break;
+    case 20:
+      genCacheExpression(node, context);
+      break;
+    case 21:
+      genNodeList(node.body, context, true, false);
+      break;
+    case 22:
+      genTemplateLiteral(node, context);
+      break;
+    case 23:
+      genIfStatement(node, context);
+      break;
+    case 24:
+      genAssignmentExpression(node, context);
+      break;
+    case 25:
+      genSequenceExpression(node, context);
+      break;
+    case 26:
+      genReturnStatement(node, context);
+      break;
+    case 10:
+      break;
+    default:
+      {
+        assert(false, `unhandled codegen node type: ${node.type}`);
+        const exhaustiveCheck = node;
+        return exhaustiveCheck;
+      }
+  }
+}
+function genText(node, context) {
+  context.push(JSON.stringify(node.content), node);
+}
+function genExpression(node, context) {
+  const { content, isStatic } = node;
+  context.push(isStatic ? JSON.stringify(content) : content, node);
+}
+function genInterpolation(node, context) {
+  const { push, helper, pure } = context;
+  if (pure)
+    push(PURE_ANNOTATION);
+  push(`${helper(TO_DISPLAY_STRING)}(`);
+  genNode(node.content, context);
+  push(`)`);
+}
+function genCompoundExpression(node, context) {
+  for (let i = 0; i < node.children.length; i++) {
+    const child = node.children[i];
+    if (shared.isString(child)) {
+      context.push(child);
+    } else {
+      genNode(child, context);
+    }
+  }
+}
+function genExpressionAsPropertyKey(node, context) {
+  const { push } = context;
+  if (node.type === 8) {
+    push(`[`);
+    genCompoundExpression(node, context);
+    push(`]`);
+  } else if (node.isStatic) {
+    const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);
+    push(text, node);
+  } else {
+    push(`[${node.content}]`, node);
+  }
+}
+function genComment(node, context) {
+  const { push, helper, pure } = context;
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);
+}
+function genVNodeCall(node, context) {
+  const { push, helper, pure } = context;
+  const {
+    tag,
+    props,
+    children,
+    patchFlag,
+    dynamicProps,
+    directives,
+    isBlock,
+    disableTracking,
+    isComponent
+  } = node;
+  if (directives) {
+    push(helper(WITH_DIRECTIVES) + `(`);
+  }
+  if (isBlock) {
+    push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
+  }
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);
+  push(helper(callHelper) + `(`, node);
+  genNodeList(
+    genNullableArgs([tag, props, children, patchFlag, dynamicProps]),
+    context
+  );
+  push(`)`);
+  if (isBlock) {
+    push(`)`);
+  }
+  if (directives) {
+    push(`, `);
+    genNode(directives, context);
+    push(`)`);
+  }
+}
+function genNullableArgs(args) {
+  let i = args.length;
+  while (i--) {
+    if (args[i] != null)
+      break;
+  }
+  return args.slice(0, i + 1).map((arg) => arg || `null`);
+}
+function genCallExpression(node, context) {
+  const { push, helper, pure } = context;
+  const callee = shared.isString(node.callee) ? node.callee : helper(node.callee);
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  push(callee + `(`, node);
+  genNodeList(node.arguments, context);
+  push(`)`);
+}
+function genObjectExpression(node, context) {
+  const { push, indent, deindent, newline } = context;
+  const { properties } = node;
+  if (!properties.length) {
+    push(`{}`, node);
+    return;
+  }
+  const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4);
+  push(multilines ? `{` : `{ `);
+  multilines && indent();
+  for (let i = 0; i < properties.length; i++) {
+    const { key, value } = properties[i];
+    genExpressionAsPropertyKey(key, context);
+    push(`: `);
+    genNode(value, context);
+    if (i < properties.length - 1) {
+      push(`,`);
+      newline();
+    }
+  }
+  multilines && deindent();
+  push(multilines ? `}` : ` }`);
+}
+function genArrayExpression(node, context) {
+  genNodeListAsArray(node.elements, context);
+}
+function genFunctionExpression(node, context) {
+  const { push, indent, deindent } = context;
+  const { params, returns, body, newline, isSlot } = node;
+  if (isSlot) {
+    push(`_${helperNameMap[WITH_CTX]}(`);
+  }
+  push(`(`, node);
+  if (shared.isArray(params)) {
+    genNodeList(params, context);
+  } else if (params) {
+    genNode(params, context);
+  }
+  push(`) => `);
+  if (newline || body) {
+    push(`{`);
+    indent();
+  }
+  if (returns) {
+    if (newline) {
+      push(`return `);
+    }
+    if (shared.isArray(returns)) {
+      genNodeListAsArray(returns, context);
+    } else {
+      genNode(returns, context);
+    }
+  } else if (body) {
+    genNode(body, context);
+  }
+  if (newline || body) {
+    deindent();
+    push(`}`);
+  }
+  if (isSlot) {
+    if (node.isNonScopedSlot) {
+      push(`, undefined, true`);
+    }
+    push(`)`);
+  }
+}
+function genConditionalExpression(node, context) {
+  const { test, consequent, alternate, newline: needNewline } = node;
+  const { push, indent, deindent, newline } = context;
+  if (test.type === 4) {
+    const needsParens = !isSimpleIdentifier(test.content);
+    needsParens && push(`(`);
+    genExpression(test, context);
+    needsParens && push(`)`);
+  } else {
+    push(`(`);
+    genNode(test, context);
+    push(`)`);
+  }
+  needNewline && indent();
+  context.indentLevel++;
+  needNewline || push(` `);
+  push(`? `);
+  genNode(consequent, context);
+  context.indentLevel--;
+  needNewline && newline();
+  needNewline || push(` `);
+  push(`: `);
+  const isNested = alternate.type === 19;
+  if (!isNested) {
+    context.indentLevel++;
+  }
+  genNode(alternate, context);
+  if (!isNested) {
+    context.indentLevel--;
+  }
+  needNewline && deindent(
+    true
+    /* without newline */
+  );
+}
+function genCacheExpression(node, context) {
+  const { push, helper, indent, deindent, newline } = context;
+  push(`_cache[${node.index}] || (`);
+  if (node.isVNode) {
+    indent();
+    push(`${helper(SET_BLOCK_TRACKING)}(-1),`);
+    newline();
+  }
+  push(`_cache[${node.index}] = `);
+  genNode(node.value, context);
+  if (node.isVNode) {
+    push(`,`);
+    newline();
+    push(`${helper(SET_BLOCK_TRACKING)}(1),`);
+    newline();
+    push(`_cache[${node.index}]`);
+    deindent();
+  }
+  push(`)`);
+}
+function genTemplateLiteral(node, context) {
+  const { push, indent, deindent } = context;
+  push("`");
+  const l = node.elements.length;
+  const multilines = l > 3;
+  for (let i = 0; i < l; i++) {
+    const e = node.elements[i];
+    if (shared.isString(e)) {
+      push(e.replace(/(`|\$|\\)/g, "\\$1"));
+    } else {
+      push("${");
+      if (multilines)
+        indent();
+      genNode(e, context);
+      if (multilines)
+        deindent();
+      push("}");
+    }
+  }
+  push("`");
+}
+function genIfStatement(node, context) {
+  const { push, indent, deindent } = context;
+  const { test, consequent, alternate } = node;
+  push(`if (`);
+  genNode(test, context);
+  push(`) {`);
+  indent();
+  genNode(consequent, context);
+  deindent();
+  push(`}`);
+  if (alternate) {
+    push(` else `);
+    if (alternate.type === 23) {
+      genIfStatement(alternate, context);
+    } else {
+      push(`{`);
+      indent();
+      genNode(alternate, context);
+      deindent();
+      push(`}`);
+    }
+  }
+}
+function genAssignmentExpression(node, context) {
+  genNode(node.left, context);
+  context.push(` = `);
+  genNode(node.right, context);
+}
+function genSequenceExpression(node, context) {
+  context.push(`(`);
+  genNodeList(node.expressions, context);
+  context.push(`)`);
+}
+function genReturnStatement({ returns }, context) {
+  context.push(`return `);
+  if (shared.isArray(returns)) {
+    genNodeListAsArray(returns, context);
+  } else {
+    genNode(returns, context);
+  }
+}
+
+function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) {
+  const rootExp = root.type === "Program" && root.body[0].type === "ExpressionStatement" && root.body[0].expression;
+  estreeWalker.walk(root, {
+    enter(node, parent) {
+      parent && parentStack.push(parent);
+      if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) {
+        return this.skip();
+      }
+      if (node.type === "Identifier") {
+        const isLocal = !!knownIds[node.name];
+        const isRefed = isReferencedIdentifier(node, parent, parentStack);
+        if (includeAll || isRefed && !isLocal) {
+          onIdentifier(node, parent, parentStack, isRefed, isLocal);
+        }
+      } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") {
+        node.inPattern = true;
+      } else if (isFunctionType(node)) {
+        walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds));
+      } else if (node.type === "BlockStatement") {
+        walkBlockDeclarations(
+          node,
+          (id) => markScopeIdentifier(node, id, knownIds)
+        );
+      }
+    },
+    leave(node, parent) {
+      parent && parentStack.pop();
+      if (node !== rootExp && node.scopeIds) {
+        for (const id of node.scopeIds) {
+          knownIds[id]--;
+          if (knownIds[id] === 0) {
+            delete knownIds[id];
+          }
+        }
+      }
+    }
+  });
+}
+function isReferencedIdentifier(id, parent, parentStack) {
+  if (!parent) {
+    return true;
+  }
+  if (id.name === "arguments") {
+    return false;
+  }
+  if (isReferenced(id, parent)) {
+    return true;
+  }
+  switch (parent.type) {
+    case "AssignmentExpression":
+    case "AssignmentPattern":
+      return true;
+    case "ObjectPattern":
+    case "ArrayPattern":
+      return isInDestructureAssignment(parent, parentStack);
+  }
+  return false;
+}
+function isInDestructureAssignment(parent, parentStack) {
+  if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) {
+    let i = parentStack.length;
+    while (i--) {
+      const p = parentStack[i];
+      if (p.type === "AssignmentExpression") {
+        return true;
+      } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) {
+        break;
+      }
+    }
+  }
+  return false;
+}
+function walkFunctionParams(node, onIdent) {
+  for (const p of node.params) {
+    for (const id of extractIdentifiers(p)) {
+      onIdent(id);
+    }
+  }
+}
+function walkBlockDeclarations(block, onIdent) {
+  for (const stmt of block.body) {
+    if (stmt.type === "VariableDeclaration") {
+      if (stmt.declare)
+        continue;
+      for (const decl of stmt.declarations) {
+        for (const id of extractIdentifiers(decl.id)) {
+          onIdent(id);
+        }
+      }
+    } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") {
+      if (stmt.declare || !stmt.id)
+        continue;
+      onIdent(stmt.id);
+    }
+  }
+}
+function extractIdentifiers(param, nodes = []) {
+  switch (param.type) {
+    case "Identifier":
+      nodes.push(param);
+      break;
+    case "MemberExpression":
+      let object = param;
+      while (object.type === "MemberExpression") {
+        object = object.object;
+      }
+      nodes.push(object);
+      break;
+    case "ObjectPattern":
+      for (const prop of param.properties) {
+        if (prop.type === "RestElement") {
+          extractIdentifiers(prop.argument, nodes);
+        } else {
+          extractIdentifiers(prop.value, nodes);
+        }
+      }
+      break;
+    case "ArrayPattern":
+      param.elements.forEach((element) => {
+        if (element)
+          extractIdentifiers(element, nodes);
+      });
+      break;
+    case "RestElement":
+      extractIdentifiers(param.argument, nodes);
+      break;
+    case "AssignmentPattern":
+      extractIdentifiers(param.left, nodes);
+      break;
+  }
+  return nodes;
+}
+function markScopeIdentifier(node, child, knownIds) {
+  const { name } = child;
+  if (node.scopeIds && node.scopeIds.has(name)) {
+    return;
+  }
+  if (name in knownIds) {
+    knownIds[name]++;
+  } else {
+    knownIds[name] = 1;
+  }
+  (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name);
+}
+const isFunctionType = (node) => {
+  return /Function(?:Expression|Declaration)$|Method$/.test(node.type);
+};
+const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed;
+const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;
+function isReferenced(node, parent, grandparent) {
+  switch (parent.type) {
+    case "MemberExpression":
+    case "OptionalMemberExpression":
+      if (parent.property === node) {
+        return !!parent.computed;
+      }
+      return parent.object === node;
+    case "JSXMemberExpression":
+      return parent.object === node;
+    case "VariableDeclarator":
+      return parent.init === node;
+    case "ArrowFunctionExpression":
+      return parent.body === node;
+    case "PrivateName":
+      return false;
+    case "ClassMethod":
+    case "ClassPrivateMethod":
+    case "ObjectMethod":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return false;
+    case "ObjectProperty":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return !grandparent || grandparent.type !== "ObjectPattern";
+    case "ClassProperty":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return true;
+    case "ClassPrivateProperty":
+      return parent.key !== node;
+    case "ClassDeclaration":
+    case "ClassExpression":
+      return parent.superClass === node;
+    case "AssignmentExpression":
+      return parent.right === node;
+    case "AssignmentPattern":
+      return parent.right === node;
+    case "LabeledStatement":
+      return false;
+    case "CatchClause":
+      return false;
+    case "RestElement":
+      return false;
+    case "BreakStatement":
+    case "ContinueStatement":
+      return false;
+    case "FunctionDeclaration":
+    case "FunctionExpression":
+      return false;
+    case "ExportNamespaceSpecifier":
+    case "ExportDefaultSpecifier":
+      return false;
+    case "ExportSpecifier":
+      if (grandparent == null ? void 0 : grandparent.source) {
+        return false;
+      }
+      return parent.local === node;
+    case "ImportDefaultSpecifier":
+    case "ImportNamespaceSpecifier":
+    case "ImportSpecifier":
+      return false;
+    case "ImportAttribute":
+      return false;
+    case "JSXAttribute":
+      return false;
+    case "ObjectPattern":
+    case "ArrayPattern":
+      return false;
+    case "MetaProperty":
+      return false;
+    case "ObjectTypeProperty":
+      return parent.key !== node;
+    case "TSEnumMember":
+      return parent.id !== node;
+    case "TSPropertySignature":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return true;
+  }
+  return true;
+}
+const TS_NODE_TYPES = [
+  "TSAsExpression",
+  // foo as number
+  "TSTypeAssertion",
+  // (<number>foo)
+  "TSNonNullExpression",
+  // foo!
+  "TSInstantiationExpression",
+  // foo<string>
+  "TSSatisfiesExpression"
+  // foo satisfies T
+];
+
+const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this");
+const constantBailRE = /\w\s*\(|\.[^\d]/;
+const transformExpression = (node, context) => {
+  if (node.type === 5) {
+    node.content = processExpression(
+      node.content,
+      context
+    );
+  } else if (node.type === 1) {
+    for (let i = 0; i < node.props.length; i++) {
+      const dir = node.props[i];
+      if (dir.type === 7 && dir.name !== "for") {
+        const exp = dir.exp;
+        const arg = dir.arg;
+        if (exp && exp.type === 4 && !(dir.name === "on" && arg)) {
+          dir.exp = processExpression(
+            exp,
+            context,
+            // slot args must be processed as function params
+            dir.name === "slot"
+          );
+        }
+        if (arg && arg.type === 4 && !arg.isStatic) {
+          dir.arg = processExpression(arg, context);
+        }
+      }
+    }
+  }
+};
+function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {
+  if (!context.prefixIdentifiers || !node.content.trim()) {
+    return node;
+  }
+  const { inline, bindingMetadata } = context;
+  const rewriteIdentifier = (raw, parent, id) => {
+    const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw];
+    if (inline) {
+      const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id;
+      const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id;
+      const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack);
+      if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) {
+        return raw;
+      } else if (type === "setup-ref") {
+        return `${raw}.value`;
+      } else if (type === "setup-maybe-ref") {
+        return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`;
+      } else if (type === "setup-let") {
+        if (isAssignmentLVal) {
+          const { right: rVal, operator } = parent;
+          const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1);
+          const rExpString = stringifyExpression(
+            processExpression(
+              createSimpleExpression(rExp, false),
+              context,
+              false,
+              false,
+              knownIds
+            )
+          );
+          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore
+` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`;
+        } else if (isUpdateArg) {
+          id.start = parent.start;
+          id.end = parent.end;
+          const { prefix: isPrefix, operator } = parent;
+          const prefix = isPrefix ? operator : ``;
+          const postfix = isPrefix ? `` : operator;
+          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore
+` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`;
+        } else if (isDestructureAssignment) {
+          return raw;
+        } else {
+          return `${context.helperString(UNREF)}(${raw})`;
+        }
+      } else if (type === "props") {
+        return shared.genPropsAccessExp(raw);
+      } else if (type === "props-aliased") {
+        return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]);
+      }
+    } else {
+      if (type && type.startsWith("setup") || type === "literal-const") {
+        return `$setup.${raw}`;
+      } else if (type === "props-aliased") {
+        return `$props['${bindingMetadata.__propsAliases[raw]}']`;
+      } else if (type) {
+        return `$${type}.${raw}`;
+      }
+    }
+    return `_ctx.${raw}`;
+  };
+  const rawExp = node.content;
+  const bailConstant = constantBailRE.test(rawExp);
+  if (isSimpleIdentifier(rawExp)) {
+    const isScopeVarReference = context.identifiers[rawExp];
+    const isAllowedGlobal = shared.isGloballyWhitelisted(rawExp);
+    const isLiteral = isLiteralWhitelisted(rawExp);
+    if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) {
+      if (isConst(bindingMetadata[node.content])) {
+        node.constType = 1;
+      }
+      node.content = rewriteIdentifier(rawExp);
+    } else if (!isScopeVarReference) {
+      if (isLiteral) {
+        node.constType = 3;
+      } else {
+        node.constType = 2;
+      }
+    }
+    return node;
+  }
+  let ast;
+  const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`;
+  try {
+    ast = parser.parse(source, {
+      plugins: context.expressionPlugins
+    }).program;
+  } catch (e) {
+    context.onError(
+      createCompilerError(
+        45,
+        node.loc,
+        void 0,
+        e.message
+      )
+    );
+    return node;
+  }
+  const ids = [];
+  const parentStack = [];
+  const knownIds = Object.create(context.identifiers);
+  walkIdentifiers(
+    ast,
+    (node2, parent, _, isReferenced, isLocal) => {
+      if (isStaticPropertyKey(node2, parent)) {
+        return;
+      }
+      if (node2.name.startsWith("_filter_")) {
+        return;
+      }
+      const needPrefix = isReferenced && canPrefix(node2);
+      if (needPrefix && !isLocal) {
+        if (isStaticProperty(parent) && parent.shorthand) {
+          node2.prefix = `${node2.name}: `;
+        }
+        node2.name = rewriteIdentifier(node2.name, parent, node2);
+        ids.push(node2);
+      } else {
+        if (!(needPrefix && isLocal) && !bailConstant) {
+          node2.isConstant = true;
+        }
+        ids.push(node2);
+      }
+    },
+    true,
+    // invoke on ALL identifiers
+    parentStack,
+    knownIds
+  );
+  const children = [];
+  ids.sort((a, b) => a.start - b.start);
+  ids.forEach((id, i) => {
+    const start = id.start - 1;
+    const end = id.end - 1;
+    const last = ids[i - 1];
+    const leadingText = rawExp.slice(last ? last.end - 1 : 0, start);
+    if (leadingText.length || id.prefix) {
+      children.push(leadingText + (id.prefix || ``));
+    }
+    const source2 = rawExp.slice(start, end);
+    children.push(
+      createSimpleExpression(
+        id.name,
+        false,
+        {
+          source: source2,
+          start: advancePositionWithClone(node.loc.start, source2, start),
+          end: advancePositionWithClone(node.loc.start, source2, end)
+        },
+        id.isConstant ? 3 : 0
+      )
+    );
+    if (i === ids.length - 1 && end < rawExp.length) {
+      children.push(rawExp.slice(end));
+    }
+  });
+  let ret;
+  if (children.length) {
+    ret = createCompoundExpression(children, node.loc);
+  } else {
+    ret = node;
+    ret.constType = bailConstant ? 0 : 3;
+  }
+  ret.identifiers = Object.keys(knownIds);
+  return ret;
+}
+function canPrefix(id) {
+  if (shared.isGloballyWhitelisted(id.name)) {
+    return false;
+  }
+  if (id.name === "require") {
+    return false;
+  }
+  return true;
+}
+function stringifyExpression(exp) {
+  if (shared.isString(exp)) {
+    return exp;
+  } else if (exp.type === 4) {
+    return exp.content;
+  } else {
+    return exp.children.map(stringifyExpression).join("");
+  }
+}
+function isConst(type) {
+  return type === "setup-const" || type === "literal-const";
+}
+
+const transformIf = createStructuralDirectiveTransform(
+  /^(if|else|else-if)$/,
+  (node, dir, context) => {
+    return processIf(node, dir, context, (ifNode, branch, isRoot) => {
+      const siblings = context.parent.children;
+      let i = siblings.indexOf(ifNode);
+      let key = 0;
+      while (i-- >= 0) {
+        const sibling = siblings[i];
+        if (sibling && sibling.type === 9) {
+          key += sibling.branches.length;
+        }
+      }
+      return () => {
+        if (isRoot) {
+          ifNode.codegenNode = createCodegenNodeForBranch(
+            branch,
+            key,
+            context
+          );
+        } else {
+          const parentCondition = getParentCondition(ifNode.codegenNode);
+          parentCondition.alternate = createCodegenNodeForBranch(
+            branch,
+            key + ifNode.branches.length - 1,
+            context
+          );
+        }
+      };
+    });
+  }
+);
+function processIf(node, dir, context, processCodegen) {
+  if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) {
+    const loc = dir.exp ? dir.exp.loc : node.loc;
+    context.onError(
+      createCompilerError(28, dir.loc)
+    );
+    dir.exp = createSimpleExpression(`true`, false, loc);
+  }
+  if (context.prefixIdentifiers && dir.exp) {
+    dir.exp = processExpression(dir.exp, context);
+  }
+  if (dir.name === "if") {
+    const branch = createIfBranch(node, dir);
+    const ifNode = {
+      type: 9,
+      loc: node.loc,
+      branches: [branch]
+    };
+    context.replaceNode(ifNode);
+    if (processCodegen) {
+      return processCodegen(ifNode, branch, true);
+    }
+  } else {
+    const siblings = context.parent.children;
+    const comments = [];
+    let i = siblings.indexOf(node);
+    while (i-- >= -1) {
+      const sibling = siblings[i];
+      if (sibling && sibling.type === 3) {
+        context.removeNode(sibling);
+        comments.unshift(sibling);
+        continue;
+      }
+      if (sibling && sibling.type === 2 && !sibling.content.trim().length) {
+        context.removeNode(sibling);
+        continue;
+      }
+      if (sibling && sibling.type === 9) {
+        if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
+          context.onError(
+            createCompilerError(30, node.loc)
+          );
+        }
+        context.removeNode();
+        const branch = createIfBranch(node, dir);
+        if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition>
+        !(context.parent && context.parent.type === 1 && isBuiltInType(context.parent.tag, "transition"))) {
+          branch.children = [...comments, ...branch.children];
+        }
+        {
+          const key = branch.userKey;
+          if (key) {
+            sibling.branches.forEach(({ userKey }) => {
+              if (isSameKey(userKey, key)) {
+                context.onError(
+                  createCompilerError(
+                    29,
+                    branch.userKey.loc
+                  )
+                );
+              }
+            });
+          }
+        }
+        sibling.branches.push(branch);
+        const onExit = processCodegen && processCodegen(sibling, branch, false);
+        traverseNode(branch, context);
+        if (onExit)
+          onExit();
+        context.currentNode = null;
+      } else {
+        context.onError(
+          createCompilerError(30, node.loc)
+        );
+      }
+      break;
+    }
+  }
+}
+function createIfBranch(node, dir) {
+  const isTemplateIf = node.tagType === 3;
+  return {
+    type: 10,
+    loc: node.loc,
+    condition: dir.name === "else" ? void 0 : dir.exp,
+    children: isTemplateIf && !findDir(node, "for") ? node.children : [node],
+    userKey: findProp(node, `key`),
+    isTemplateIf
+  };
+}
+function createCodegenNodeForBranch(branch, keyIndex, context) {
+  if (branch.condition) {
+    return createConditionalExpression(
+      branch.condition,
+      createChildrenCodegenNode(branch, keyIndex, context),
+      // make sure to pass in asBlock: true so that the comment node call
+      // closes the current block.
+      createCallExpression(context.helper(CREATE_COMMENT), [
+        '"v-if"' ,
+        "true"
+      ])
+    );
+  } else {
+    return createChildrenCodegenNode(branch, keyIndex, context);
+  }
+}
+function createChildrenCodegenNode(branch, keyIndex, context) {
+  const { helper } = context;
+  const keyProperty = createObjectProperty(
+    `key`,
+    createSimpleExpression(
+      `${keyIndex}`,
+      false,
+      locStub,
+      2
+    )
+  );
+  const { children } = branch;
+  const firstChild = children[0];
+  const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;
+  if (needFragmentWrapper) {
+    if (children.length === 1 && firstChild.type === 11) {
+      const vnodeCall = firstChild.codegenNode;
+      injectProp(vnodeCall, keyProperty, context);
+      return vnodeCall;
+    } else {
+      let patchFlag = 64;
+      let patchFlagText = shared.PatchFlagNames[64];
+      if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) {
+        patchFlag |= 2048;
+        patchFlagText += `, ${shared.PatchFlagNames[2048]}`;
+      }
+      return createVNodeCall(
+        context,
+        helper(FRAGMENT),
+        createObjectExpression([keyProperty]),
+        children,
+        patchFlag + (` /* ${patchFlagText} */` ),
+        void 0,
+        void 0,
+        true,
+        false,
+        false,
+        branch.loc
+      );
+    }
+  } else {
+    const ret = firstChild.codegenNode;
+    const vnodeCall = getMemoedVNodeCall(ret);
+    if (vnodeCall.type === 13) {
+      convertToBlock(vnodeCall, context);
+    }
+    injectProp(vnodeCall, keyProperty, context);
+    return ret;
+  }
+}
+function isSameKey(a, b) {
+  if (!a || a.type !== b.type) {
+    return false;
+  }
+  if (a.type === 6) {
+    if (a.value.content !== b.value.content) {
+      return false;
+    }
+  } else {
+    const exp = a.exp;
+    const branchExp = b.exp;
+    if (exp.type !== branchExp.type) {
+      return false;
+    }
+    if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {
+      return false;
+    }
+  }
+  return true;
+}
+function getParentCondition(node) {
+  while (true) {
+    if (node.type === 19) {
+      if (node.alternate.type === 19) {
+        node = node.alternate;
+      } else {
+        return node;
+      }
+    } else if (node.type === 20) {
+      node = node.value;
+    }
+  }
+}
+
+const transformFor = createStructuralDirectiveTransform(
+  "for",
+  (node, dir, context) => {
+    const { helper, removeHelper } = context;
+    return processFor(node, dir, context, (forNode) => {
+      const renderExp = createCallExpression(helper(RENDER_LIST), [
+        forNode.source
+      ]);
+      const isTemplate = isTemplateNode(node);
+      const memo = findDir(node, "memo");
+      const keyProp = findProp(node, `key`);
+      const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);
+      const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;
+      if (isTemplate) {
+        if (memo) {
+          memo.exp = processExpression(
+            memo.exp,
+            context
+          );
+        }
+        if (keyProperty && keyProp.type !== 6) {
+          keyProperty.value = processExpression(
+            keyProperty.value,
+            context
+          );
+        }
+      }
+      const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
+      const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
+      forNode.codegenNode = createVNodeCall(
+        context,
+        helper(FRAGMENT),
+        void 0,
+        renderExp,
+        fragmentFlag + (` /* ${shared.PatchFlagNames[fragmentFlag]} */` ),
+        void 0,
+        void 0,
+        true,
+        !isStableFragment,
+        false,
+        node.loc
+      );
+      return () => {
+        let childBlock;
+        const { children } = forNode;
+        if (isTemplate) {
+          node.children.some((c) => {
+            if (c.type === 1) {
+              const key = findProp(c, "key");
+              if (key) {
+                context.onError(
+                  createCompilerError(
+                    33,
+                    key.loc
+                  )
+                );
+                return true;
+              }
+            }
+          });
+        }
+        const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;
+        const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;
+        if (slotOutlet) {
+          childBlock = slotOutlet.codegenNode;
+          if (isTemplate && keyProperty) {
+            injectProp(childBlock, keyProperty, context);
+          }
+        } else if (needFragmentWrapper) {
+          childBlock = createVNodeCall(
+            context,
+            helper(FRAGMENT),
+            keyProperty ? createObjectExpression([keyProperty]) : void 0,
+            node.children,
+            64 + (` /* ${shared.PatchFlagNames[64]} */` ),
+            void 0,
+            void 0,
+            true,
+            void 0,
+            false
+            /* isComponent */
+          );
+        } else {
+          childBlock = children[0].codegenNode;
+          if (isTemplate && keyProperty) {
+            injectProp(childBlock, keyProperty, context);
+          }
+          if (childBlock.isBlock !== !isStableFragment) {
+            if (childBlock.isBlock) {
+              removeHelper(OPEN_BLOCK);
+              removeHelper(
+                getVNodeBlockHelper(context.inSSR, childBlock.isComponent)
+              );
+            } else {
+              removeHelper(
+                getVNodeHelper(context.inSSR, childBlock.isComponent)
+              );
+            }
+          }
+          childBlock.isBlock = !isStableFragment;
+          if (childBlock.isBlock) {
+            helper(OPEN_BLOCK);
+            helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+          } else {
+            helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+          }
+        }
+        if (memo) {
+          const loop = createFunctionExpression(
+            createForLoopParams(forNode.parseResult, [
+              createSimpleExpression(`_cached`)
+            ])
+          );
+          loop.body = createBlockStatement([
+            createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
+            createCompoundExpression([
+              `if (_cached`,
+              ...keyExp ? [` && _cached.key === `, keyExp] : [],
+              ` && ${context.helperString(
+                IS_MEMO_SAME
+              )}(_cached, _memo)) return _cached`
+            ]),
+            createCompoundExpression([`const _item = `, childBlock]),
+            createSimpleExpression(`_item.memo = _memo`),
+            createSimpleExpression(`return _item`)
+          ]);
+          renderExp.arguments.push(
+            loop,
+            createSimpleExpression(`_cache`),
+            createSimpleExpression(String(context.cached++))
+          );
+        } else {
+          renderExp.arguments.push(
+            createFunctionExpression(
+              createForLoopParams(forNode.parseResult),
+              childBlock,
+              true
+              /* force newline */
+            )
+          );
+        }
+      };
+    });
+  }
+);
+function processFor(node, dir, context, processCodegen) {
+  if (!dir.exp) {
+    context.onError(
+      createCompilerError(31, dir.loc)
+    );
+    return;
+  }
+  const parseResult = parseForExpression(
+    // can only be simple expression because vFor transform is applied
+    // before expression transform.
+    dir.exp,
+    context
+  );
+  if (!parseResult) {
+    context.onError(
+      createCompilerError(32, dir.loc)
+    );
+    return;
+  }
+  const { addIdentifiers, removeIdentifiers, scopes } = context;
+  const { source, value, key, index } = parseResult;
+  const forNode = {
+    type: 11,
+    loc: dir.loc,
+    source,
+    valueAlias: value,
+    keyAlias: key,
+    objectIndexAlias: index,
+    parseResult,
+    children: isTemplateNode(node) ? node.children : [node]
+  };
+  context.replaceNode(forNode);
+  scopes.vFor++;
+  if (context.prefixIdentifiers) {
+    value && addIdentifiers(value);
+    key && addIdentifiers(key);
+    index && addIdentifiers(index);
+  }
+  const onExit = processCodegen && processCodegen(forNode);
+  return () => {
+    scopes.vFor--;
+    if (context.prefixIdentifiers) {
+      value && removeIdentifiers(value);
+      key && removeIdentifiers(key);
+      index && removeIdentifiers(index);
+    }
+    if (onExit)
+      onExit();
+  };
+}
+const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+const stripParensRE = /^\(|\)$/g;
+function parseForExpression(input, context) {
+  const loc = input.loc;
+  const exp = input.content;
+  const inMatch = exp.match(forAliasRE);
+  if (!inMatch)
+    return;
+  const [, LHS, RHS] = inMatch;
+  const result = {
+    source: createAliasExpression(
+      loc,
+      RHS.trim(),
+      exp.indexOf(RHS, LHS.length)
+    ),
+    value: void 0,
+    key: void 0,
+    index: void 0
+  };
+  if (context.prefixIdentifiers) {
+    result.source = processExpression(
+      result.source,
+      context
+    );
+  }
+  let valueContent = LHS.trim().replace(stripParensRE, "").trim();
+  const trimmedOffset = LHS.indexOf(valueContent);
+  const iteratorMatch = valueContent.match(forIteratorRE);
+  if (iteratorMatch) {
+    valueContent = valueContent.replace(forIteratorRE, "").trim();
+    const keyContent = iteratorMatch[1].trim();
+    let keyOffset;
+    if (keyContent) {
+      keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
+      result.key = createAliasExpression(loc, keyContent, keyOffset);
+      if (context.prefixIdentifiers) {
+        result.key = processExpression(result.key, context, true);
+      }
+    }
+    if (iteratorMatch[2]) {
+      const indexContent = iteratorMatch[2].trim();
+      if (indexContent) {
+        result.index = createAliasExpression(
+          loc,
+          indexContent,
+          exp.indexOf(
+            indexContent,
+            result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length
+          )
+        );
+        if (context.prefixIdentifiers) {
+          result.index = processExpression(result.index, context, true);
+        }
+      }
+    }
+  }
+  if (valueContent) {
+    result.value = createAliasExpression(loc, valueContent, trimmedOffset);
+    if (context.prefixIdentifiers) {
+      result.value = processExpression(result.value, context, true);
+    }
+  }
+  return result;
+}
+function createAliasExpression(range, content, offset) {
+  return createSimpleExpression(
+    content,
+    false,
+    getInnerRange(range, offset, content.length)
+  );
+}
+function createForLoopParams({ value, key, index }, memoArgs = []) {
+  return createParamsList([value, key, index, ...memoArgs]);
+}
+function createParamsList(args) {
+  let i = args.length;
+  while (i--) {
+    if (args[i])
+      break;
+  }
+  return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));
+}
+
+const defaultFallback = createSimpleExpression(`undefined`, false);
+const trackSlotScopes = (node, context) => {
+  if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {
+    const vSlot = findDir(node, "slot");
+    if (vSlot) {
+      const slotProps = vSlot.exp;
+      if (context.prefixIdentifiers) {
+        slotProps && context.addIdentifiers(slotProps);
+      }
+      context.scopes.vSlot++;
+      return () => {
+        if (context.prefixIdentifiers) {
+          slotProps && context.removeIdentifiers(slotProps);
+        }
+        context.scopes.vSlot--;
+      };
+    }
+  }
+};
+const trackVForSlotScopes = (node, context) => {
+  let vFor;
+  if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) {
+    const result = vFor.parseResult = parseForExpression(
+      vFor.exp,
+      context
+    );
+    if (result) {
+      const { value, key, index } = result;
+      const { addIdentifiers, removeIdentifiers } = context;
+      value && addIdentifiers(value);
+      key && addIdentifiers(key);
+      index && addIdentifiers(index);
+      return () => {
+        value && removeIdentifiers(value);
+        key && removeIdentifiers(key);
+        index && removeIdentifiers(index);
+      };
+    }
+  }
+};
+const buildClientSlotFn = (props, children, loc) => createFunctionExpression(
+  props,
+  children,
+  false,
+  true,
+  children.length ? children[0].loc : loc
+);
+function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
+  context.helper(WITH_CTX);
+  const { children, loc } = node;
+  const slotsProperties = [];
+  const dynamicSlots = [];
+  let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
+  if (!context.ssr && context.prefixIdentifiers) {
+    hasDynamicSlots = hasScopeRef(node, context.identifiers);
+  }
+  const onComponentSlot = findDir(node, "slot", true);
+  if (onComponentSlot) {
+    const { arg, exp } = onComponentSlot;
+    if (arg && !isStaticExp(arg)) {
+      hasDynamicSlots = true;
+    }
+    slotsProperties.push(
+      createObjectProperty(
+        arg || createSimpleExpression("default", true),
+        buildSlotFn(exp, children, loc)
+      )
+    );
+  }
+  let hasTemplateSlots = false;
+  let hasNamedDefaultSlot = false;
+  const implicitDefaultChildren = [];
+  const seenSlotNames = /* @__PURE__ */ new Set();
+  let conditionalBranchIndex = 0;
+  for (let i = 0; i < children.length; i++) {
+    const slotElement = children[i];
+    let slotDir;
+    if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) {
+      if (slotElement.type !== 3) {
+        implicitDefaultChildren.push(slotElement);
+      }
+      continue;
+    }
+    if (onComponentSlot) {
+      context.onError(
+        createCompilerError(37, slotDir.loc)
+      );
+      break;
+    }
+    hasTemplateSlots = true;
+    const { children: slotChildren, loc: slotLoc } = slotElement;
+    const {
+      arg: slotName = createSimpleExpression(`default`, true),
+      exp: slotProps,
+      loc: dirLoc
+    } = slotDir;
+    let staticSlotName;
+    if (isStaticExp(slotName)) {
+      staticSlotName = slotName ? slotName.content : `default`;
+    } else {
+      hasDynamicSlots = true;
+    }
+    const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);
+    let vIf;
+    let vElse;
+    let vFor;
+    if (vIf = findDir(slotElement, "if")) {
+      hasDynamicSlots = true;
+      dynamicSlots.push(
+        createConditionalExpression(
+          vIf.exp,
+          buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),
+          defaultFallback
+        )
+      );
+    } else if (vElse = findDir(
+      slotElement,
+      /^else(-if)?$/,
+      true
+      /* allowEmpty */
+    )) {
+      let j = i;
+      let prev;
+      while (j--) {
+        prev = children[j];
+        if (prev.type !== 3) {
+          break;
+        }
+      }
+      if (prev && isTemplateNode(prev) && findDir(prev, "if")) {
+        children.splice(i, 1);
+        i--;
+        let conditional = dynamicSlots[dynamicSlots.length - 1];
+        while (conditional.alternate.type === 19) {
+          conditional = conditional.alternate;
+        }
+        conditional.alternate = vElse.exp ? createConditionalExpression(
+          vElse.exp,
+          buildDynamicSlot(
+            slotName,
+            slotFunction,
+            conditionalBranchIndex++
+          ),
+          defaultFallback
+        ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);
+      } else {
+        context.onError(
+          createCompilerError(30, vElse.loc)
+        );
+      }
+    } else if (vFor = findDir(slotElement, "for")) {
+      hasDynamicSlots = true;
+      const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
+      if (parseResult) {
+        dynamicSlots.push(
+          createCallExpression(context.helper(RENDER_LIST), [
+            parseResult.source,
+            createFunctionExpression(
+              createForLoopParams(parseResult),
+              buildDynamicSlot(slotName, slotFunction),
+              true
+              /* force newline */
+            )
+          ])
+        );
+      } else {
+        context.onError(
+          createCompilerError(32, vFor.loc)
+        );
+      }
+    } else {
+      if (staticSlotName) {
+        if (seenSlotNames.has(staticSlotName)) {
+          context.onError(
+            createCompilerError(
+              38,
+              dirLoc
+            )
+          );
+          continue;
+        }
+        seenSlotNames.add(staticSlotName);
+        if (staticSlotName === "default") {
+          hasNamedDefaultSlot = true;
+        }
+      }
+      slotsProperties.push(createObjectProperty(slotName, slotFunction));
+    }
+  }
+  if (!onComponentSlot) {
+    const buildDefaultSlotProperty = (props, children2) => {
+      const fn = buildSlotFn(props, children2, loc);
+      if (context.compatConfig) {
+        fn.isNonScopedSlot = true;
+      }
+      return createObjectProperty(`default`, fn);
+    };
+    if (!hasTemplateSlots) {
+      slotsProperties.push(buildDefaultSlotProperty(void 0, children));
+    } else if (implicitDefaultChildren.length && // #3766
+    // with whitespace: 'preserve', whitespaces between slots will end up in
+    // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
+    implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {
+      if (hasNamedDefaultSlot) {
+        context.onError(
+          createCompilerError(
+            39,
+            implicitDefaultChildren[0].loc
+          )
+        );
+      } else {
+        slotsProperties.push(
+          buildDefaultSlotProperty(void 0, implicitDefaultChildren)
+        );
+      }
+    }
+  }
+  const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;
+  let slots = createObjectExpression(
+    slotsProperties.concat(
+      createObjectProperty(
+        `_`,
+        // 2 = compiled but dynamic = can skip normalization, but must run diff
+        // 1 = compiled and static = can skip normalization AND diff as optimized
+        createSimpleExpression(
+          slotFlag + (` /* ${shared.slotFlagsText[slotFlag]} */` ),
+          false
+        )
+      )
+    ),
+    loc
+  );
+  if (dynamicSlots.length) {
+    slots = createCallExpression(context.helper(CREATE_SLOTS), [
+      slots,
+      createArrayExpression(dynamicSlots)
+    ]);
+  }
+  return {
+    slots,
+    hasDynamicSlots
+  };
+}
+function buildDynamicSlot(name, fn, index) {
+  const props = [
+    createObjectProperty(`name`, name),
+    createObjectProperty(`fn`, fn)
+  ];
+  if (index != null) {
+    props.push(
+      createObjectProperty(`key`, createSimpleExpression(String(index), true))
+    );
+  }
+  return createObjectExpression(props);
+}
+function hasForwardedSlots(children) {
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+    switch (child.type) {
+      case 1:
+        if (child.tagType === 2 || hasForwardedSlots(child.children)) {
+          return true;
+        }
+        break;
+      case 9:
+        if (hasForwardedSlots(child.branches))
+          return true;
+        break;
+      case 10:
+      case 11:
+        if (hasForwardedSlots(child.children))
+          return true;
+        break;
+    }
+  }
+  return false;
+}
+function isNonWhitespaceContent(node) {
+  if (node.type !== 2 && node.type !== 12)
+    return true;
+  return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);
+}
+
+const directiveImportMap = /* @__PURE__ */ new WeakMap();
+const transformElement = (node, context) => {
+  return function postTransformElement() {
+    node = context.currentNode;
+    if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {
+      return;
+    }
+    const { tag, props } = node;
+    const isComponent = node.tagType === 1;
+    let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`;
+    const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
+    let vnodeProps;
+    let vnodeChildren;
+    let vnodePatchFlag;
+    let patchFlag = 0;
+    let vnodeDynamicProps;
+    let dynamicPropNames;
+    let vnodeDirectives;
+    let shouldUseBlock = (
+      // dynamic component may resolve to plain elements
+      isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block
+      // updates inside get proper isSVG flag at runtime. (#639, #643)
+      // This is technically web-specific, but splitting the logic out of core
+      // leads to too much unnecessary complexity.
+      (tag === "svg" || tag === "foreignObject")
+    );
+    if (props.length > 0) {
+      const propsBuildResult = buildProps(
+        node,
+        context,
+        void 0,
+        isComponent,
+        isDynamicComponent
+      );
+      vnodeProps = propsBuildResult.props;
+      patchFlag = propsBuildResult.patchFlag;
+      dynamicPropNames = propsBuildResult.dynamicPropNames;
+      const directives = propsBuildResult.directives;
+      vnodeDirectives = directives && directives.length ? createArrayExpression(
+        directives.map((dir) => buildDirectiveArgs(dir, context))
+      ) : void 0;
+      if (propsBuildResult.shouldUseBlock) {
+        shouldUseBlock = true;
+      }
+    }
+    if (node.children.length > 0) {
+      if (vnodeTag === KEEP_ALIVE) {
+        shouldUseBlock = true;
+        patchFlag |= 1024;
+        if (node.children.length > 1) {
+          context.onError(
+            createCompilerError(46, {
+              start: node.children[0].loc.start,
+              end: node.children[node.children.length - 1].loc.end,
+              source: ""
+            })
+          );
+        }
+      }
+      const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling
+      vnodeTag !== TELEPORT && // explained above.
+      vnodeTag !== KEEP_ALIVE;
+      if (shouldBuildAsSlots) {
+        const { slots, hasDynamicSlots } = buildSlots(node, context);
+        vnodeChildren = slots;
+        if (hasDynamicSlots) {
+          patchFlag |= 1024;
+        }
+      } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
+        const child = node.children[0];
+        const type = child.type;
+        const hasDynamicTextChild = type === 5 || type === 8;
+        if (hasDynamicTextChild && getConstantType(child, context) === 0) {
+          patchFlag |= 1;
+        }
+        if (hasDynamicTextChild || type === 2) {
+          vnodeChildren = child;
+        } else {
+          vnodeChildren = node.children;
+        }
+      } else {
+        vnodeChildren = node.children;
+      }
+    }
+    if (patchFlag !== 0) {
+      {
+        if (patchFlag < 0) {
+          vnodePatchFlag = patchFlag + ` /* ${shared.PatchFlagNames[patchFlag]} */`;
+        } else {
+          const flagNames = Object.keys(shared.PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => shared.PatchFlagNames[n]).join(`, `);
+          vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;
+        }
+      }
+      if (dynamicPropNames && dynamicPropNames.length) {
+        vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
+      }
+    }
+    node.codegenNode = createVNodeCall(
+      context,
+      vnodeTag,
+      vnodeProps,
+      vnodeChildren,
+      vnodePatchFlag,
+      vnodeDynamicProps,
+      vnodeDirectives,
+      !!shouldUseBlock,
+      false,
+      isComponent,
+      node.loc
+    );
+  };
+};
+function resolveComponentType(node, context, ssr = false) {
+  let { tag } = node;
+  const isExplicitDynamic = isComponentTag(tag);
+  const isProp = findProp(node, "is");
+  if (isProp) {
+    if (isExplicitDynamic || isCompatEnabled(
+      "COMPILER_IS_ON_ELEMENT",
+      context
+    )) {
+      const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;
+      if (exp) {
+        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+          exp
+        ]);
+      }
+    } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) {
+      tag = isProp.value.content.slice(4);
+    }
+  }
+  const isDir = !isExplicitDynamic && findDir(node, "is");
+  if (isDir && isDir.exp) {
+    {
+      context.onWarn(
+        createCompilerError(52, isDir.loc)
+      );
+    }
+    return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+      isDir.exp
+    ]);
+  }
+  const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
+  if (builtIn) {
+    if (!ssr)
+      context.helper(builtIn);
+    return builtIn;
+  }
+  {
+    const fromSetup = resolveSetupReference(tag, context);
+    if (fromSetup) {
+      return fromSetup;
+    }
+    const dotIndex = tag.indexOf(".");
+    if (dotIndex > 0) {
+      const ns = resolveSetupReference(tag.slice(0, dotIndex), context);
+      if (ns) {
+        return ns + tag.slice(dotIndex);
+      }
+    }
+  }
+  if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) {
+    context.helper(RESOLVE_COMPONENT);
+    context.components.add(tag + `__self`);
+    return toValidAssetId(tag, `component`);
+  }
+  context.helper(RESOLVE_COMPONENT);
+  context.components.add(tag);
+  return toValidAssetId(tag, `component`);
+}
+function resolveSetupReference(name, context) {
+  const bindings = context.bindingMetadata;
+  if (!bindings || bindings.__isScriptSetup === false) {
+    return;
+  }
+  const camelName = shared.camelize(name);
+  const PascalName = shared.capitalize(camelName);
+  const checkType = (type) => {
+    if (bindings[name] === type) {
+      return name;
+    }
+    if (bindings[camelName] === type) {
+      return camelName;
+    }
+    if (bindings[PascalName] === type) {
+      return PascalName;
+    }
+  };
+  const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const");
+  if (fromConst) {
+    return context.inline ? (
+      // in inline mode, const setup bindings (e.g. imports) can be used as-is
+      fromConst
+    ) : `$setup[${JSON.stringify(fromConst)}]`;
+  }
+  const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref");
+  if (fromMaybeRef) {
+    return context.inline ? (
+      // setup scope bindings that may be refs need to be unrefed
+      `${context.helperString(UNREF)}(${fromMaybeRef})`
+    ) : `$setup[${JSON.stringify(fromMaybeRef)}]`;
+  }
+}
+function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {
+  const { tag, loc: elementLoc, children } = node;
+  let properties = [];
+  const mergeArgs = [];
+  const runtimeDirectives = [];
+  const hasChildren = children.length > 0;
+  let shouldUseBlock = false;
+  let patchFlag = 0;
+  let hasRef = false;
+  let hasClassBinding = false;
+  let hasStyleBinding = false;
+  let hasHydrationEventBinding = false;
+  let hasDynamicKeys = false;
+  let hasVnodeHook = false;
+  const dynamicPropNames = [];
+  const pushMergeArg = (arg) => {
+    if (properties.length) {
+      mergeArgs.push(
+        createObjectExpression(dedupeProperties(properties), elementLoc)
+      );
+      properties = [];
+    }
+    if (arg)
+      mergeArgs.push(arg);
+  };
+  const analyzePatchFlag = ({ key, value }) => {
+    if (isStaticExp(key)) {
+      const name = key.content;
+      const isEventHandler = shared.isOn(name);
+      if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click
+      // dedicated fast path.
+      name.toLowerCase() !== "onclick" && // omit v-model handlers
+      name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks
+      !shared.isReservedProp(name)) {
+        hasHydrationEventBinding = true;
+      }
+      if (isEventHandler && shared.isReservedProp(name)) {
+        hasVnodeHook = true;
+      }
+      if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {
+        return;
+      }
+      if (name === "ref") {
+        hasRef = true;
+      } else if (name === "class") {
+        hasClassBinding = true;
+      } else if (name === "style") {
+        hasStyleBinding = true;
+      } else if (name !== "key" && !dynamicPropNames.includes(name)) {
+        dynamicPropNames.push(name);
+      }
+      if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) {
+        dynamicPropNames.push(name);
+      }
+    } else {
+      hasDynamicKeys = true;
+    }
+  };
+  for (let i = 0; i < props.length; i++) {
+    const prop = props[i];
+    if (prop.type === 6) {
+      const { loc, name, value } = prop;
+      let isStatic = true;
+      if (name === "ref") {
+        hasRef = true;
+        if (context.scopes.vFor > 0) {
+          properties.push(
+            createObjectProperty(
+              createSimpleExpression("ref_for", true),
+              createSimpleExpression("true")
+            )
+          );
+        }
+        if (value && context.inline) {
+          const binding = context.bindingMetadata[value.content];
+          if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") {
+            isStatic = false;
+            properties.push(
+              createObjectProperty(
+                createSimpleExpression("ref_key", true),
+                createSimpleExpression(value.content, true, value.loc)
+              )
+            );
+          }
+        }
+      }
+      if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
+        "COMPILER_IS_ON_ELEMENT",
+        context
+      ))) {
+        continue;
+      }
+      properties.push(
+        createObjectProperty(
+          createSimpleExpression(
+            name,
+            true,
+            getInnerRange(loc, 0, name.length)
+          ),
+          createSimpleExpression(
+            value ? value.content : "",
+            isStatic,
+            value ? value.loc : loc
+          )
+        )
+      );
+    } else {
+      const { name, arg, exp, loc } = prop;
+      const isVBind = name === "bind";
+      const isVOn = name === "on";
+      if (name === "slot") {
+        if (!isComponent) {
+          context.onError(
+            createCompilerError(40, loc)
+          );
+        }
+        continue;
+      }
+      if (name === "once" || name === "memo") {
+        continue;
+      }
+      if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled(
+        "COMPILER_IS_ON_ELEMENT",
+        context
+      ))) {
+        continue;
+      }
+      if (isVOn && ssr) {
+        continue;
+      }
+      if (
+        // #938: elements with dynamic keys should be forced into blocks
+        isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked
+        // before children
+        isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update")
+      ) {
+        shouldUseBlock = true;
+      }
+      if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
+        properties.push(
+          createObjectProperty(
+            createSimpleExpression("ref_for", true),
+            createSimpleExpression("true")
+          )
+        );
+      }
+      if (!arg && (isVBind || isVOn)) {
+        hasDynamicKeys = true;
+        if (exp) {
+          if (isVBind) {
+            pushMergeArg();
+            {
+              {
+                const hasOverridableKeys = mergeArgs.some((arg2) => {
+                  if (arg2.type === 15) {
+                    return arg2.properties.some(({ key }) => {
+                      if (key.type !== 4 || !key.isStatic) {
+                        return true;
+                      }
+                      return key.content !== "class" && key.content !== "style" && !shared.isOn(key.content);
+                    });
+                  } else {
+                    return true;
+                  }
+                });
+                if (hasOverridableKeys) {
+                  checkCompatEnabled(
+                    "COMPILER_V_BIND_OBJECT_ORDER",
+                    context,
+                    loc
+                  );
+                }
+              }
+              if (isCompatEnabled(
+                "COMPILER_V_BIND_OBJECT_ORDER",
+                context
+              )) {
+                mergeArgs.unshift(exp);
+                continue;
+              }
+            }
+            mergeArgs.push(exp);
+          } else {
+            pushMergeArg({
+              type: 14,
+              loc,
+              callee: context.helper(TO_HANDLERS),
+              arguments: isComponent ? [exp] : [exp, `true`]
+            });
+          }
+        } else {
+          context.onError(
+            createCompilerError(
+              isVBind ? 34 : 35,
+              loc
+            )
+          );
+        }
+        continue;
+      }
+      const directiveTransform = context.directiveTransforms[name];
+      if (directiveTransform) {
+        const { props: props2, needRuntime } = directiveTransform(prop, node, context);
+        !ssr && props2.forEach(analyzePatchFlag);
+        if (isVOn && arg && !isStaticExp(arg)) {
+          pushMergeArg(createObjectExpression(props2, elementLoc));
+        } else {
+          properties.push(...props2);
+        }
+        if (needRuntime) {
+          runtimeDirectives.push(prop);
+          if (shared.isSymbol(needRuntime)) {
+            directiveImportMap.set(prop, needRuntime);
+          }
+        }
+      } else if (!shared.isBuiltInDirective(name)) {
+        runtimeDirectives.push(prop);
+        if (hasChildren) {
+          shouldUseBlock = true;
+        }
+      }
+    }
+  }
+  let propsExpression = void 0;
+  if (mergeArgs.length) {
+    pushMergeArg();
+    if (mergeArgs.length > 1) {
+      propsExpression = createCallExpression(
+        context.helper(MERGE_PROPS),
+        mergeArgs,
+        elementLoc
+      );
+    } else {
+      propsExpression = mergeArgs[0];
+    }
+  } else if (properties.length) {
+    propsExpression = createObjectExpression(
+      dedupeProperties(properties),
+      elementLoc
+    );
+  }
+  if (hasDynamicKeys) {
+    patchFlag |= 16;
+  } else {
+    if (hasClassBinding && !isComponent) {
+      patchFlag |= 2;
+    }
+    if (hasStyleBinding && !isComponent) {
+      patchFlag |= 4;
+    }
+    if (dynamicPropNames.length) {
+      patchFlag |= 8;
+    }
+    if (hasHydrationEventBinding) {
+      patchFlag |= 32;
+    }
+  }
+  if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
+    patchFlag |= 512;
+  }
+  if (!context.inSSR && propsExpression) {
+    switch (propsExpression.type) {
+      case 15:
+        let classKeyIndex = -1;
+        let styleKeyIndex = -1;
+        let hasDynamicKey = false;
+        for (let i = 0; i < propsExpression.properties.length; i++) {
+          const key = propsExpression.properties[i].key;
+          if (isStaticExp(key)) {
+            if (key.content === "class") {
+              classKeyIndex = i;
+            } else if (key.content === "style") {
+              styleKeyIndex = i;
+            }
+          } else if (!key.isHandlerKey) {
+            hasDynamicKey = true;
+          }
+        }
+        const classProp = propsExpression.properties[classKeyIndex];
+        const styleProp = propsExpression.properties[styleKeyIndex];
+        if (!hasDynamicKey) {
+          if (classProp && !isStaticExp(classProp.value)) {
+            classProp.value = createCallExpression(
+              context.helper(NORMALIZE_CLASS),
+              [classProp.value]
+            );
+          }
+          if (styleProp && // the static style is compiled into an object,
+          // so use `hasStyleBinding` to ensure that it is a dynamic style binding
+          (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,
+          // v-bind:style with static literal object
+          styleProp.value.type === 17)) {
+            styleProp.value = createCallExpression(
+              context.helper(NORMALIZE_STYLE),
+              [styleProp.value]
+            );
+          }
+        } else {
+          propsExpression = createCallExpression(
+            context.helper(NORMALIZE_PROPS),
+            [propsExpression]
+          );
+        }
+        break;
+      case 14:
+        break;
+      default:
+        propsExpression = createCallExpression(
+          context.helper(NORMALIZE_PROPS),
+          [
+            createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
+              propsExpression
+            ])
+          ]
+        );
+        break;
+    }
+  }
+  return {
+    props: propsExpression,
+    directives: runtimeDirectives,
+    patchFlag,
+    dynamicPropNames,
+    shouldUseBlock
+  };
+}
+function dedupeProperties(properties) {
+  const knownProps = /* @__PURE__ */ new Map();
+  const deduped = [];
+  for (let i = 0; i < properties.length; i++) {
+    const prop = properties[i];
+    if (prop.key.type === 8 || !prop.key.isStatic) {
+      deduped.push(prop);
+      continue;
+    }
+    const name = prop.key.content;
+    const existing = knownProps.get(name);
+    if (existing) {
+      if (name === "style" || name === "class" || shared.isOn(name)) {
+        mergeAsArray(existing, prop);
+      }
+    } else {
+      knownProps.set(name, prop);
+      deduped.push(prop);
+    }
+  }
+  return deduped;
+}
+function mergeAsArray(existing, incoming) {
+  if (existing.value.type === 17) {
+    existing.value.elements.push(incoming.value);
+  } else {
+    existing.value = createArrayExpression(
+      [existing.value, incoming.value],
+      existing.loc
+    );
+  }
+}
+function buildDirectiveArgs(dir, context) {
+  const dirArgs = [];
+  const runtime = directiveImportMap.get(dir);
+  if (runtime) {
+    dirArgs.push(context.helperString(runtime));
+  } else {
+    const fromSetup = resolveSetupReference("v-" + dir.name, context);
+    if (fromSetup) {
+      dirArgs.push(fromSetup);
+    } else {
+      context.helper(RESOLVE_DIRECTIVE);
+      context.directives.add(dir.name);
+      dirArgs.push(toValidAssetId(dir.name, `directive`));
+    }
+  }
+  const { loc } = dir;
+  if (dir.exp)
+    dirArgs.push(dir.exp);
+  if (dir.arg) {
+    if (!dir.exp) {
+      dirArgs.push(`void 0`);
+    }
+    dirArgs.push(dir.arg);
+  }
+  if (Object.keys(dir.modifiers).length) {
+    if (!dir.arg) {
+      if (!dir.exp) {
+        dirArgs.push(`void 0`);
+      }
+      dirArgs.push(`void 0`);
+    }
+    const trueExpression = createSimpleExpression(`true`, false, loc);
+    dirArgs.push(
+      createObjectExpression(
+        dir.modifiers.map(
+          (modifier) => createObjectProperty(modifier, trueExpression)
+        ),
+        loc
+      )
+    );
+  }
+  return createArrayExpression(dirArgs, dir.loc);
+}
+function stringifyDynamicPropNames(props) {
+  let propsNamesString = `[`;
+  for (let i = 0, l = props.length; i < l; i++) {
+    propsNamesString += JSON.stringify(props[i]);
+    if (i < l - 1)
+      propsNamesString += ", ";
+  }
+  return propsNamesString + `]`;
+}
+function isComponentTag(tag) {
+  return tag === "component" || tag === "Component";
+}
+
+const transformSlotOutlet = (node, context) => {
+  if (isSlotOutlet(node)) {
+    const { children, loc } = node;
+    const { slotName, slotProps } = processSlotOutlet(node, context);
+    const slotArgs = [
+      context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
+      slotName,
+      "{}",
+      "undefined",
+      "true"
+    ];
+    let expectedLen = 2;
+    if (slotProps) {
+      slotArgs[2] = slotProps;
+      expectedLen = 3;
+    }
+    if (children.length) {
+      slotArgs[3] = createFunctionExpression([], children, false, false, loc);
+      expectedLen = 4;
+    }
+    if (context.scopeId && !context.slotted) {
+      expectedLen = 5;
+    }
+    slotArgs.splice(expectedLen);
+    node.codegenNode = createCallExpression(
+      context.helper(RENDER_SLOT),
+      slotArgs,
+      loc
+    );
+  }
+};
+function processSlotOutlet(node, context) {
+  let slotName = `"default"`;
+  let slotProps = void 0;
+  const nonNameProps = [];
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      if (p.value) {
+        if (p.name === "name") {
+          slotName = JSON.stringify(p.value.content);
+        } else {
+          p.name = shared.camelize(p.name);
+          nonNameProps.push(p);
+        }
+      }
+    } else {
+      if (p.name === "bind" && isStaticArgOf(p.arg, "name")) {
+        if (p.exp)
+          slotName = p.exp;
+      } else {
+        if (p.name === "bind" && p.arg && isStaticExp(p.arg)) {
+          p.arg.content = shared.camelize(p.arg.content);
+        }
+        nonNameProps.push(p);
+      }
+    }
+  }
+  if (nonNameProps.length > 0) {
+    const { props, directives } = buildProps(
+      node,
+      context,
+      nonNameProps,
+      false,
+      false
+    );
+    slotProps = props;
+    if (directives.length) {
+      context.onError(
+        createCompilerError(
+          36,
+          directives[0].loc
+        )
+      );
+    }
+  }
+  return {
+    slotName,
+    slotProps
+  };
+}
+
+const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
+const transformOn = (dir, node, context, augmentor) => {
+  const { loc, modifiers, arg } = dir;
+  if (!dir.exp && !modifiers.length) {
+    context.onError(createCompilerError(35, loc));
+  }
+  let eventName;
+  if (arg.type === 4) {
+    if (arg.isStatic) {
+      let rawName = arg.content;
+      if (rawName.startsWith("vnode")) {
+        context.onWarn(
+          createCompilerError(51, arg.loc)
+        );
+      }
+      if (rawName.startsWith("vue:")) {
+        rawName = `vnode-${rawName.slice(4)}`;
+      }
+      const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? (
+        // for non-element and vnode lifecycle event listeners, auto convert
+        // it to camelCase. See issue #2249
+        shared.toHandlerKey(shared.camelize(rawName))
+      ) : (
+        // preserve case for plain element listeners that have uppercase
+        // letters, as these may be custom elements' custom events
+        `on:${rawName}`
+      );
+      eventName = createSimpleExpression(eventString, true, arg.loc);
+    } else {
+      eventName = createCompoundExpression([
+        `${context.helperString(TO_HANDLER_KEY)}(`,
+        arg,
+        `)`
+      ]);
+    }
+  } else {
+    eventName = arg;
+    eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
+    eventName.children.push(`)`);
+  }
+  let exp = dir.exp;
+  if (exp && !exp.content.trim()) {
+    exp = void 0;
+  }
+  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
+  if (exp) {
+    const isMemberExp = isMemberExpression(exp.content, context);
+    const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
+    const hasMultipleStatements = exp.content.includes(`;`);
+    if (context.prefixIdentifiers) {
+      isInlineStatement && context.addIdentifiers(`$event`);
+      exp = dir.exp = processExpression(
+        exp,
+        context,
+        false,
+        hasMultipleStatements
+      );
+      isInlineStatement && context.removeIdentifiers(`$event`);
+      shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once
+      !context.inVOnce && // runtime constants don't need to be cached
+      // (this is analyzed by compileScript in SFC <script setup>)
+      !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component -
+      // we need to use the original function to preserve arity,
+      // e.g. <transition> relies on checking cb.length to determine
+      // transition end handling. Inline function is ok since its arity
+      // is preserved even when cached.
+      !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot)
+      // it must be passed fresh to avoid stale values.
+      !hasScopeRef(exp, context.identifiers);
+      if (shouldCache && isMemberExp) {
+        if (exp.type === 4) {
+          exp.content = `${exp.content} && ${exp.content}(...args)`;
+        } else {
+          exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`];
+        }
+      }
+    }
+    if (isInlineStatement || shouldCache && isMemberExp) {
+      exp = createCompoundExpression([
+        `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? `
+//@ts-ignore
+` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
+        exp,
+        hasMultipleStatements ? `}` : `)`
+      ]);
+    }
+  }
+  let ret = {
+    props: [
+      createObjectProperty(
+        eventName,
+        exp || createSimpleExpression(`() => {}`, false, loc)
+      )
+    ]
+  };
+  if (augmentor) {
+    ret = augmentor(ret);
+  }
+  if (shouldCache) {
+    ret.props[0].value = context.cache(ret.props[0].value);
+  }
+  ret.props.forEach((p) => p.key.isHandlerKey = true);
+  return ret;
+};
+
+const transformBind = (dir, _node, context) => {
+  const { exp, modifiers, loc } = dir;
+  const arg = dir.arg;
+  if (arg.type !== 4) {
+    arg.children.unshift(`(`);
+    arg.children.push(`) || ""`);
+  } else if (!arg.isStatic) {
+    arg.content = `${arg.content} || ""`;
+  }
+  if (modifiers.includes("camel")) {
+    if (arg.type === 4) {
+      if (arg.isStatic) {
+        arg.content = shared.camelize(arg.content);
+      } else {
+        arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
+      }
+    } else {
+      arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
+      arg.children.push(`)`);
+    }
+  }
+  if (!context.inSSR) {
+    if (modifiers.includes("prop")) {
+      injectPrefix(arg, ".");
+    }
+    if (modifiers.includes("attr")) {
+      injectPrefix(arg, "^");
+    }
+  }
+  if (!exp || exp.type === 4 && !exp.content.trim()) {
+    context.onError(createCompilerError(34, loc));
+    return {
+      props: [createObjectProperty(arg, createSimpleExpression("", true, loc))]
+    };
+  }
+  return {
+    props: [createObjectProperty(arg, exp)]
+  };
+};
+const injectPrefix = (arg, prefix) => {
+  if (arg.type === 4) {
+    if (arg.isStatic) {
+      arg.content = prefix + arg.content;
+    } else {
+      arg.content = `\`${prefix}\${${arg.content}}\``;
+    }
+  } else {
+    arg.children.unshift(`'${prefix}' + (`);
+    arg.children.push(`)`);
+  }
+};
+
+const transformText = (node, context) => {
+  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
+    return () => {
+      const children = node.children;
+      let currentContainer = void 0;
+      let hasText = false;
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (isText$1(child)) {
+          hasText = true;
+          for (let j = i + 1; j < children.length; j++) {
+            const next = children[j];
+            if (isText$1(next)) {
+              if (!currentContainer) {
+                currentContainer = children[i] = createCompoundExpression(
+                  [child],
+                  child.loc
+                );
+              }
+              currentContainer.children.push(` + `, next);
+              children.splice(j, 1);
+              j--;
+            } else {
+              currentContainer = void 0;
+              break;
+            }
+          }
+        }
+      }
+      if (!hasText || // if this is a plain element with a single text child, leave it
+      // as-is since the runtime has dedicated fast path for this by directly
+      // setting textContent of the element.
+      // for component root it's always normalized anyway.
+      children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756
+      // custom directives can potentially add DOM elements arbitrarily,
+      // we need to avoid setting textContent of the element at runtime
+      // to avoid accidentally overwriting the DOM elements added
+      // by the user through custom directives.
+      !node.props.find(
+        (p) => p.type === 7 && !context.directiveTransforms[p.name]
+      ) && // in compat mode, <template> tags with no special directives
+      // will be rendered as a fragment so its children must be
+      // converted into vnodes.
+      !(node.tag === "template"))) {
+        return;
+      }
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (isText$1(child) || child.type === 8) {
+          const callArgs = [];
+          if (child.type !== 2 || child.content !== " ") {
+            callArgs.push(child);
+          }
+          if (!context.ssr && getConstantType(child, context) === 0) {
+            callArgs.push(
+              1 + (` /* ${shared.PatchFlagNames[1]} */` )
+            );
+          }
+          children[i] = {
+            type: 12,
+            content: child,
+            loc: child.loc,
+            codegenNode: createCallExpression(
+              context.helper(CREATE_TEXT),
+              callArgs
+            )
+          };
+        }
+      }
+    };
+  }
+};
+
+const seen$1 = /* @__PURE__ */ new WeakSet();
+const transformOnce = (node, context) => {
+  if (node.type === 1 && findDir(node, "once", true)) {
+    if (seen$1.has(node) || context.inVOnce || context.inSSR) {
+      return;
+    }
+    seen$1.add(node);
+    context.inVOnce = true;
+    context.helper(SET_BLOCK_TRACKING);
+    return () => {
+      context.inVOnce = false;
+      const cur = context.currentNode;
+      if (cur.codegenNode) {
+        cur.codegenNode = context.cache(
+          cur.codegenNode,
+          true
+          /* isVNode */
+        );
+      }
+    };
+  }
+};
+
+const transformModel = (dir, node, context) => {
+  const { exp, arg } = dir;
+  if (!exp) {
+    context.onError(
+      createCompilerError(41, dir.loc)
+    );
+    return createTransformProps();
+  }
+  const rawExp = exp.loc.source;
+  const expString = exp.type === 4 ? exp.content : rawExp;
+  const bindingType = context.bindingMetadata[rawExp];
+  if (bindingType === "props" || bindingType === "props-aliased") {
+    context.onError(createCompilerError(44, exp.loc));
+    return createTransformProps();
+  }
+  const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref");
+  if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) {
+    context.onError(
+      createCompilerError(42, exp.loc)
+    );
+    return createTransformProps();
+  }
+  if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) {
+    context.onError(
+      createCompilerError(43, exp.loc)
+    );
+    return createTransformProps();
+  }
+  const propName = arg ? arg : createSimpleExpression("modelValue", true);
+  const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`;
+  let assignmentExp;
+  const eventArg = context.isTS ? `($event: any)` : `$event`;
+  if (maybeRef) {
+    if (bindingType === "setup-ref") {
+      assignmentExp = createCompoundExpression([
+        `${eventArg} => ((`,
+        createSimpleExpression(rawExp, false, exp.loc),
+        `).value = $event)`
+      ]);
+    } else {
+      const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`;
+      assignmentExp = createCompoundExpression([
+        `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`,
+        createSimpleExpression(rawExp, false, exp.loc),
+        `).value = $event : ${altAssignment})`
+      ]);
+    }
+  } else {
+    assignmentExp = createCompoundExpression([
+      `${eventArg} => ((`,
+      exp,
+      `) = $event)`
+    ]);
+  }
+  const props = [
+    // modelValue: foo
+    createObjectProperty(propName, dir.exp),
+    // "onUpdate:modelValue": $event => (foo = $event)
+    createObjectProperty(eventName, assignmentExp)
+  ];
+  if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) {
+    props[1].value = context.cache(props[1].value);
+  }
+  if (dir.modifiers.length && node.tagType === 1) {
+    const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
+    const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
+    props.push(
+      createObjectProperty(
+        modifiersKey,
+        createSimpleExpression(
+          `{ ${modifiers} }`,
+          false,
+          dir.loc,
+          2
+        )
+      )
+    );
+  }
+  return createTransformProps(props);
+};
+function createTransformProps(props = []) {
+  return { props };
+}
+
+const validDivisionCharRE = /[\w).+\-_$\]]/;
+const transformFilter = (node, context) => {
+  if (!isCompatEnabled("COMPILER_FILTER", context)) {
+    return;
+  }
+  if (node.type === 5) {
+    rewriteFilter(node.content, context);
+  }
+  if (node.type === 1) {
+    node.props.forEach((prop) => {
+      if (prop.type === 7 && prop.name !== "for" && prop.exp) {
+        rewriteFilter(prop.exp, context);
+      }
+    });
+  }
+};
+function rewriteFilter(node, context) {
+  if (node.type === 4) {
+    parseFilter(node, context);
+  } else {
+    for (let i = 0; i < node.children.length; i++) {
+      const child = node.children[i];
+      if (typeof child !== "object")
+        continue;
+      if (child.type === 4) {
+        parseFilter(child, context);
+      } else if (child.type === 8) {
+        rewriteFilter(node, context);
+      } else if (child.type === 5) {
+        rewriteFilter(child.content, context);
+      }
+    }
+  }
+}
+function parseFilter(node, context) {
+  const exp = node.content;
+  let inSingle = false;
+  let inDouble = false;
+  let inTemplateString = false;
+  let inRegex = false;
+  let curly = 0;
+  let square = 0;
+  let paren = 0;
+  let lastFilterIndex = 0;
+  let c, prev, i, expression, filters = [];
+  for (i = 0; i < exp.length; i++) {
+    prev = c;
+    c = exp.charCodeAt(i);
+    if (inSingle) {
+      if (c === 39 && prev !== 92)
+        inSingle = false;
+    } else if (inDouble) {
+      if (c === 34 && prev !== 92)
+        inDouble = false;
+    } else if (inTemplateString) {
+      if (c === 96 && prev !== 92)
+        inTemplateString = false;
+    } else if (inRegex) {
+      if (c === 47 && prev !== 92)
+        inRegex = false;
+    } else if (c === 124 && // pipe
+    exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {
+      if (expression === void 0) {
+        lastFilterIndex = i + 1;
+        expression = exp.slice(0, i).trim();
+      } else {
+        pushFilter();
+      }
+    } else {
+      switch (c) {
+        case 34:
+          inDouble = true;
+          break;
+        case 39:
+          inSingle = true;
+          break;
+        case 96:
+          inTemplateString = true;
+          break;
+        case 40:
+          paren++;
+          break;
+        case 41:
+          paren--;
+          break;
+        case 91:
+          square++;
+          break;
+        case 93:
+          square--;
+          break;
+        case 123:
+          curly++;
+          break;
+        case 125:
+          curly--;
+          break;
+      }
+      if (c === 47) {
+        let j = i - 1;
+        let p;
+        for (; j >= 0; j--) {
+          p = exp.charAt(j);
+          if (p !== " ")
+            break;
+        }
+        if (!p || !validDivisionCharRE.test(p)) {
+          inRegex = true;
+        }
+      }
+    }
+  }
+  if (expression === void 0) {
+    expression = exp.slice(0, i).trim();
+  } else if (lastFilterIndex !== 0) {
+    pushFilter();
+  }
+  function pushFilter() {
+    filters.push(exp.slice(lastFilterIndex, i).trim());
+    lastFilterIndex = i + 1;
+  }
+  if (filters.length) {
+    warnDeprecation(
+      "COMPILER_FILTER",
+      context,
+      node.loc
+    );
+    for (i = 0; i < filters.length; i++) {
+      expression = wrapFilter(expression, filters[i], context);
+    }
+    node.content = expression;
+  }
+}
+function wrapFilter(exp, filter, context) {
+  context.helper(RESOLVE_FILTER);
+  const i = filter.indexOf("(");
+  if (i < 0) {
+    context.filters.add(filter);
+    return `${toValidAssetId(filter, "filter")}(${exp})`;
+  } else {
+    const name = filter.slice(0, i);
+    const args = filter.slice(i + 1);
+    context.filters.add(name);
+    return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`;
+  }
+}
+
+const seen = /* @__PURE__ */ new WeakSet();
+const transformMemo = (node, context) => {
+  if (node.type === 1) {
+    const dir = findDir(node, "memo");
+    if (!dir || seen.has(node)) {
+      return;
+    }
+    seen.add(node);
+    return () => {
+      const codegenNode = node.codegenNode || context.currentNode.codegenNode;
+      if (codegenNode && codegenNode.type === 13) {
+        if (node.tagType !== 1) {
+          convertToBlock(codegenNode, context);
+        }
+        node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
+          dir.exp,
+          createFunctionExpression(void 0, codegenNode),
+          `_cache`,
+          String(context.cached++)
+        ]);
+      }
+    };
+  }
+};
+
+function getBaseTransformPreset(prefixIdentifiers) {
+  return [
+    [
+      transformOnce,
+      transformIf,
+      transformMemo,
+      transformFor,
+      ...[transformFilter] ,
+      ...prefixIdentifiers ? [
+        // order is important
+        trackVForSlotScopes,
+        transformExpression
+      ] : [],
+      transformSlotOutlet,
+      transformElement,
+      trackSlotScopes,
+      transformText
+    ],
+    {
+      on: transformOn,
+      bind: transformBind,
+      model: transformModel
+    }
+  ];
+}
+function baseCompile(template, options = {}) {
+  const onError = options.onError || defaultOnError;
+  const isModuleMode = options.mode === "module";
+  const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode;
+  if (!prefixIdentifiers && options.cacheHandlers) {
+    onError(createCompilerError(49));
+  }
+  if (options.scopeId && !isModuleMode) {
+    onError(createCompilerError(50));
+  }
+  const ast = shared.isString(template) ? baseParse(template, options) : template;
+  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers);
+  if (options.isTS) {
+    const { expressionPlugins } = options;
+    if (!expressionPlugins || !expressionPlugins.includes("typescript")) {
+      options.expressionPlugins = [...expressionPlugins || [], "typescript"];
+    }
+  }
+  transform(
+    ast,
+    shared.extend({}, options, {
+      prefixIdentifiers,
+      nodeTransforms: [
+        ...nodeTransforms,
+        ...options.nodeTransforms || []
+        // user transforms
+      ],
+      directiveTransforms: shared.extend(
+        {},
+        directiveTransforms,
+        options.directiveTransforms || {}
+        // user transforms
+      )
+    })
+  );
+  return generate(
+    ast,
+    shared.extend({}, options, {
+      prefixIdentifiers
+    })
+  );
+}
+
+const noopDirectiveTransform = () => ({ props: [] });
+
+exports.generateCodeFrame = shared.generateCodeFrame;
+exports.BASE_TRANSITION = BASE_TRANSITION;
+exports.CAMELIZE = CAMELIZE;
+exports.CAPITALIZE = CAPITALIZE;
+exports.CREATE_BLOCK = CREATE_BLOCK;
+exports.CREATE_COMMENT = CREATE_COMMENT;
+exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK;
+exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE;
+exports.CREATE_SLOTS = CREATE_SLOTS;
+exports.CREATE_STATIC = CREATE_STATIC;
+exports.CREATE_TEXT = CREATE_TEXT;
+exports.CREATE_VNODE = CREATE_VNODE;
+exports.FRAGMENT = FRAGMENT;
+exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS;
+exports.IS_MEMO_SAME = IS_MEMO_SAME;
+exports.IS_REF = IS_REF;
+exports.KEEP_ALIVE = KEEP_ALIVE;
+exports.MERGE_PROPS = MERGE_PROPS;
+exports.NORMALIZE_CLASS = NORMALIZE_CLASS;
+exports.NORMALIZE_PROPS = NORMALIZE_PROPS;
+exports.NORMALIZE_STYLE = NORMALIZE_STYLE;
+exports.OPEN_BLOCK = OPEN_BLOCK;
+exports.POP_SCOPE_ID = POP_SCOPE_ID;
+exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID;
+exports.RENDER_LIST = RENDER_LIST;
+exports.RENDER_SLOT = RENDER_SLOT;
+exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT;
+exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE;
+exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT;
+exports.RESOLVE_FILTER = RESOLVE_FILTER;
+exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING;
+exports.SUSPENSE = SUSPENSE;
+exports.TELEPORT = TELEPORT;
+exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING;
+exports.TO_HANDLERS = TO_HANDLERS;
+exports.TO_HANDLER_KEY = TO_HANDLER_KEY;
+exports.TS_NODE_TYPES = TS_NODE_TYPES;
+exports.UNREF = UNREF;
+exports.WITH_CTX = WITH_CTX;
+exports.WITH_DIRECTIVES = WITH_DIRECTIVES;
+exports.WITH_MEMO = WITH_MEMO;
+exports.advancePositionWithClone = advancePositionWithClone;
+exports.advancePositionWithMutation = advancePositionWithMutation;
+exports.assert = assert;
+exports.baseCompile = baseCompile;
+exports.baseParse = baseParse;
+exports.buildDirectiveArgs = buildDirectiveArgs;
+exports.buildProps = buildProps;
+exports.buildSlots = buildSlots;
+exports.checkCompatEnabled = checkCompatEnabled;
+exports.convertToBlock = convertToBlock;
+exports.createArrayExpression = createArrayExpression;
+exports.createAssignmentExpression = createAssignmentExpression;
+exports.createBlockStatement = createBlockStatement;
+exports.createCacheExpression = createCacheExpression;
+exports.createCallExpression = createCallExpression;
+exports.createCompilerError = createCompilerError;
+exports.createCompoundExpression = createCompoundExpression;
+exports.createConditionalExpression = createConditionalExpression;
+exports.createForLoopParams = createForLoopParams;
+exports.createFunctionExpression = createFunctionExpression;
+exports.createIfStatement = createIfStatement;
+exports.createInterpolation = createInterpolation;
+exports.createObjectExpression = createObjectExpression;
+exports.createObjectProperty = createObjectProperty;
+exports.createReturnStatement = createReturnStatement;
+exports.createRoot = createRoot;
+exports.createSequenceExpression = createSequenceExpression;
+exports.createSimpleExpression = createSimpleExpression;
+exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform;
+exports.createTemplateLiteral = createTemplateLiteral;
+exports.createTransformContext = createTransformContext;
+exports.createVNodeCall = createVNodeCall;
+exports.extractIdentifiers = extractIdentifiers;
+exports.findDir = findDir;
+exports.findProp = findProp;
+exports.generate = generate;
+exports.getBaseTransformPreset = getBaseTransformPreset;
+exports.getConstantType = getConstantType;
+exports.getInnerRange = getInnerRange;
+exports.getMemoedVNodeCall = getMemoedVNodeCall;
+exports.getVNodeBlockHelper = getVNodeBlockHelper;
+exports.getVNodeHelper = getVNodeHelper;
+exports.hasDynamicKeyVBind = hasDynamicKeyVBind;
+exports.hasScopeRef = hasScopeRef;
+exports.helperNameMap = helperNameMap;
+exports.injectProp = injectProp;
+exports.isBuiltInType = isBuiltInType;
+exports.isCoreComponent = isCoreComponent;
+exports.isFunctionType = isFunctionType;
+exports.isInDestructureAssignment = isInDestructureAssignment;
+exports.isMemberExpression = isMemberExpression;
+exports.isMemberExpressionBrowser = isMemberExpressionBrowser;
+exports.isMemberExpressionNode = isMemberExpressionNode;
+exports.isReferencedIdentifier = isReferencedIdentifier;
+exports.isSimpleIdentifier = isSimpleIdentifier;
+exports.isSlotOutlet = isSlotOutlet;
+exports.isStaticArgOf = isStaticArgOf;
+exports.isStaticExp = isStaticExp;
+exports.isStaticProperty = isStaticProperty;
+exports.isStaticPropertyKey = isStaticPropertyKey;
+exports.isTemplateNode = isTemplateNode;
+exports.isText = isText$1;
+exports.isVSlot = isVSlot;
+exports.locStub = locStub;
+exports.noopDirectiveTransform = noopDirectiveTransform;
+exports.processExpression = processExpression;
+exports.processFor = processFor;
+exports.processIf = processIf;
+exports.processSlotOutlet = processSlotOutlet;
+exports.registerRuntimeHelpers = registerRuntimeHelpers;
+exports.resolveComponentType = resolveComponentType;
+exports.stringifyExpression = stringifyExpression;
+exports.toValidAssetId = toValidAssetId;
+exports.trackSlotScopes = trackSlotScopes;
+exports.trackVForSlotScopes = trackVForSlotScopes;
+exports.transform = transform;
+exports.transformBind = transformBind;
+exports.transformElement = transformElement;
+exports.transformExpression = transformExpression;
+exports.transformModel = transformModel;
+exports.transformOn = transformOn;
+exports.traverseNode = traverseNode;
+exports.walkBlockDeclarations = walkBlockDeclarations;
+exports.walkFunctionParams = walkFunctionParams;
+exports.walkIdentifiers = walkIdentifiers;
+exports.warnDeprecation = warnDeprecation;

+ 5355 - 0
node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js

xqd
@@ -0,0 +1,5355 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var shared = require('@vue/shared');
+var parser = require('@babel/parser');
+var sourceMapJs = require('source-map-js');
+var estreeWalker = require('estree-walker');
+
+function defaultOnError(error) {
+  throw error;
+}
+function defaultOnWarn(msg) {
+}
+function createCompilerError(code, loc, messages, additionalMessage) {
+  const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ;
+  const error = new SyntaxError(String(msg));
+  error.code = code;
+  error.loc = loc;
+  return error;
+}
+const errorMessages = {
+  // parse errors
+  [0]: "Illegal comment.",
+  [1]: "CDATA section is allowed only in XML context.",
+  [2]: "Duplicate attribute.",
+  [3]: "End tag cannot have attributes.",
+  [4]: "Illegal '/' in tags.",
+  [5]: "Unexpected EOF in tag.",
+  [6]: "Unexpected EOF in CDATA section.",
+  [7]: "Unexpected EOF in comment.",
+  [8]: "Unexpected EOF in script.",
+  [9]: "Unexpected EOF in tag.",
+  [10]: "Incorrectly closed comment.",
+  [11]: "Incorrectly opened comment.",
+  [12]: "Illegal tag name. Use '&lt;' to print '<'.",
+  [13]: "Attribute value was expected.",
+  [14]: "End tag name was expected.",
+  [15]: "Whitespace was expected.",
+  [16]: "Unexpected '<!--' in comment.",
+  [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`,
+  [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",
+  [19]: "Attribute name cannot start with '='.",
+  [21]: "'<?' is allowed only in XML context.",
+  [20]: `Unexpected null character.`,
+  [22]: "Illegal '/' in tags.",
+  // Vue-specific parse errors
+  [23]: "Invalid end tag.",
+  [24]: "Element is missing end tag.",
+  [25]: "Interpolation end sign was not found.",
+  [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",
+  [26]: "Legal directive name was expected.",
+  // transform errors
+  [28]: `v-if/v-else-if is missing expression.`,
+  [29]: `v-if/else branches must use unique keys.`,
+  [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,
+  [31]: `v-for is missing expression.`,
+  [32]: `v-for has invalid expression.`,
+  [33]: `<template v-for> key should be placed on the <template> tag.`,
+  [34]: `v-bind is missing expression.`,
+  [35]: `v-on is missing expression.`,
+  [36]: `Unexpected custom directive on <slot> outlet.`,
+  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
+  [38]: `Duplicate slot names found. `,
+  [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,
+  [40]: `v-slot can only be used on components or <template> tags.`,
+  [41]: `v-model is missing expression.`,
+  [42]: `v-model value must be a valid JavaScript member expression.`,
+  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
+Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
+  [45]: `Error parsing JavaScript expression: `,
+  [46]: `<KeepAlive> expects exactly one child component.`,
+  // generic errors
+  [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
+  [48]: `ES module mode is not supported in this build of compiler.`,
+  [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
+  [50]: `"scopeId" option is only supported in module mode.`,
+  // deprecations
+  [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`,
+  [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`,
+  // just to fulfill types
+  [53]: ``
+};
+
+const FRAGMENT = Symbol(``);
+const TELEPORT = Symbol(``);
+const SUSPENSE = Symbol(``);
+const KEEP_ALIVE = Symbol(``);
+const BASE_TRANSITION = Symbol(``);
+const OPEN_BLOCK = Symbol(``);
+const CREATE_BLOCK = Symbol(``);
+const CREATE_ELEMENT_BLOCK = Symbol(``);
+const CREATE_VNODE = Symbol(``);
+const CREATE_ELEMENT_VNODE = Symbol(``);
+const CREATE_COMMENT = Symbol(``);
+const CREATE_TEXT = Symbol(``);
+const CREATE_STATIC = Symbol(``);
+const RESOLVE_COMPONENT = Symbol(``);
+const RESOLVE_DYNAMIC_COMPONENT = Symbol(
+  ``
+);
+const RESOLVE_DIRECTIVE = Symbol(``);
+const RESOLVE_FILTER = Symbol(``);
+const WITH_DIRECTIVES = Symbol(``);
+const RENDER_LIST = Symbol(``);
+const RENDER_SLOT = Symbol(``);
+const CREATE_SLOTS = Symbol(``);
+const TO_DISPLAY_STRING = Symbol(``);
+const MERGE_PROPS = Symbol(``);
+const NORMALIZE_CLASS = Symbol(``);
+const NORMALIZE_STYLE = Symbol(``);
+const NORMALIZE_PROPS = Symbol(``);
+const GUARD_REACTIVE_PROPS = Symbol(``);
+const TO_HANDLERS = Symbol(``);
+const CAMELIZE = Symbol(``);
+const CAPITALIZE = Symbol(``);
+const TO_HANDLER_KEY = Symbol(``);
+const SET_BLOCK_TRACKING = Symbol(``);
+const PUSH_SCOPE_ID = Symbol(``);
+const POP_SCOPE_ID = Symbol(``);
+const WITH_CTX = Symbol(``);
+const UNREF = Symbol(``);
+const IS_REF = Symbol(``);
+const WITH_MEMO = Symbol(``);
+const IS_MEMO_SAME = Symbol(``);
+const helperNameMap = {
+  [FRAGMENT]: `Fragment`,
+  [TELEPORT]: `Teleport`,
+  [SUSPENSE]: `Suspense`,
+  [KEEP_ALIVE]: `KeepAlive`,
+  [BASE_TRANSITION]: `BaseTransition`,
+  [OPEN_BLOCK]: `openBlock`,
+  [CREATE_BLOCK]: `createBlock`,
+  [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+  [CREATE_VNODE]: `createVNode`,
+  [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+  [CREATE_COMMENT]: `createCommentVNode`,
+  [CREATE_TEXT]: `createTextVNode`,
+  [CREATE_STATIC]: `createStaticVNode`,
+  [RESOLVE_COMPONENT]: `resolveComponent`,
+  [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+  [RESOLVE_DIRECTIVE]: `resolveDirective`,
+  [RESOLVE_FILTER]: `resolveFilter`,
+  [WITH_DIRECTIVES]: `withDirectives`,
+  [RENDER_LIST]: `renderList`,
+  [RENDER_SLOT]: `renderSlot`,
+  [CREATE_SLOTS]: `createSlots`,
+  [TO_DISPLAY_STRING]: `toDisplayString`,
+  [MERGE_PROPS]: `mergeProps`,
+  [NORMALIZE_CLASS]: `normalizeClass`,
+  [NORMALIZE_STYLE]: `normalizeStyle`,
+  [NORMALIZE_PROPS]: `normalizeProps`,
+  [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+  [TO_HANDLERS]: `toHandlers`,
+  [CAMELIZE]: `camelize`,
+  [CAPITALIZE]: `capitalize`,
+  [TO_HANDLER_KEY]: `toHandlerKey`,
+  [SET_BLOCK_TRACKING]: `setBlockTracking`,
+  [PUSH_SCOPE_ID]: `pushScopeId`,
+  [POP_SCOPE_ID]: `popScopeId`,
+  [WITH_CTX]: `withCtx`,
+  [UNREF]: `unref`,
+  [IS_REF]: `isRef`,
+  [WITH_MEMO]: `withMemo`,
+  [IS_MEMO_SAME]: `isMemoSame`
+};
+function registerRuntimeHelpers(helpers) {
+  Object.getOwnPropertySymbols(helpers).forEach((s) => {
+    helperNameMap[s] = helpers[s];
+  });
+}
+
+const locStub = {
+  source: "",
+  start: { line: 1, column: 1, offset: 0 },
+  end: { line: 1, column: 1, offset: 0 }
+};
+function createRoot(children, loc = locStub) {
+  return {
+    type: 0,
+    children,
+    helpers: /* @__PURE__ */ new Set(),
+    components: [],
+    directives: [],
+    hoists: [],
+    imports: [],
+    cached: 0,
+    temps: 0,
+    codegenNode: void 0,
+    loc
+  };
+}
+function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+  if (context) {
+    if (isBlock) {
+      context.helper(OPEN_BLOCK);
+      context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+    } else {
+      context.helper(getVNodeHelper(context.inSSR, isComponent));
+    }
+    if (directives) {
+      context.helper(WITH_DIRECTIVES);
+    }
+  }
+  return {
+    type: 13,
+    tag,
+    props,
+    children,
+    patchFlag,
+    dynamicProps,
+    directives,
+    isBlock,
+    disableTracking,
+    isComponent,
+    loc
+  };
+}
+function createArrayExpression(elements, loc = locStub) {
+  return {
+    type: 17,
+    loc,
+    elements
+  };
+}
+function createObjectExpression(properties, loc = locStub) {
+  return {
+    type: 15,
+    loc,
+    properties
+  };
+}
+function createObjectProperty(key, value) {
+  return {
+    type: 16,
+    loc: locStub,
+    key: shared.isString(key) ? createSimpleExpression(key, true) : key,
+    value
+  };
+}
+function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
+  return {
+    type: 4,
+    loc,
+    content,
+    isStatic,
+    constType: isStatic ? 3 : constType
+  };
+}
+function createInterpolation(content, loc) {
+  return {
+    type: 5,
+    loc,
+    content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content
+  };
+}
+function createCompoundExpression(children, loc = locStub) {
+  return {
+    type: 8,
+    loc,
+    children
+  };
+}
+function createCallExpression(callee, args = [], loc = locStub) {
+  return {
+    type: 14,
+    loc,
+    callee,
+    arguments: args
+  };
+}
+function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
+  return {
+    type: 18,
+    params,
+    returns,
+    newline,
+    isSlot,
+    loc
+  };
+}
+function createConditionalExpression(test, consequent, alternate, newline = true) {
+  return {
+    type: 19,
+    test,
+    consequent,
+    alternate,
+    newline,
+    loc: locStub
+  };
+}
+function createCacheExpression(index, value, isVNode = false) {
+  return {
+    type: 20,
+    index,
+    value,
+    isVNode,
+    loc: locStub
+  };
+}
+function createBlockStatement(body) {
+  return {
+    type: 21,
+    body,
+    loc: locStub
+  };
+}
+function createTemplateLiteral(elements) {
+  return {
+    type: 22,
+    elements,
+    loc: locStub
+  };
+}
+function createIfStatement(test, consequent, alternate) {
+  return {
+    type: 23,
+    test,
+    consequent,
+    alternate,
+    loc: locStub
+  };
+}
+function createAssignmentExpression(left, right) {
+  return {
+    type: 24,
+    left,
+    right,
+    loc: locStub
+  };
+}
+function createSequenceExpression(expressions) {
+  return {
+    type: 25,
+    expressions,
+    loc: locStub
+  };
+}
+function createReturnStatement(returns) {
+  return {
+    type: 26,
+    returns,
+    loc: locStub
+  };
+}
+function getVNodeHelper(ssr, isComponent) {
+  return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+}
+function getVNodeBlockHelper(ssr, isComponent) {
+  return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+}
+function convertToBlock(node, { helper, removeHelper, inSSR }) {
+  if (!node.isBlock) {
+    node.isBlock = true;
+    removeHelper(getVNodeHelper(inSSR, node.isComponent));
+    helper(OPEN_BLOCK);
+    helper(getVNodeBlockHelper(inSSR, node.isComponent));
+  }
+}
+
+const isStaticExp = (p) => p.type === 4 && p.isStatic;
+const isBuiltInType = (tag, expected) => tag === expected || tag === shared.hyphenate(expected);
+function isCoreComponent(tag) {
+  if (isBuiltInType(tag, "Teleport")) {
+    return TELEPORT;
+  } else if (isBuiltInType(tag, "Suspense")) {
+    return SUSPENSE;
+  } else if (isBuiltInType(tag, "KeepAlive")) {
+    return KEEP_ALIVE;
+  } else if (isBuiltInType(tag, "BaseTransition")) {
+    return BASE_TRANSITION;
+  }
+}
+const nonIdentifierRE = /^\d|[^\$\w]/;
+const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
+const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
+const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
+const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
+const isMemberExpressionBrowser = (path) => {
+  path = path.trim().replace(whitespaceRE, (s) => s.trim());
+  let state = 0 /* inMemberExp */;
+  let stateStack = [];
+  let currentOpenBracketCount = 0;
+  let currentOpenParensCount = 0;
+  let currentStringType = null;
+  for (let i = 0; i < path.length; i++) {
+    const char = path.charAt(i);
+    switch (state) {
+      case 0 /* inMemberExp */:
+        if (char === "[") {
+          stateStack.push(state);
+          state = 1 /* inBrackets */;
+          currentOpenBracketCount++;
+        } else if (char === "(") {
+          stateStack.push(state);
+          state = 2 /* inParens */;
+          currentOpenParensCount++;
+        } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
+          return false;
+        }
+        break;
+      case 1 /* inBrackets */:
+        if (char === `'` || char === `"` || char === "`") {
+          stateStack.push(state);
+          state = 3 /* inString */;
+          currentStringType = char;
+        } else if (char === `[`) {
+          currentOpenBracketCount++;
+        } else if (char === `]`) {
+          if (!--currentOpenBracketCount) {
+            state = stateStack.pop();
+          }
+        }
+        break;
+      case 2 /* inParens */:
+        if (char === `'` || char === `"` || char === "`") {
+          stateStack.push(state);
+          state = 3 /* inString */;
+          currentStringType = char;
+        } else if (char === `(`) {
+          currentOpenParensCount++;
+        } else if (char === `)`) {
+          if (i === path.length - 1) {
+            return false;
+          }
+          if (!--currentOpenParensCount) {
+            state = stateStack.pop();
+          }
+        }
+        break;
+      case 3 /* inString */:
+        if (char === currentStringType) {
+          state = stateStack.pop();
+          currentStringType = null;
+        }
+        break;
+    }
+  }
+  return !currentOpenBracketCount && !currentOpenParensCount;
+};
+const isMemberExpressionNode = (path, context) => {
+  try {
+    let ret = parser.parseExpression(path, {
+      plugins: context.expressionPlugins
+    });
+    if (ret.type === "TSAsExpression" || ret.type === "TSTypeAssertion") {
+      ret = ret.expression;
+    }
+    return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier";
+  } catch (e) {
+    return false;
+  }
+};
+const isMemberExpression = isMemberExpressionNode;
+function getInnerRange(loc, offset, length) {
+  const source = loc.source.slice(offset, offset + length);
+  const newLoc = {
+    source,
+    start: advancePositionWithClone(loc.start, loc.source, offset),
+    end: loc.end
+  };
+  if (length != null) {
+    newLoc.end = advancePositionWithClone(
+      loc.start,
+      loc.source,
+      offset + length
+    );
+  }
+  return newLoc;
+}
+function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
+  return advancePositionWithMutation(
+    shared.extend({}, pos),
+    source,
+    numberOfCharacters
+  );
+}
+function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {
+  let linesCount = 0;
+  let lastNewLinePos = -1;
+  for (let i = 0; i < numberOfCharacters; i++) {
+    if (source.charCodeAt(i) === 10) {
+      linesCount++;
+      lastNewLinePos = i;
+    }
+  }
+  pos.offset += numberOfCharacters;
+  pos.line += linesCount;
+  pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;
+  return pos;
+}
+function assert(condition, msg) {
+  if (!condition) {
+    throw new Error(msg || `unexpected compiler condition`);
+  }
+}
+function findDir(node, name, allowEmpty = false) {
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) {
+      return p;
+    }
+  }
+}
+function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      if (dynamicOnly)
+        continue;
+      if (p.name === name && (p.value || allowEmpty)) {
+        return p;
+      }
+    } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {
+      return p;
+    }
+  }
+}
+function isStaticArgOf(arg, name) {
+  return !!(arg && isStaticExp(arg) && arg.content === name);
+}
+function hasDynamicKeyVBind(node) {
+  return node.props.some(
+    (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj"
+    p.arg.type !== 4 || // v-bind:[_ctx.foo]
+    !p.arg.isStatic)
+    // v-bind:[foo]
+  );
+}
+function isText$1(node) {
+  return node.type === 5 || node.type === 2;
+}
+function isVSlot(p) {
+  return p.type === 7 && p.name === "slot";
+}
+function isTemplateNode(node) {
+  return node.type === 1 && node.tagType === 3;
+}
+function isSlotOutlet(node) {
+  return node.type === 1 && node.tagType === 2;
+}
+const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);
+function getUnnormalizedProps(props, callPath = []) {
+  if (props && !shared.isString(props) && props.type === 14) {
+    const callee = props.callee;
+    if (!shared.isString(callee) && propsHelperSet.has(callee)) {
+      return getUnnormalizedProps(
+        props.arguments[0],
+        callPath.concat(props)
+      );
+    }
+  }
+  return [props, callPath];
+}
+function injectProp(node, prop, context) {
+  let propsWithInjection;
+  let props = node.type === 13 ? node.props : node.arguments[2];
+  let callPath = [];
+  let parentCall;
+  if (props && !shared.isString(props) && props.type === 14) {
+    const ret = getUnnormalizedProps(props);
+    props = ret[0];
+    callPath = ret[1];
+    parentCall = callPath[callPath.length - 1];
+  }
+  if (props == null || shared.isString(props)) {
+    propsWithInjection = createObjectExpression([prop]);
+  } else if (props.type === 14) {
+    const first = props.arguments[0];
+    if (!shared.isString(first) && first.type === 15) {
+      if (!hasProp(prop, first)) {
+        first.properties.unshift(prop);
+      }
+    } else {
+      if (props.callee === TO_HANDLERS) {
+        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+          createObjectExpression([prop]),
+          props
+        ]);
+      } else {
+        props.arguments.unshift(createObjectExpression([prop]));
+      }
+    }
+    !propsWithInjection && (propsWithInjection = props);
+  } else if (props.type === 15) {
+    if (!hasProp(prop, props)) {
+      props.properties.unshift(prop);
+    }
+    propsWithInjection = props;
+  } else {
+    propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+      createObjectExpression([prop]),
+      props
+    ]);
+    if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
+      parentCall = callPath[callPath.length - 2];
+    }
+  }
+  if (node.type === 13) {
+    if (parentCall) {
+      parentCall.arguments[0] = propsWithInjection;
+    } else {
+      node.props = propsWithInjection;
+    }
+  } else {
+    if (parentCall) {
+      parentCall.arguments[0] = propsWithInjection;
+    } else {
+      node.arguments[2] = propsWithInjection;
+    }
+  }
+}
+function hasProp(prop, props) {
+  let result = false;
+  if (prop.key.type === 4) {
+    const propKeyName = prop.key.content;
+    result = props.properties.some(
+      (p) => p.key.type === 4 && p.key.content === propKeyName
+    );
+  }
+  return result;
+}
+function toValidAssetId(name, type) {
+  return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
+    return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString();
+  })}`;
+}
+function hasScopeRef(node, ids) {
+  if (!node || Object.keys(ids).length === 0) {
+    return false;
+  }
+  switch (node.type) {
+    case 1:
+      for (let i = 0; i < node.props.length; i++) {
+        const p = node.props[i];
+        if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {
+          return true;
+        }
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 11:
+      if (hasScopeRef(node.source, ids)) {
+        return true;
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 9:
+      return node.branches.some((b) => hasScopeRef(b, ids));
+    case 10:
+      if (hasScopeRef(node.condition, ids)) {
+        return true;
+      }
+      return node.children.some((c) => hasScopeRef(c, ids));
+    case 4:
+      return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content];
+    case 8:
+      return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids));
+    case 5:
+    case 12:
+      return hasScopeRef(node.content, ids);
+    case 2:
+    case 3:
+      return false;
+    default:
+      return false;
+  }
+}
+function getMemoedVNodeCall(node) {
+  if (node.type === 14 && node.callee === WITH_MEMO) {
+    return node.arguments[1].returns;
+  } else {
+    return node;
+  }
+}
+
+const deprecationData = {
+  ["COMPILER_IS_ON_ELEMENT"]: {
+    message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
+  },
+  ["COMPILER_V_BIND_SYNC"]: {
+    message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
+  },
+  ["COMPILER_V_BIND_PROP"]: {
+    message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.`
+  },
+  ["COMPILER_V_BIND_OBJECT_ORDER"]: {
+    message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
+  },
+  ["COMPILER_V_ON_NATIVE"]: {
+    message: `.native modifier for v-on has been removed as is no longer necessary.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
+  },
+  ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: {
+    message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
+  },
+  ["COMPILER_NATIVE_TEMPLATE"]: {
+    message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`
+  },
+  ["COMPILER_INLINE_TEMPLATE"]: {
+    message: `"inline-template" has been removed in Vue 3.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
+  },
+  ["COMPILER_FILTER"]: {
+    message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,
+    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
+  }
+};
+function getCompatValue(key, context) {
+  const config = context.options ? context.options.compatConfig : context.compatConfig;
+  const value = config && config[key];
+  if (key === "MODE") {
+    return value || 3;
+  } else {
+    return value;
+  }
+}
+function isCompatEnabled(key, context) {
+  const mode = getCompatValue("MODE", context);
+  const value = getCompatValue(key, context);
+  return mode === 3 ? value === true : value !== false;
+}
+function checkCompatEnabled(key, context, loc, ...args) {
+  const enabled = isCompatEnabled(key, context);
+  return enabled;
+}
+function warnDeprecation(key, context, loc, ...args) {
+  const val = getCompatValue(key, context);
+  if (val === "suppress-warning") {
+    return;
+  }
+  const { message, link } = deprecationData[key];
+  const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? `
+  Details: ${link}` : ``}`;
+  const err = new SyntaxError(msg);
+  err.code = key;
+  if (loc)
+    err.loc = loc;
+  context.onWarn(err);
+}
+
+const decodeRE = /&(gt|lt|amp|apos|quot);/g;
+const decodeMap = {
+  gt: ">",
+  lt: "<",
+  amp: "&",
+  apos: "'",
+  quot: '"'
+};
+const defaultParserOptions = {
+  delimiters: [`{{`, `}}`],
+  getNamespace: () => 0,
+  getTextMode: () => 0,
+  isVoidTag: shared.NO,
+  isPreTag: shared.NO,
+  isCustomElement: shared.NO,
+  decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
+  onError: defaultOnError,
+  onWarn: defaultOnWarn,
+  comments: false
+};
+function baseParse(content, options = {}) {
+  const context = createParserContext(content, options);
+  const start = getCursor(context);
+  return createRoot(
+    parseChildren(context, 0, []),
+    getSelection(context, start)
+  );
+}
+function createParserContext(content, rawOptions) {
+  const options = shared.extend({}, defaultParserOptions);
+  let key;
+  for (key in rawOptions) {
+    options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key];
+  }
+  return {
+    options,
+    column: 1,
+    line: 1,
+    offset: 0,
+    originalSource: content,
+    source: content,
+    inPre: false,
+    inVPre: false,
+    onWarn: options.onWarn
+  };
+}
+function parseChildren(context, mode, ancestors) {
+  const parent = last(ancestors);
+  const ns = parent ? parent.ns : 0;
+  const nodes = [];
+  while (!isEnd(context, mode, ancestors)) {
+    const s = context.source;
+    let node = void 0;
+    if (mode === 0 || mode === 1) {
+      if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {
+        node = parseInterpolation(context, mode);
+      } else if (mode === 0 && s[0] === "<") {
+        if (s.length === 1) {
+          emitError(context, 5, 1);
+        } else if (s[1] === "!") {
+          if (startsWith(s, "<!--")) {
+            node = parseComment(context);
+          } else if (startsWith(s, "<!DOCTYPE")) {
+            node = parseBogusComment(context);
+          } else if (startsWith(s, "<![CDATA[")) {
+            if (ns !== 0) {
+              node = parseCDATA(context, ancestors);
+            } else {
+              emitError(context, 1);
+              node = parseBogusComment(context);
+            }
+          } else {
+            emitError(context, 11);
+            node = parseBogusComment(context);
+          }
+        } else if (s[1] === "/") {
+          if (s.length === 2) {
+            emitError(context, 5, 2);
+          } else if (s[2] === ">") {
+            emitError(context, 14, 2);
+            advanceBy(context, 3);
+            continue;
+          } else if (/[a-z]/i.test(s[2])) {
+            emitError(context, 23);
+            parseTag(context, TagType.End, parent);
+            continue;
+          } else {
+            emitError(
+              context,
+              12,
+              2
+            );
+            node = parseBogusComment(context);
+          }
+        } else if (/[a-z]/i.test(s[1])) {
+          node = parseElement(context, ancestors);
+          if (isCompatEnabled(
+            "COMPILER_NATIVE_TEMPLATE",
+            context
+          ) && node && node.tag === "template" && !node.props.some(
+            (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+          )) {
+            node = node.children;
+          }
+        } else if (s[1] === "?") {
+          emitError(
+            context,
+            21,
+            1
+          );
+          node = parseBogusComment(context);
+        } else {
+          emitError(context, 12, 1);
+        }
+      }
+    }
+    if (!node) {
+      node = parseText(context, mode);
+    }
+    if (shared.isArray(node)) {
+      for (let i = 0; i < node.length; i++) {
+        pushNode(nodes, node[i]);
+      }
+    } else {
+      pushNode(nodes, node);
+    }
+  }
+  let removedWhitespace = false;
+  if (mode !== 2 && mode !== 1) {
+    const shouldCondense = context.options.whitespace !== "preserve";
+    for (let i = 0; i < nodes.length; i++) {
+      const node = nodes[i];
+      if (node.type === 2) {
+        if (!context.inPre) {
+          if (!/[^\t\r\n\f ]/.test(node.content)) {
+            const prev = nodes[i - 1];
+            const next = nodes[i + 1];
+            if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) {
+              removedWhitespace = true;
+              nodes[i] = null;
+            } else {
+              node.content = " ";
+            }
+          } else if (shouldCondense) {
+            node.content = node.content.replace(/[\t\r\n\f ]+/g, " ");
+          }
+        } else {
+          node.content = node.content.replace(/\r\n/g, "\n");
+        }
+      } else if (node.type === 3 && !context.options.comments) {
+        removedWhitespace = true;
+        nodes[i] = null;
+      }
+    }
+    if (context.inPre && parent && context.options.isPreTag(parent.tag)) {
+      const first = nodes[0];
+      if (first && first.type === 2) {
+        first.content = first.content.replace(/^\r?\n/, "");
+      }
+    }
+  }
+  return removedWhitespace ? nodes.filter(Boolean) : nodes;
+}
+function pushNode(nodes, node) {
+  if (node.type === 2) {
+    const prev = last(nodes);
+    if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) {
+      prev.content += node.content;
+      prev.loc.end = node.loc.end;
+      prev.loc.source += node.loc.source;
+      return;
+    }
+  }
+  nodes.push(node);
+}
+function parseCDATA(context, ancestors) {
+  advanceBy(context, 9);
+  const nodes = parseChildren(context, 3, ancestors);
+  if (context.source.length === 0) {
+    emitError(context, 6);
+  } else {
+    advanceBy(context, 3);
+  }
+  return nodes;
+}
+function parseComment(context) {
+  const start = getCursor(context);
+  let content;
+  const match = /--(\!)?>/.exec(context.source);
+  if (!match) {
+    content = context.source.slice(4);
+    advanceBy(context, context.source.length);
+    emitError(context, 7);
+  } else {
+    if (match.index <= 3) {
+      emitError(context, 0);
+    }
+    if (match[1]) {
+      emitError(context, 10);
+    }
+    content = context.source.slice(4, match.index);
+    const s = context.source.slice(0, match.index);
+    let prevIndex = 1, nestedIndex = 0;
+    while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) {
+      advanceBy(context, nestedIndex - prevIndex + 1);
+      if (nestedIndex + 4 < s.length) {
+        emitError(context, 16);
+      }
+      prevIndex = nestedIndex + 1;
+    }
+    advanceBy(context, match.index + match[0].length - prevIndex + 1);
+  }
+  return {
+    type: 3,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseBogusComment(context) {
+  const start = getCursor(context);
+  const contentStart = context.source[1] === "?" ? 1 : 2;
+  let content;
+  const closeIndex = context.source.indexOf(">");
+  if (closeIndex === -1) {
+    content = context.source.slice(contentStart);
+    advanceBy(context, context.source.length);
+  } else {
+    content = context.source.slice(contentStart, closeIndex);
+    advanceBy(context, closeIndex + 1);
+  }
+  return {
+    type: 3,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseElement(context, ancestors) {
+  const wasInPre = context.inPre;
+  const wasInVPre = context.inVPre;
+  const parent = last(ancestors);
+  const element = parseTag(context, TagType.Start, parent);
+  const isPreBoundary = context.inPre && !wasInPre;
+  const isVPreBoundary = context.inVPre && !wasInVPre;
+  if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
+    if (isPreBoundary) {
+      context.inPre = false;
+    }
+    if (isVPreBoundary) {
+      context.inVPre = false;
+    }
+    return element;
+  }
+  ancestors.push(element);
+  const mode = context.options.getTextMode(element, parent);
+  const children = parseChildren(context, mode, ancestors);
+  ancestors.pop();
+  {
+    const inlineTemplateProp = element.props.find(
+      (p) => p.type === 6 && p.name === "inline-template"
+    );
+    if (inlineTemplateProp && checkCompatEnabled(
+      "COMPILER_INLINE_TEMPLATE",
+      context,
+      inlineTemplateProp.loc
+    )) {
+      const loc = getSelection(context, element.loc.end);
+      inlineTemplateProp.value = {
+        type: 2,
+        content: loc.source,
+        loc
+      };
+    }
+  }
+  element.children = children;
+  if (startsWithEndTagOpen(context.source, element.tag)) {
+    parseTag(context, TagType.End, parent);
+  } else {
+    emitError(context, 24, 0, element.loc.start);
+    if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
+      const first = children[0];
+      if (first && startsWith(first.loc.source, "<!--")) {
+        emitError(context, 8);
+      }
+    }
+  }
+  element.loc = getSelection(context, element.loc.start);
+  if (isPreBoundary) {
+    context.inPre = false;
+  }
+  if (isVPreBoundary) {
+    context.inVPre = false;
+  }
+  return element;
+}
+var TagType = /* @__PURE__ */ ((TagType2) => {
+  TagType2[TagType2["Start"] = 0] = "Start";
+  TagType2[TagType2["End"] = 1] = "End";
+  return TagType2;
+})(TagType || {});
+const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap(
+  `if,else,else-if,for,slot`
+);
+function parseTag(context, type, parent) {
+  const start = getCursor(context);
+  const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);
+  const tag = match[1];
+  const ns = context.options.getNamespace(tag, parent);
+  advanceBy(context, match[0].length);
+  advanceSpaces(context);
+  const cursor = getCursor(context);
+  const currentSource = context.source;
+  if (context.options.isPreTag(tag)) {
+    context.inPre = true;
+  }
+  let props = parseAttributes(context, type);
+  if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) {
+    context.inVPre = true;
+    shared.extend(context, cursor);
+    context.source = currentSource;
+    props = parseAttributes(context, type).filter((p) => p.name !== "v-pre");
+  }
+  let isSelfClosing = false;
+  if (context.source.length === 0) {
+    emitError(context, 9);
+  } else {
+    isSelfClosing = startsWith(context.source, "/>");
+    if (type === 1 /* End */ && isSelfClosing) {
+      emitError(context, 4);
+    }
+    advanceBy(context, isSelfClosing ? 2 : 1);
+  }
+  if (type === 1 /* End */) {
+    return;
+  }
+  let tagType = 0;
+  if (!context.inVPre) {
+    if (tag === "slot") {
+      tagType = 2;
+    } else if (tag === "template") {
+      if (props.some(
+        (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+      )) {
+        tagType = 3;
+      }
+    } else if (isComponent(tag, props, context)) {
+      tagType = 1;
+    }
+  }
+  return {
+    type: 1,
+    ns,
+    tag,
+    tagType,
+    props,
+    isSelfClosing,
+    children: [],
+    loc: getSelection(context, start),
+    codegenNode: void 0
+    // to be created during transform phase
+  };
+}
+function isComponent(tag, props, context) {
+  const options = context.options;
+  if (options.isCustomElement(tag)) {
+    return false;
+  }
+  if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) {
+    return true;
+  }
+  for (let i = 0; i < props.length; i++) {
+    const p = props[i];
+    if (p.type === 6) {
+      if (p.name === "is" && p.value) {
+        if (p.value.content.startsWith("vue:")) {
+          return true;
+        } else if (checkCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context,
+          p.loc
+        )) {
+          return true;
+        }
+      }
+    } else {
+      if (p.name === "is") {
+        return true;
+      } else if (
+        // :is on plain element - only treat as component in compat mode
+        p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context,
+          p.loc
+        )
+      ) {
+        return true;
+      }
+    }
+  }
+}
+function parseAttributes(context, type) {
+  const props = [];
+  const attributeNames = /* @__PURE__ */ new Set();
+  while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) {
+    if (startsWith(context.source, "/")) {
+      emitError(context, 22);
+      advanceBy(context, 1);
+      advanceSpaces(context);
+      continue;
+    }
+    if (type === 1 /* End */) {
+      emitError(context, 3);
+    }
+    const attr = parseAttribute(context, attributeNames);
+    if (attr.type === 6 && attr.value && attr.name === "class") {
+      attr.value.content = attr.value.content.replace(/\s+/g, " ").trim();
+    }
+    if (type === 0 /* Start */) {
+      props.push(attr);
+    }
+    if (/^[^\t\r\n\f />]/.test(context.source)) {
+      emitError(context, 15);
+    }
+    advanceSpaces(context);
+  }
+  return props;
+}
+function parseAttribute(context, nameSet) {
+  var _a;
+  const start = getCursor(context);
+  const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);
+  const name = match[0];
+  if (nameSet.has(name)) {
+    emitError(context, 2);
+  }
+  nameSet.add(name);
+  if (name[0] === "=") {
+    emitError(context, 19);
+  }
+  {
+    const pattern = /["'<]/g;
+    let m;
+    while (m = pattern.exec(name)) {
+      emitError(
+        context,
+        17,
+        m.index
+      );
+    }
+  }
+  advanceBy(context, name.length);
+  let value = void 0;
+  if (/^[\t\r\n\f ]*=/.test(context.source)) {
+    advanceSpaces(context);
+    advanceBy(context, 1);
+    advanceSpaces(context);
+    value = parseAttributeValue(context);
+    if (!value) {
+      emitError(context, 13);
+    }
+  }
+  const loc = getSelection(context, start);
+  if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {
+    const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(
+      name
+    );
+    let isPropShorthand = startsWith(name, ".");
+    let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot");
+    let arg;
+    if (match2[2]) {
+      const isSlot = dirName === "slot";
+      const startOffset = name.lastIndexOf(
+        match2[2],
+        name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0)
+      );
+      const loc2 = getSelection(
+        context,
+        getNewPosition(context, start, startOffset),
+        getNewPosition(
+          context,
+          start,
+          startOffset + match2[2].length + (isSlot && match2[3] || "").length
+        )
+      );
+      let content = match2[2];
+      let isStatic = true;
+      if (content.startsWith("[")) {
+        isStatic = false;
+        if (!content.endsWith("]")) {
+          emitError(
+            context,
+            27
+          );
+          content = content.slice(1);
+        } else {
+          content = content.slice(1, content.length - 1);
+        }
+      } else if (isSlot) {
+        content += match2[3] || "";
+      }
+      arg = {
+        type: 4,
+        content,
+        isStatic,
+        constType: isStatic ? 3 : 0,
+        loc: loc2
+      };
+    }
+    if (value && value.isQuoted) {
+      const valueLoc = value.loc;
+      valueLoc.start.offset++;
+      valueLoc.start.column++;
+      valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);
+      valueLoc.source = valueLoc.source.slice(1, -1);
+    }
+    const modifiers = match2[3] ? match2[3].slice(1).split(".") : [];
+    if (isPropShorthand)
+      modifiers.push("prop");
+    if (dirName === "bind" && arg) {
+      if (modifiers.includes("sync") && checkCompatEnabled(
+        "COMPILER_V_BIND_SYNC",
+        context,
+        loc,
+        arg.loc.source
+      )) {
+        dirName = "model";
+        modifiers.splice(modifiers.indexOf("sync"), 1);
+      }
+    }
+    return {
+      type: 7,
+      name: dirName,
+      exp: value && {
+        type: 4,
+        content: value.content,
+        isStatic: false,
+        // Treat as non-constant by default. This can be potentially set to
+        // other values by `transformExpression` to make it eligible for hoisting.
+        constType: 0,
+        loc: value.loc
+      },
+      arg,
+      modifiers,
+      loc
+    };
+  }
+  if (!context.inVPre && startsWith(name, "v-")) {
+    emitError(context, 26);
+  }
+  return {
+    type: 6,
+    name,
+    value: value && {
+      type: 2,
+      content: value.content,
+      loc: value.loc
+    },
+    loc
+  };
+}
+function parseAttributeValue(context) {
+  const start = getCursor(context);
+  let content;
+  const quote = context.source[0];
+  const isQuoted = quote === `"` || quote === `'`;
+  if (isQuoted) {
+    advanceBy(context, 1);
+    const endIndex = context.source.indexOf(quote);
+    if (endIndex === -1) {
+      content = parseTextData(
+        context,
+        context.source.length,
+        4
+      );
+    } else {
+      content = parseTextData(context, endIndex, 4);
+      advanceBy(context, 1);
+    }
+  } else {
+    const match = /^[^\t\r\n\f >]+/.exec(context.source);
+    if (!match) {
+      return void 0;
+    }
+    const unexpectedChars = /["'<=`]/g;
+    let m;
+    while (m = unexpectedChars.exec(match[0])) {
+      emitError(
+        context,
+        18,
+        m.index
+      );
+    }
+    content = parseTextData(context, match[0].length, 4);
+  }
+  return { content, isQuoted, loc: getSelection(context, start) };
+}
+function parseInterpolation(context, mode) {
+  const [open, close] = context.options.delimiters;
+  const closeIndex = context.source.indexOf(close, open.length);
+  if (closeIndex === -1) {
+    emitError(context, 25);
+    return void 0;
+  }
+  const start = getCursor(context);
+  advanceBy(context, open.length);
+  const innerStart = getCursor(context);
+  const innerEnd = getCursor(context);
+  const rawContentLength = closeIndex - open.length;
+  const rawContent = context.source.slice(0, rawContentLength);
+  const preTrimContent = parseTextData(context, rawContentLength, mode);
+  const content = preTrimContent.trim();
+  const startOffset = preTrimContent.indexOf(content);
+  if (startOffset > 0) {
+    advancePositionWithMutation(innerStart, rawContent, startOffset);
+  }
+  const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);
+  advancePositionWithMutation(innerEnd, rawContent, endOffset);
+  advanceBy(context, close.length);
+  return {
+    type: 5,
+    content: {
+      type: 4,
+      isStatic: false,
+      // Set `isConstant` to false by default and will decide in transformExpression
+      constType: 0,
+      content,
+      loc: getSelection(context, innerStart, innerEnd)
+    },
+    loc: getSelection(context, start)
+  };
+}
+function parseText(context, mode) {
+  const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]];
+  let endIndex = context.source.length;
+  for (let i = 0; i < endTokens.length; i++) {
+    const index = context.source.indexOf(endTokens[i], 1);
+    if (index !== -1 && endIndex > index) {
+      endIndex = index;
+    }
+  }
+  const start = getCursor(context);
+  const content = parseTextData(context, endIndex, mode);
+  return {
+    type: 2,
+    content,
+    loc: getSelection(context, start)
+  };
+}
+function parseTextData(context, length, mode) {
+  const rawText = context.source.slice(0, length);
+  advanceBy(context, length);
+  if (mode === 2 || mode === 3 || !rawText.includes("&")) {
+    return rawText;
+  } else {
+    return context.options.decodeEntities(
+      rawText,
+      mode === 4
+    );
+  }
+}
+function getCursor(context) {
+  const { column, line, offset } = context;
+  return { column, line, offset };
+}
+function getSelection(context, start, end) {
+  end = end || getCursor(context);
+  return {
+    start,
+    end,
+    source: context.originalSource.slice(start.offset, end.offset)
+  };
+}
+function last(xs) {
+  return xs[xs.length - 1];
+}
+function startsWith(source, searchString) {
+  return source.startsWith(searchString);
+}
+function advanceBy(context, numberOfCharacters) {
+  const { source } = context;
+  advancePositionWithMutation(context, source, numberOfCharacters);
+  context.source = source.slice(numberOfCharacters);
+}
+function advanceSpaces(context) {
+  const match = /^[\t\r\n\f ]+/.exec(context.source);
+  if (match) {
+    advanceBy(context, match[0].length);
+  }
+}
+function getNewPosition(context, start, numberOfCharacters) {
+  return advancePositionWithClone(
+    start,
+    context.originalSource.slice(start.offset, numberOfCharacters),
+    numberOfCharacters
+  );
+}
+function emitError(context, code, offset, loc = getCursor(context)) {
+  if (offset) {
+    loc.offset += offset;
+    loc.column += offset;
+  }
+  context.options.onError(
+    createCompilerError(code, {
+      start: loc,
+      end: loc,
+      source: ""
+    })
+  );
+}
+function isEnd(context, mode, ancestors) {
+  const s = context.source;
+  switch (mode) {
+    case 0:
+      if (startsWith(s, "</")) {
+        for (let i = ancestors.length - 1; i >= 0; --i) {
+          if (startsWithEndTagOpen(s, ancestors[i].tag)) {
+            return true;
+          }
+        }
+      }
+      break;
+    case 1:
+    case 2: {
+      const parent = last(ancestors);
+      if (parent && startsWithEndTagOpen(s, parent.tag)) {
+        return true;
+      }
+      break;
+    }
+    case 3:
+      if (startsWith(s, "]]>")) {
+        return true;
+      }
+      break;
+  }
+  return !s;
+}
+function startsWithEndTagOpen(source, tag) {
+  return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">");
+}
+
+function hoistStatic(root, context) {
+  walk(
+    root,
+    context,
+    // Root node is unfortunately non-hoistable due to potential parent
+    // fallthrough attributes.
+    isSingleElementRoot(root, root.children[0])
+  );
+}
+function isSingleElementRoot(root, child) {
+  const { children } = root;
+  return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
+}
+function walk(node, context, doNotHoistNode = false) {
+  const { children } = node;
+  const originalCount = children.length;
+  let hoistedCount = 0;
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+    if (child.type === 1 && child.tagType === 0) {
+      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
+      if (constantType > 0) {
+        if (constantType >= 2) {
+          child.codegenNode.patchFlag = -1 + (``);
+          child.codegenNode = context.hoist(child.codegenNode);
+          hoistedCount++;
+          continue;
+        }
+      } else {
+        const codegenNode = child.codegenNode;
+        if (codegenNode.type === 13) {
+          const flag = getPatchFlag(codegenNode);
+          if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {
+            const props = getNodeProps(child);
+            if (props) {
+              codegenNode.props = context.hoist(props);
+            }
+          }
+          if (codegenNode.dynamicProps) {
+            codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
+          }
+        }
+      }
+    }
+    if (child.type === 1) {
+      const isComponent = child.tagType === 1;
+      if (isComponent) {
+        context.scopes.vSlot++;
+      }
+      walk(child, context);
+      if (isComponent) {
+        context.scopes.vSlot--;
+      }
+    } else if (child.type === 11) {
+      walk(child, context, child.children.length === 1);
+    } else if (child.type === 9) {
+      for (let i2 = 0; i2 < child.branches.length; i2++) {
+        walk(
+          child.branches[i2],
+          context,
+          child.branches[i2].children.length === 1
+        );
+      }
+    }
+  }
+  if (hoistedCount && context.transformHoist) {
+    context.transformHoist(children, context, node);
+  }
+  if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) {
+    node.codegenNode.children = context.hoist(
+      createArrayExpression(node.codegenNode.children)
+    );
+  }
+}
+function getConstantType(node, context) {
+  const { constantCache } = context;
+  switch (node.type) {
+    case 1:
+      if (node.tagType !== 0) {
+        return 0;
+      }
+      const cached = constantCache.get(node);
+      if (cached !== void 0) {
+        return cached;
+      }
+      const codegenNode = node.codegenNode;
+      if (codegenNode.type !== 13) {
+        return 0;
+      }
+      if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") {
+        return 0;
+      }
+      const flag = getPatchFlag(codegenNode);
+      if (!flag) {
+        let returnType2 = 3;
+        const generatedPropsType = getGeneratedPropsConstantType(node, context);
+        if (generatedPropsType === 0) {
+          constantCache.set(node, 0);
+          return 0;
+        }
+        if (generatedPropsType < returnType2) {
+          returnType2 = generatedPropsType;
+        }
+        for (let i = 0; i < node.children.length; i++) {
+          const childType = getConstantType(node.children[i], context);
+          if (childType === 0) {
+            constantCache.set(node, 0);
+            return 0;
+          }
+          if (childType < returnType2) {
+            returnType2 = childType;
+          }
+        }
+        if (returnType2 > 1) {
+          for (let i = 0; i < node.props.length; i++) {
+            const p = node.props[i];
+            if (p.type === 7 && p.name === "bind" && p.exp) {
+              const expType = getConstantType(p.exp, context);
+              if (expType === 0) {
+                constantCache.set(node, 0);
+                return 0;
+              }
+              if (expType < returnType2) {
+                returnType2 = expType;
+              }
+            }
+          }
+        }
+        if (codegenNode.isBlock) {
+          for (let i = 0; i < node.props.length; i++) {
+            const p = node.props[i];
+            if (p.type === 7) {
+              constantCache.set(node, 0);
+              return 0;
+            }
+          }
+          context.removeHelper(OPEN_BLOCK);
+          context.removeHelper(
+            getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)
+          );
+          codegenNode.isBlock = false;
+          context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
+        }
+        constantCache.set(node, returnType2);
+        return returnType2;
+      } else {
+        constantCache.set(node, 0);
+        return 0;
+      }
+    case 2:
+    case 3:
+      return 3;
+    case 9:
+    case 11:
+    case 10:
+      return 0;
+    case 5:
+    case 12:
+      return getConstantType(node.content, context);
+    case 4:
+      return node.constType;
+    case 8:
+      let returnType = 3;
+      for (let i = 0; i < node.children.length; i++) {
+        const child = node.children[i];
+        if (shared.isString(child) || shared.isSymbol(child)) {
+          continue;
+        }
+        const childType = getConstantType(child, context);
+        if (childType === 0) {
+          return 0;
+        } else if (childType < returnType) {
+          returnType = childType;
+        }
+      }
+      return returnType;
+    default:
+      return 0;
+  }
+}
+const allowHoistedHelperSet = /* @__PURE__ */ new Set([
+  NORMALIZE_CLASS,
+  NORMALIZE_STYLE,
+  NORMALIZE_PROPS,
+  GUARD_REACTIVE_PROPS
+]);
+function getConstantTypeOfHelperCall(value, context) {
+  if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {
+    const arg = value.arguments[0];
+    if (arg.type === 4) {
+      return getConstantType(arg, context);
+    } else if (arg.type === 14) {
+      return getConstantTypeOfHelperCall(arg, context);
+    }
+  }
+  return 0;
+}
+function getGeneratedPropsConstantType(node, context) {
+  let returnType = 3;
+  const props = getNodeProps(node);
+  if (props && props.type === 15) {
+    const { properties } = props;
+    for (let i = 0; i < properties.length; i++) {
+      const { key, value } = properties[i];
+      const keyType = getConstantType(key, context);
+      if (keyType === 0) {
+        return keyType;
+      }
+      if (keyType < returnType) {
+        returnType = keyType;
+      }
+      let valueType;
+      if (value.type === 4) {
+        valueType = getConstantType(value, context);
+      } else if (value.type === 14) {
+        valueType = getConstantTypeOfHelperCall(value, context);
+      } else {
+        valueType = 0;
+      }
+      if (valueType === 0) {
+        return valueType;
+      }
+      if (valueType < returnType) {
+        returnType = valueType;
+      }
+    }
+  }
+  return returnType;
+}
+function getNodeProps(node) {
+  const codegenNode = node.codegenNode;
+  if (codegenNode.type === 13) {
+    return codegenNode.props;
+  }
+}
+function getPatchFlag(node) {
+  const flag = node.patchFlag;
+  return flag ? parseInt(flag, 10) : void 0;
+}
+
+function createTransformContext(root, {
+  filename = "",
+  prefixIdentifiers = false,
+  hoistStatic: hoistStatic2 = false,
+  cacheHandlers = false,
+  nodeTransforms = [],
+  directiveTransforms = {},
+  transformHoist = null,
+  isBuiltInComponent = shared.NOOP,
+  isCustomElement = shared.NOOP,
+  expressionPlugins = [],
+  scopeId = null,
+  slotted = true,
+  ssr = false,
+  inSSR = false,
+  ssrCssVars = ``,
+  bindingMetadata = shared.EMPTY_OBJ,
+  inline = false,
+  isTS = false,
+  onError = defaultOnError,
+  onWarn = defaultOnWarn,
+  compatConfig
+}) {
+  const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/);
+  const context = {
+    // options
+    selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])),
+    prefixIdentifiers,
+    hoistStatic: hoistStatic2,
+    cacheHandlers,
+    nodeTransforms,
+    directiveTransforms,
+    transformHoist,
+    isBuiltInComponent,
+    isCustomElement,
+    expressionPlugins,
+    scopeId,
+    slotted,
+    ssr,
+    inSSR,
+    ssrCssVars,
+    bindingMetadata,
+    inline,
+    isTS,
+    onError,
+    onWarn,
+    compatConfig,
+    // state
+    root,
+    helpers: /* @__PURE__ */ new Map(),
+    components: /* @__PURE__ */ new Set(),
+    directives: /* @__PURE__ */ new Set(),
+    hoists: [],
+    imports: [],
+    constantCache: /* @__PURE__ */ new Map(),
+    temps: 0,
+    cached: 0,
+    identifiers: /* @__PURE__ */ Object.create(null),
+    scopes: {
+      vFor: 0,
+      vSlot: 0,
+      vPre: 0,
+      vOnce: 0
+    },
+    parent: null,
+    currentNode: root,
+    childIndex: 0,
+    inVOnce: false,
+    // methods
+    helper(name) {
+      const count = context.helpers.get(name) || 0;
+      context.helpers.set(name, count + 1);
+      return name;
+    },
+    removeHelper(name) {
+      const count = context.helpers.get(name);
+      if (count) {
+        const currentCount = count - 1;
+        if (!currentCount) {
+          context.helpers.delete(name);
+        } else {
+          context.helpers.set(name, currentCount);
+        }
+      }
+    },
+    helperString(name) {
+      return `_${helperNameMap[context.helper(name)]}`;
+    },
+    replaceNode(node) {
+      context.parent.children[context.childIndex] = context.currentNode = node;
+    },
+    removeNode(node) {
+      const list = context.parent.children;
+      const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;
+      if (!node || node === context.currentNode) {
+        context.currentNode = null;
+        context.onNodeRemoved();
+      } else {
+        if (context.childIndex > removalIndex) {
+          context.childIndex--;
+          context.onNodeRemoved();
+        }
+      }
+      context.parent.children.splice(removalIndex, 1);
+    },
+    onNodeRemoved: () => {
+    },
+    addIdentifiers(exp) {
+      {
+        if (shared.isString(exp)) {
+          addId(exp);
+        } else if (exp.identifiers) {
+          exp.identifiers.forEach(addId);
+        } else if (exp.type === 4) {
+          addId(exp.content);
+        }
+      }
+    },
+    removeIdentifiers(exp) {
+      {
+        if (shared.isString(exp)) {
+          removeId(exp);
+        } else if (exp.identifiers) {
+          exp.identifiers.forEach(removeId);
+        } else if (exp.type === 4) {
+          removeId(exp.content);
+        }
+      }
+    },
+    hoist(exp) {
+      if (shared.isString(exp))
+        exp = createSimpleExpression(exp);
+      context.hoists.push(exp);
+      const identifier = createSimpleExpression(
+        `_hoisted_${context.hoists.length}`,
+        false,
+        exp.loc,
+        2
+      );
+      identifier.hoisted = exp;
+      return identifier;
+    },
+    cache(exp, isVNode = false) {
+      return createCacheExpression(context.cached++, exp, isVNode);
+    }
+  };
+  {
+    context.filters = /* @__PURE__ */ new Set();
+  }
+  function addId(id) {
+    const { identifiers } = context;
+    if (identifiers[id] === void 0) {
+      identifiers[id] = 0;
+    }
+    identifiers[id]++;
+  }
+  function removeId(id) {
+    context.identifiers[id]--;
+  }
+  return context;
+}
+function transform(root, options) {
+  const context = createTransformContext(root, options);
+  traverseNode(root, context);
+  if (options.hoistStatic) {
+    hoistStatic(root, context);
+  }
+  if (!options.ssr) {
+    createRootCodegen(root, context);
+  }
+  root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);
+  root.components = [...context.components];
+  root.directives = [...context.directives];
+  root.imports = context.imports;
+  root.hoists = context.hoists;
+  root.temps = context.temps;
+  root.cached = context.cached;
+  {
+    root.filters = [...context.filters];
+  }
+}
+function createRootCodegen(root, context) {
+  const { helper } = context;
+  const { children } = root;
+  if (children.length === 1) {
+    const child = children[0];
+    if (isSingleElementRoot(root, child) && child.codegenNode) {
+      const codegenNode = child.codegenNode;
+      if (codegenNode.type === 13) {
+        convertToBlock(codegenNode, context);
+      }
+      root.codegenNode = codegenNode;
+    } else {
+      root.codegenNode = child;
+    }
+  } else if (children.length > 1) {
+    let patchFlag = 64;
+    shared.PatchFlagNames[64];
+    root.codegenNode = createVNodeCall(
+      context,
+      helper(FRAGMENT),
+      void 0,
+      root.children,
+      patchFlag + (``),
+      void 0,
+      void 0,
+      true,
+      void 0,
+      false
+      /* isComponent */
+    );
+  } else ;
+}
+function traverseChildren(parent, context) {
+  let i = 0;
+  const nodeRemoved = () => {
+    i--;
+  };
+  for (; i < parent.children.length; i++) {
+    const child = parent.children[i];
+    if (shared.isString(child))
+      continue;
+    context.parent = parent;
+    context.childIndex = i;
+    context.onNodeRemoved = nodeRemoved;
+    traverseNode(child, context);
+  }
+}
+function traverseNode(node, context) {
+  context.currentNode = node;
+  const { nodeTransforms } = context;
+  const exitFns = [];
+  for (let i2 = 0; i2 < nodeTransforms.length; i2++) {
+    const onExit = nodeTransforms[i2](node, context);
+    if (onExit) {
+      if (shared.isArray(onExit)) {
+        exitFns.push(...onExit);
+      } else {
+        exitFns.push(onExit);
+      }
+    }
+    if (!context.currentNode) {
+      return;
+    } else {
+      node = context.currentNode;
+    }
+  }
+  switch (node.type) {
+    case 3:
+      if (!context.ssr) {
+        context.helper(CREATE_COMMENT);
+      }
+      break;
+    case 5:
+      if (!context.ssr) {
+        context.helper(TO_DISPLAY_STRING);
+      }
+      break;
+    case 9:
+      for (let i2 = 0; i2 < node.branches.length; i2++) {
+        traverseNode(node.branches[i2], context);
+      }
+      break;
+    case 10:
+    case 11:
+    case 1:
+    case 0:
+      traverseChildren(node, context);
+      break;
+  }
+  context.currentNode = node;
+  let i = exitFns.length;
+  while (i--) {
+    exitFns[i]();
+  }
+}
+function createStructuralDirectiveTransform(name, fn) {
+  const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n);
+  return (node, context) => {
+    if (node.type === 1) {
+      const { props } = node;
+      if (node.tagType === 3 && props.some(isVSlot)) {
+        return;
+      }
+      const exitFns = [];
+      for (let i = 0; i < props.length; i++) {
+        const prop = props[i];
+        if (prop.type === 7 && matches(prop.name)) {
+          props.splice(i, 1);
+          i--;
+          const onExit = fn(node, prop, context);
+          if (onExit)
+            exitFns.push(onExit);
+        }
+      }
+      return exitFns;
+    }
+  };
+}
+
+const PURE_ANNOTATION = `/*#__PURE__*/`;
+const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
+function createCodegenContext(ast, {
+  mode = "function",
+  prefixIdentifiers = mode === "module",
+  sourceMap = false,
+  filename = `template.vue.html`,
+  scopeId = null,
+  optimizeImports = false,
+  runtimeGlobalName = `Vue`,
+  runtimeModuleName = `vue`,
+  ssrRuntimeModuleName = "vue/server-renderer",
+  ssr = false,
+  isTS = false,
+  inSSR = false
+}) {
+  const context = {
+    mode,
+    prefixIdentifiers,
+    sourceMap,
+    filename,
+    scopeId,
+    optimizeImports,
+    runtimeGlobalName,
+    runtimeModuleName,
+    ssrRuntimeModuleName,
+    ssr,
+    isTS,
+    inSSR,
+    source: ast.loc.source,
+    code: ``,
+    column: 1,
+    line: 1,
+    offset: 0,
+    indentLevel: 0,
+    pure: false,
+    map: void 0,
+    helper(key) {
+      return `_${helperNameMap[key]}`;
+    },
+    push(code, node) {
+      context.code += code;
+      if (context.map) {
+        if (node) {
+          let name;
+          if (node.type === 4 && !node.isStatic) {
+            const content = node.content.replace(/^_ctx\./, "");
+            if (content !== node.content && isSimpleIdentifier(content)) {
+              name = content;
+            }
+          }
+          addMapping(node.loc.start, name);
+        }
+        advancePositionWithMutation(context, code);
+        if (node && node.loc !== locStub) {
+          addMapping(node.loc.end);
+        }
+      }
+    },
+    indent() {
+      newline(++context.indentLevel);
+    },
+    deindent(withoutNewLine = false) {
+      if (withoutNewLine) {
+        --context.indentLevel;
+      } else {
+        newline(--context.indentLevel);
+      }
+    },
+    newline() {
+      newline(context.indentLevel);
+    }
+  };
+  function newline(n) {
+    context.push("\n" + `  `.repeat(n));
+  }
+  function addMapping(loc, name) {
+    context.map.addMapping({
+      name,
+      source: context.filename,
+      original: {
+        line: loc.line,
+        column: loc.column - 1
+        // source-map column is 0 based
+      },
+      generated: {
+        line: context.line,
+        column: context.column - 1
+      }
+    });
+  }
+  if (sourceMap) {
+    context.map = new sourceMapJs.SourceMapGenerator();
+    context.map.setSourceContent(filename, context.source);
+  }
+  return context;
+}
+function generate(ast, options = {}) {
+  const context = createCodegenContext(ast, options);
+  if (options.onContextCreated)
+    options.onContextCreated(context);
+  const {
+    mode,
+    push,
+    prefixIdentifiers,
+    indent,
+    deindent,
+    newline,
+    scopeId,
+    ssr
+  } = context;
+  const helpers = Array.from(ast.helpers);
+  const hasHelpers = helpers.length > 0;
+  const useWithBlock = !prefixIdentifiers && mode !== "module";
+  const genScopeId = scopeId != null && mode === "module";
+  const isSetupInlined = !!options.inline;
+  const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;
+  if (mode === "module") {
+    genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined);
+  } else {
+    genFunctionPreamble(ast, preambleContext);
+  }
+  const functionName = ssr ? `ssrRender` : `render`;
+  const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"];
+  if (options.bindingMetadata && !options.inline) {
+    args.push("$props", "$setup", "$data", "$options");
+  }
+  const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", ");
+  if (isSetupInlined) {
+    push(`(${signature}) => {`);
+  } else {
+    push(`function ${functionName}(${signature}) {`);
+  }
+  indent();
+  if (useWithBlock) {
+    push(`with (_ctx) {`);
+    indent();
+    if (hasHelpers) {
+      push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`);
+      push(`
+`);
+      newline();
+    }
+  }
+  if (ast.components.length) {
+    genAssets(ast.components, "component", context);
+    if (ast.directives.length || ast.temps > 0) {
+      newline();
+    }
+  }
+  if (ast.directives.length) {
+    genAssets(ast.directives, "directive", context);
+    if (ast.temps > 0) {
+      newline();
+    }
+  }
+  if (ast.filters && ast.filters.length) {
+    newline();
+    genAssets(ast.filters, "filter", context);
+    newline();
+  }
+  if (ast.temps > 0) {
+    push(`let `);
+    for (let i = 0; i < ast.temps; i++) {
+      push(`${i > 0 ? `, ` : ``}_temp${i}`);
+    }
+  }
+  if (ast.components.length || ast.directives.length || ast.temps) {
+    push(`
+`);
+    newline();
+  }
+  if (!ssr) {
+    push(`return `);
+  }
+  if (ast.codegenNode) {
+    genNode(ast.codegenNode, context);
+  } else {
+    push(`null`);
+  }
+  if (useWithBlock) {
+    deindent();
+    push(`}`);
+  }
+  deindent();
+  push(`}`);
+  return {
+    ast,
+    code: context.code,
+    preamble: isSetupInlined ? preambleContext.code : ``,
+    // SourceMapGenerator does have toJSON() method but it's not in the types
+    map: context.map ? context.map.toJSON() : void 0
+  };
+}
+function genFunctionPreamble(ast, context) {
+  const {
+    ssr,
+    prefixIdentifiers,
+    push,
+    newline,
+    runtimeModuleName,
+    runtimeGlobalName,
+    ssrRuntimeModuleName
+  } = context;
+  const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName;
+  const helpers = Array.from(ast.helpers);
+  if (helpers.length > 0) {
+    if (prefixIdentifiers) {
+      push(`const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding}
+`);
+    } else {
+      push(`const _Vue = ${VueBinding}
+`);
+      if (ast.hoists.length) {
+        const staticHelpers = [
+          CREATE_VNODE,
+          CREATE_ELEMENT_VNODE,
+          CREATE_COMMENT,
+          CREATE_TEXT,
+          CREATE_STATIC
+        ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", ");
+        push(`const { ${staticHelpers} } = _Vue
+`);
+      }
+    }
+  }
+  if (ast.ssrHelpers && ast.ssrHelpers.length) {
+    push(
+      `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}")
+`
+    );
+  }
+  genHoists(ast.hoists, context);
+  newline();
+  push(`return `);
+}
+function genModulePreamble(ast, context, genScopeId, inline) {
+  const {
+    push,
+    newline,
+    optimizeImports,
+    runtimeModuleName,
+    ssrRuntimeModuleName
+  } = context;
+  if (genScopeId && ast.hoists.length) {
+    ast.helpers.add(PUSH_SCOPE_ID);
+    ast.helpers.add(POP_SCOPE_ID);
+  }
+  if (ast.helpers.size) {
+    const helpers = Array.from(ast.helpers);
+    if (optimizeImports) {
+      push(
+        `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)}
+`
+      );
+      push(
+        `
+// Binding optimization for webpack code-split
+const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")}
+`
+      );
+    } else {
+      push(
+        `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)}
+`
+      );
+    }
+  }
+  if (ast.ssrHelpers && ast.ssrHelpers.length) {
+    push(
+      `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}"
+`
+    );
+  }
+  if (ast.imports.length) {
+    genImports(ast.imports, context);
+    newline();
+  }
+  genHoists(ast.hoists, context);
+  newline();
+  if (!inline) {
+    push(`export `);
+  }
+}
+function genAssets(assets, type, { helper, push, newline, isTS }) {
+  const resolver = helper(
+    type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE
+  );
+  for (let i = 0; i < assets.length; i++) {
+    let id = assets[i];
+    const maybeSelfReference = id.endsWith("__self");
+    if (maybeSelfReference) {
+      id = id.slice(0, -6);
+    }
+    push(
+      `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`
+    );
+    if (i < assets.length - 1) {
+      newline();
+    }
+  }
+}
+function genHoists(hoists, context) {
+  if (!hoists.length) {
+    return;
+  }
+  context.pure = true;
+  const { push, newline, helper, scopeId, mode } = context;
+  const genScopeId = scopeId != null && mode !== "function";
+  newline();
+  if (genScopeId) {
+    push(
+      `const _withScopeId = n => (${helper(
+        PUSH_SCOPE_ID
+      )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)`
+    );
+    newline();
+  }
+  for (let i = 0; i < hoists.length; i++) {
+    const exp = hoists[i];
+    if (exp) {
+      const needScopeIdWrapper = genScopeId && exp.type === 13;
+      push(
+        `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}`
+      );
+      genNode(exp, context);
+      if (needScopeIdWrapper) {
+        push(`)`);
+      }
+      newline();
+    }
+  }
+  context.pure = false;
+}
+function genImports(importsOptions, context) {
+  if (!importsOptions.length) {
+    return;
+  }
+  importsOptions.forEach((imports) => {
+    context.push(`import `);
+    genNode(imports.exp, context);
+    context.push(` from '${imports.path}'`);
+    context.newline();
+  });
+}
+function isText(n) {
+  return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;
+}
+function genNodeListAsArray(nodes, context) {
+  const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n));
+  context.push(`[`);
+  multilines && context.indent();
+  genNodeList(nodes, context, multilines);
+  multilines && context.deindent();
+  context.push(`]`);
+}
+function genNodeList(nodes, context, multilines = false, comma = true) {
+  const { push, newline } = context;
+  for (let i = 0; i < nodes.length; i++) {
+    const node = nodes[i];
+    if (shared.isString(node)) {
+      push(node);
+    } else if (shared.isArray(node)) {
+      genNodeListAsArray(node, context);
+    } else {
+      genNode(node, context);
+    }
+    if (i < nodes.length - 1) {
+      if (multilines) {
+        comma && push(",");
+        newline();
+      } else {
+        comma && push(", ");
+      }
+    }
+  }
+}
+function genNode(node, context) {
+  if (shared.isString(node)) {
+    context.push(node);
+    return;
+  }
+  if (shared.isSymbol(node)) {
+    context.push(context.helper(node));
+    return;
+  }
+  switch (node.type) {
+    case 1:
+    case 9:
+    case 11:
+      genNode(node.codegenNode, context);
+      break;
+    case 2:
+      genText(node, context);
+      break;
+    case 4:
+      genExpression(node, context);
+      break;
+    case 5:
+      genInterpolation(node, context);
+      break;
+    case 12:
+      genNode(node.codegenNode, context);
+      break;
+    case 8:
+      genCompoundExpression(node, context);
+      break;
+    case 3:
+      genComment(node, context);
+      break;
+    case 13:
+      genVNodeCall(node, context);
+      break;
+    case 14:
+      genCallExpression(node, context);
+      break;
+    case 15:
+      genObjectExpression(node, context);
+      break;
+    case 17:
+      genArrayExpression(node, context);
+      break;
+    case 18:
+      genFunctionExpression(node, context);
+      break;
+    case 19:
+      genConditionalExpression(node, context);
+      break;
+    case 20:
+      genCacheExpression(node, context);
+      break;
+    case 21:
+      genNodeList(node.body, context, true, false);
+      break;
+    case 22:
+      genTemplateLiteral(node, context);
+      break;
+    case 23:
+      genIfStatement(node, context);
+      break;
+    case 24:
+      genAssignmentExpression(node, context);
+      break;
+    case 25:
+      genSequenceExpression(node, context);
+      break;
+    case 26:
+      genReturnStatement(node, context);
+      break;
+  }
+}
+function genText(node, context) {
+  context.push(JSON.stringify(node.content), node);
+}
+function genExpression(node, context) {
+  const { content, isStatic } = node;
+  context.push(isStatic ? JSON.stringify(content) : content, node);
+}
+function genInterpolation(node, context) {
+  const { push, helper, pure } = context;
+  if (pure)
+    push(PURE_ANNOTATION);
+  push(`${helper(TO_DISPLAY_STRING)}(`);
+  genNode(node.content, context);
+  push(`)`);
+}
+function genCompoundExpression(node, context) {
+  for (let i = 0; i < node.children.length; i++) {
+    const child = node.children[i];
+    if (shared.isString(child)) {
+      context.push(child);
+    } else {
+      genNode(child, context);
+    }
+  }
+}
+function genExpressionAsPropertyKey(node, context) {
+  const { push } = context;
+  if (node.type === 8) {
+    push(`[`);
+    genCompoundExpression(node, context);
+    push(`]`);
+  } else if (node.isStatic) {
+    const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);
+    push(text, node);
+  } else {
+    push(`[${node.content}]`, node);
+  }
+}
+function genComment(node, context) {
+  const { push, helper, pure } = context;
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);
+}
+function genVNodeCall(node, context) {
+  const { push, helper, pure } = context;
+  const {
+    tag,
+    props,
+    children,
+    patchFlag,
+    dynamicProps,
+    directives,
+    isBlock,
+    disableTracking,
+    isComponent
+  } = node;
+  if (directives) {
+    push(helper(WITH_DIRECTIVES) + `(`);
+  }
+  if (isBlock) {
+    push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
+  }
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);
+  push(helper(callHelper) + `(`, node);
+  genNodeList(
+    genNullableArgs([tag, props, children, patchFlag, dynamicProps]),
+    context
+  );
+  push(`)`);
+  if (isBlock) {
+    push(`)`);
+  }
+  if (directives) {
+    push(`, `);
+    genNode(directives, context);
+    push(`)`);
+  }
+}
+function genNullableArgs(args) {
+  let i = args.length;
+  while (i--) {
+    if (args[i] != null)
+      break;
+  }
+  return args.slice(0, i + 1).map((arg) => arg || `null`);
+}
+function genCallExpression(node, context) {
+  const { push, helper, pure } = context;
+  const callee = shared.isString(node.callee) ? node.callee : helper(node.callee);
+  if (pure) {
+    push(PURE_ANNOTATION);
+  }
+  push(callee + `(`, node);
+  genNodeList(node.arguments, context);
+  push(`)`);
+}
+function genObjectExpression(node, context) {
+  const { push, indent, deindent, newline } = context;
+  const { properties } = node;
+  if (!properties.length) {
+    push(`{}`, node);
+    return;
+  }
+  const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4);
+  push(multilines ? `{` : `{ `);
+  multilines && indent();
+  for (let i = 0; i < properties.length; i++) {
+    const { key, value } = properties[i];
+    genExpressionAsPropertyKey(key, context);
+    push(`: `);
+    genNode(value, context);
+    if (i < properties.length - 1) {
+      push(`,`);
+      newline();
+    }
+  }
+  multilines && deindent();
+  push(multilines ? `}` : ` }`);
+}
+function genArrayExpression(node, context) {
+  genNodeListAsArray(node.elements, context);
+}
+function genFunctionExpression(node, context) {
+  const { push, indent, deindent } = context;
+  const { params, returns, body, newline, isSlot } = node;
+  if (isSlot) {
+    push(`_${helperNameMap[WITH_CTX]}(`);
+  }
+  push(`(`, node);
+  if (shared.isArray(params)) {
+    genNodeList(params, context);
+  } else if (params) {
+    genNode(params, context);
+  }
+  push(`) => `);
+  if (newline || body) {
+    push(`{`);
+    indent();
+  }
+  if (returns) {
+    if (newline) {
+      push(`return `);
+    }
+    if (shared.isArray(returns)) {
+      genNodeListAsArray(returns, context);
+    } else {
+      genNode(returns, context);
+    }
+  } else if (body) {
+    genNode(body, context);
+  }
+  if (newline || body) {
+    deindent();
+    push(`}`);
+  }
+  if (isSlot) {
+    if (node.isNonScopedSlot) {
+      push(`, undefined, true`);
+    }
+    push(`)`);
+  }
+}
+function genConditionalExpression(node, context) {
+  const { test, consequent, alternate, newline: needNewline } = node;
+  const { push, indent, deindent, newline } = context;
+  if (test.type === 4) {
+    const needsParens = !isSimpleIdentifier(test.content);
+    needsParens && push(`(`);
+    genExpression(test, context);
+    needsParens && push(`)`);
+  } else {
+    push(`(`);
+    genNode(test, context);
+    push(`)`);
+  }
+  needNewline && indent();
+  context.indentLevel++;
+  needNewline || push(` `);
+  push(`? `);
+  genNode(consequent, context);
+  context.indentLevel--;
+  needNewline && newline();
+  needNewline || push(` `);
+  push(`: `);
+  const isNested = alternate.type === 19;
+  if (!isNested) {
+    context.indentLevel++;
+  }
+  genNode(alternate, context);
+  if (!isNested) {
+    context.indentLevel--;
+  }
+  needNewline && deindent(
+    true
+    /* without newline */
+  );
+}
+function genCacheExpression(node, context) {
+  const { push, helper, indent, deindent, newline } = context;
+  push(`_cache[${node.index}] || (`);
+  if (node.isVNode) {
+    indent();
+    push(`${helper(SET_BLOCK_TRACKING)}(-1),`);
+    newline();
+  }
+  push(`_cache[${node.index}] = `);
+  genNode(node.value, context);
+  if (node.isVNode) {
+    push(`,`);
+    newline();
+    push(`${helper(SET_BLOCK_TRACKING)}(1),`);
+    newline();
+    push(`_cache[${node.index}]`);
+    deindent();
+  }
+  push(`)`);
+}
+function genTemplateLiteral(node, context) {
+  const { push, indent, deindent } = context;
+  push("`");
+  const l = node.elements.length;
+  const multilines = l > 3;
+  for (let i = 0; i < l; i++) {
+    const e = node.elements[i];
+    if (shared.isString(e)) {
+      push(e.replace(/(`|\$|\\)/g, "\\$1"));
+    } else {
+      push("${");
+      if (multilines)
+        indent();
+      genNode(e, context);
+      if (multilines)
+        deindent();
+      push("}");
+    }
+  }
+  push("`");
+}
+function genIfStatement(node, context) {
+  const { push, indent, deindent } = context;
+  const { test, consequent, alternate } = node;
+  push(`if (`);
+  genNode(test, context);
+  push(`) {`);
+  indent();
+  genNode(consequent, context);
+  deindent();
+  push(`}`);
+  if (alternate) {
+    push(` else `);
+    if (alternate.type === 23) {
+      genIfStatement(alternate, context);
+    } else {
+      push(`{`);
+      indent();
+      genNode(alternate, context);
+      deindent();
+      push(`}`);
+    }
+  }
+}
+function genAssignmentExpression(node, context) {
+  genNode(node.left, context);
+  context.push(` = `);
+  genNode(node.right, context);
+}
+function genSequenceExpression(node, context) {
+  context.push(`(`);
+  genNodeList(node.expressions, context);
+  context.push(`)`);
+}
+function genReturnStatement({ returns }, context) {
+  context.push(`return `);
+  if (shared.isArray(returns)) {
+    genNodeListAsArray(returns, context);
+  } else {
+    genNode(returns, context);
+  }
+}
+
+function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) {
+  const rootExp = root.type === "Program" && root.body[0].type === "ExpressionStatement" && root.body[0].expression;
+  estreeWalker.walk(root, {
+    enter(node, parent) {
+      parent && parentStack.push(parent);
+      if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) {
+        return this.skip();
+      }
+      if (node.type === "Identifier") {
+        const isLocal = !!knownIds[node.name];
+        const isRefed = isReferencedIdentifier(node, parent, parentStack);
+        if (includeAll || isRefed && !isLocal) {
+          onIdentifier(node, parent, parentStack, isRefed, isLocal);
+        }
+      } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") {
+        node.inPattern = true;
+      } else if (isFunctionType(node)) {
+        walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds));
+      } else if (node.type === "BlockStatement") {
+        walkBlockDeclarations(
+          node,
+          (id) => markScopeIdentifier(node, id, knownIds)
+        );
+      }
+    },
+    leave(node, parent) {
+      parent && parentStack.pop();
+      if (node !== rootExp && node.scopeIds) {
+        for (const id of node.scopeIds) {
+          knownIds[id]--;
+          if (knownIds[id] === 0) {
+            delete knownIds[id];
+          }
+        }
+      }
+    }
+  });
+}
+function isReferencedIdentifier(id, parent, parentStack) {
+  if (!parent) {
+    return true;
+  }
+  if (id.name === "arguments") {
+    return false;
+  }
+  if (isReferenced(id, parent)) {
+    return true;
+  }
+  switch (parent.type) {
+    case "AssignmentExpression":
+    case "AssignmentPattern":
+      return true;
+    case "ObjectPattern":
+    case "ArrayPattern":
+      return isInDestructureAssignment(parent, parentStack);
+  }
+  return false;
+}
+function isInDestructureAssignment(parent, parentStack) {
+  if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) {
+    let i = parentStack.length;
+    while (i--) {
+      const p = parentStack[i];
+      if (p.type === "AssignmentExpression") {
+        return true;
+      } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) {
+        break;
+      }
+    }
+  }
+  return false;
+}
+function walkFunctionParams(node, onIdent) {
+  for (const p of node.params) {
+    for (const id of extractIdentifiers(p)) {
+      onIdent(id);
+    }
+  }
+}
+function walkBlockDeclarations(block, onIdent) {
+  for (const stmt of block.body) {
+    if (stmt.type === "VariableDeclaration") {
+      if (stmt.declare)
+        continue;
+      for (const decl of stmt.declarations) {
+        for (const id of extractIdentifiers(decl.id)) {
+          onIdent(id);
+        }
+      }
+    } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") {
+      if (stmt.declare || !stmt.id)
+        continue;
+      onIdent(stmt.id);
+    }
+  }
+}
+function extractIdentifiers(param, nodes = []) {
+  switch (param.type) {
+    case "Identifier":
+      nodes.push(param);
+      break;
+    case "MemberExpression":
+      let object = param;
+      while (object.type === "MemberExpression") {
+        object = object.object;
+      }
+      nodes.push(object);
+      break;
+    case "ObjectPattern":
+      for (const prop of param.properties) {
+        if (prop.type === "RestElement") {
+          extractIdentifiers(prop.argument, nodes);
+        } else {
+          extractIdentifiers(prop.value, nodes);
+        }
+      }
+      break;
+    case "ArrayPattern":
+      param.elements.forEach((element) => {
+        if (element)
+          extractIdentifiers(element, nodes);
+      });
+      break;
+    case "RestElement":
+      extractIdentifiers(param.argument, nodes);
+      break;
+    case "AssignmentPattern":
+      extractIdentifiers(param.left, nodes);
+      break;
+  }
+  return nodes;
+}
+function markScopeIdentifier(node, child, knownIds) {
+  const { name } = child;
+  if (node.scopeIds && node.scopeIds.has(name)) {
+    return;
+  }
+  if (name in knownIds) {
+    knownIds[name]++;
+  } else {
+    knownIds[name] = 1;
+  }
+  (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name);
+}
+const isFunctionType = (node) => {
+  return /Function(?:Expression|Declaration)$|Method$/.test(node.type);
+};
+const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed;
+const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;
+function isReferenced(node, parent, grandparent) {
+  switch (parent.type) {
+    case "MemberExpression":
+    case "OptionalMemberExpression":
+      if (parent.property === node) {
+        return !!parent.computed;
+      }
+      return parent.object === node;
+    case "JSXMemberExpression":
+      return parent.object === node;
+    case "VariableDeclarator":
+      return parent.init === node;
+    case "ArrowFunctionExpression":
+      return parent.body === node;
+    case "PrivateName":
+      return false;
+    case "ClassMethod":
+    case "ClassPrivateMethod":
+    case "ObjectMethod":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return false;
+    case "ObjectProperty":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return !grandparent || grandparent.type !== "ObjectPattern";
+    case "ClassProperty":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return true;
+    case "ClassPrivateProperty":
+      return parent.key !== node;
+    case "ClassDeclaration":
+    case "ClassExpression":
+      return parent.superClass === node;
+    case "AssignmentExpression":
+      return parent.right === node;
+    case "AssignmentPattern":
+      return parent.right === node;
+    case "LabeledStatement":
+      return false;
+    case "CatchClause":
+      return false;
+    case "RestElement":
+      return false;
+    case "BreakStatement":
+    case "ContinueStatement":
+      return false;
+    case "FunctionDeclaration":
+    case "FunctionExpression":
+      return false;
+    case "ExportNamespaceSpecifier":
+    case "ExportDefaultSpecifier":
+      return false;
+    case "ExportSpecifier":
+      if (grandparent == null ? void 0 : grandparent.source) {
+        return false;
+      }
+      return parent.local === node;
+    case "ImportDefaultSpecifier":
+    case "ImportNamespaceSpecifier":
+    case "ImportSpecifier":
+      return false;
+    case "ImportAttribute":
+      return false;
+    case "JSXAttribute":
+      return false;
+    case "ObjectPattern":
+    case "ArrayPattern":
+      return false;
+    case "MetaProperty":
+      return false;
+    case "ObjectTypeProperty":
+      return parent.key !== node;
+    case "TSEnumMember":
+      return parent.id !== node;
+    case "TSPropertySignature":
+      if (parent.key === node) {
+        return !!parent.computed;
+      }
+      return true;
+  }
+  return true;
+}
+const TS_NODE_TYPES = [
+  "TSAsExpression",
+  // foo as number
+  "TSTypeAssertion",
+  // (<number>foo)
+  "TSNonNullExpression",
+  // foo!
+  "TSInstantiationExpression",
+  // foo<string>
+  "TSSatisfiesExpression"
+  // foo satisfies T
+];
+
+const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this");
+const constantBailRE = /\w\s*\(|\.[^\d]/;
+const transformExpression = (node, context) => {
+  if (node.type === 5) {
+    node.content = processExpression(
+      node.content,
+      context
+    );
+  } else if (node.type === 1) {
+    for (let i = 0; i < node.props.length; i++) {
+      const dir = node.props[i];
+      if (dir.type === 7 && dir.name !== "for") {
+        const exp = dir.exp;
+        const arg = dir.arg;
+        if (exp && exp.type === 4 && !(dir.name === "on" && arg)) {
+          dir.exp = processExpression(
+            exp,
+            context,
+            // slot args must be processed as function params
+            dir.name === "slot"
+          );
+        }
+        if (arg && arg.type === 4 && !arg.isStatic) {
+          dir.arg = processExpression(arg, context);
+        }
+      }
+    }
+  }
+};
+function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {
+  if (!context.prefixIdentifiers || !node.content.trim()) {
+    return node;
+  }
+  const { inline, bindingMetadata } = context;
+  const rewriteIdentifier = (raw, parent, id) => {
+    const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw];
+    if (inline) {
+      const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id;
+      const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id;
+      const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack);
+      if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) {
+        return raw;
+      } else if (type === "setup-ref") {
+        return `${raw}.value`;
+      } else if (type === "setup-maybe-ref") {
+        return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`;
+      } else if (type === "setup-let") {
+        if (isAssignmentLVal) {
+          const { right: rVal, operator } = parent;
+          const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1);
+          const rExpString = stringifyExpression(
+            processExpression(
+              createSimpleExpression(rExp, false),
+              context,
+              false,
+              false,
+              knownIds
+            )
+          );
+          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore
+` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`;
+        } else if (isUpdateArg) {
+          id.start = parent.start;
+          id.end = parent.end;
+          const { prefix: isPrefix, operator } = parent;
+          const prefix = isPrefix ? operator : ``;
+          const postfix = isPrefix ? `` : operator;
+          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore
+` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`;
+        } else if (isDestructureAssignment) {
+          return raw;
+        } else {
+          return `${context.helperString(UNREF)}(${raw})`;
+        }
+      } else if (type === "props") {
+        return shared.genPropsAccessExp(raw);
+      } else if (type === "props-aliased") {
+        return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]);
+      }
+    } else {
+      if (type && type.startsWith("setup") || type === "literal-const") {
+        return `$setup.${raw}`;
+      } else if (type === "props-aliased") {
+        return `$props['${bindingMetadata.__propsAliases[raw]}']`;
+      } else if (type) {
+        return `$${type}.${raw}`;
+      }
+    }
+    return `_ctx.${raw}`;
+  };
+  const rawExp = node.content;
+  const bailConstant = constantBailRE.test(rawExp);
+  if (isSimpleIdentifier(rawExp)) {
+    const isScopeVarReference = context.identifiers[rawExp];
+    const isAllowedGlobal = shared.isGloballyWhitelisted(rawExp);
+    const isLiteral = isLiteralWhitelisted(rawExp);
+    if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) {
+      if (isConst(bindingMetadata[node.content])) {
+        node.constType = 1;
+      }
+      node.content = rewriteIdentifier(rawExp);
+    } else if (!isScopeVarReference) {
+      if (isLiteral) {
+        node.constType = 3;
+      } else {
+        node.constType = 2;
+      }
+    }
+    return node;
+  }
+  let ast;
+  const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`;
+  try {
+    ast = parser.parse(source, {
+      plugins: context.expressionPlugins
+    }).program;
+  } catch (e) {
+    context.onError(
+      createCompilerError(
+        45,
+        node.loc,
+        void 0,
+        e.message
+      )
+    );
+    return node;
+  }
+  const ids = [];
+  const parentStack = [];
+  const knownIds = Object.create(context.identifiers);
+  walkIdentifiers(
+    ast,
+    (node2, parent, _, isReferenced, isLocal) => {
+      if (isStaticPropertyKey(node2, parent)) {
+        return;
+      }
+      if (node2.name.startsWith("_filter_")) {
+        return;
+      }
+      const needPrefix = isReferenced && canPrefix(node2);
+      if (needPrefix && !isLocal) {
+        if (isStaticProperty(parent) && parent.shorthand) {
+          node2.prefix = `${node2.name}: `;
+        }
+        node2.name = rewriteIdentifier(node2.name, parent, node2);
+        ids.push(node2);
+      } else {
+        if (!(needPrefix && isLocal) && !bailConstant) {
+          node2.isConstant = true;
+        }
+        ids.push(node2);
+      }
+    },
+    true,
+    // invoke on ALL identifiers
+    parentStack,
+    knownIds
+  );
+  const children = [];
+  ids.sort((a, b) => a.start - b.start);
+  ids.forEach((id, i) => {
+    const start = id.start - 1;
+    const end = id.end - 1;
+    const last = ids[i - 1];
+    const leadingText = rawExp.slice(last ? last.end - 1 : 0, start);
+    if (leadingText.length || id.prefix) {
+      children.push(leadingText + (id.prefix || ``));
+    }
+    const source2 = rawExp.slice(start, end);
+    children.push(
+      createSimpleExpression(
+        id.name,
+        false,
+        {
+          source: source2,
+          start: advancePositionWithClone(node.loc.start, source2, start),
+          end: advancePositionWithClone(node.loc.start, source2, end)
+        },
+        id.isConstant ? 3 : 0
+      )
+    );
+    if (i === ids.length - 1 && end < rawExp.length) {
+      children.push(rawExp.slice(end));
+    }
+  });
+  let ret;
+  if (children.length) {
+    ret = createCompoundExpression(children, node.loc);
+  } else {
+    ret = node;
+    ret.constType = bailConstant ? 0 : 3;
+  }
+  ret.identifiers = Object.keys(knownIds);
+  return ret;
+}
+function canPrefix(id) {
+  if (shared.isGloballyWhitelisted(id.name)) {
+    return false;
+  }
+  if (id.name === "require") {
+    return false;
+  }
+  return true;
+}
+function stringifyExpression(exp) {
+  if (shared.isString(exp)) {
+    return exp;
+  } else if (exp.type === 4) {
+    return exp.content;
+  } else {
+    return exp.children.map(stringifyExpression).join("");
+  }
+}
+function isConst(type) {
+  return type === "setup-const" || type === "literal-const";
+}
+
+const transformIf = createStructuralDirectiveTransform(
+  /^(if|else|else-if)$/,
+  (node, dir, context) => {
+    return processIf(node, dir, context, (ifNode, branch, isRoot) => {
+      const siblings = context.parent.children;
+      let i = siblings.indexOf(ifNode);
+      let key = 0;
+      while (i-- >= 0) {
+        const sibling = siblings[i];
+        if (sibling && sibling.type === 9) {
+          key += sibling.branches.length;
+        }
+      }
+      return () => {
+        if (isRoot) {
+          ifNode.codegenNode = createCodegenNodeForBranch(
+            branch,
+            key,
+            context
+          );
+        } else {
+          const parentCondition = getParentCondition(ifNode.codegenNode);
+          parentCondition.alternate = createCodegenNodeForBranch(
+            branch,
+            key + ifNode.branches.length - 1,
+            context
+          );
+        }
+      };
+    });
+  }
+);
+function processIf(node, dir, context, processCodegen) {
+  if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) {
+    const loc = dir.exp ? dir.exp.loc : node.loc;
+    context.onError(
+      createCompilerError(28, dir.loc)
+    );
+    dir.exp = createSimpleExpression(`true`, false, loc);
+  }
+  if (context.prefixIdentifiers && dir.exp) {
+    dir.exp = processExpression(dir.exp, context);
+  }
+  if (dir.name === "if") {
+    const branch = createIfBranch(node, dir);
+    const ifNode = {
+      type: 9,
+      loc: node.loc,
+      branches: [branch]
+    };
+    context.replaceNode(ifNode);
+    if (processCodegen) {
+      return processCodegen(ifNode, branch, true);
+    }
+  } else {
+    const siblings = context.parent.children;
+    let i = siblings.indexOf(node);
+    while (i-- >= -1) {
+      const sibling = siblings[i];
+      if (sibling && sibling.type === 3) {
+        context.removeNode(sibling);
+        continue;
+      }
+      if (sibling && sibling.type === 2 && !sibling.content.trim().length) {
+        context.removeNode(sibling);
+        continue;
+      }
+      if (sibling && sibling.type === 9) {
+        if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
+          context.onError(
+            createCompilerError(30, node.loc)
+          );
+        }
+        context.removeNode();
+        const branch = createIfBranch(node, dir);
+        {
+          const key = branch.userKey;
+          if (key) {
+            sibling.branches.forEach(({ userKey }) => {
+              if (isSameKey(userKey, key)) {
+                context.onError(
+                  createCompilerError(
+                    29,
+                    branch.userKey.loc
+                  )
+                );
+              }
+            });
+          }
+        }
+        sibling.branches.push(branch);
+        const onExit = processCodegen && processCodegen(sibling, branch, false);
+        traverseNode(branch, context);
+        if (onExit)
+          onExit();
+        context.currentNode = null;
+      } else {
+        context.onError(
+          createCompilerError(30, node.loc)
+        );
+      }
+      break;
+    }
+  }
+}
+function createIfBranch(node, dir) {
+  const isTemplateIf = node.tagType === 3;
+  return {
+    type: 10,
+    loc: node.loc,
+    condition: dir.name === "else" ? void 0 : dir.exp,
+    children: isTemplateIf && !findDir(node, "for") ? node.children : [node],
+    userKey: findProp(node, `key`),
+    isTemplateIf
+  };
+}
+function createCodegenNodeForBranch(branch, keyIndex, context) {
+  if (branch.condition) {
+    return createConditionalExpression(
+      branch.condition,
+      createChildrenCodegenNode(branch, keyIndex, context),
+      // make sure to pass in asBlock: true so that the comment node call
+      // closes the current block.
+      createCallExpression(context.helper(CREATE_COMMENT), [
+        '""',
+        "true"
+      ])
+    );
+  } else {
+    return createChildrenCodegenNode(branch, keyIndex, context);
+  }
+}
+function createChildrenCodegenNode(branch, keyIndex, context) {
+  const { helper } = context;
+  const keyProperty = createObjectProperty(
+    `key`,
+    createSimpleExpression(
+      `${keyIndex}`,
+      false,
+      locStub,
+      2
+    )
+  );
+  const { children } = branch;
+  const firstChild = children[0];
+  const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;
+  if (needFragmentWrapper) {
+    if (children.length === 1 && firstChild.type === 11) {
+      const vnodeCall = firstChild.codegenNode;
+      injectProp(vnodeCall, keyProperty, context);
+      return vnodeCall;
+    } else {
+      let patchFlag = 64;
+      shared.PatchFlagNames[64];
+      return createVNodeCall(
+        context,
+        helper(FRAGMENT),
+        createObjectExpression([keyProperty]),
+        children,
+        patchFlag + (``),
+        void 0,
+        void 0,
+        true,
+        false,
+        false,
+        branch.loc
+      );
+    }
+  } else {
+    const ret = firstChild.codegenNode;
+    const vnodeCall = getMemoedVNodeCall(ret);
+    if (vnodeCall.type === 13) {
+      convertToBlock(vnodeCall, context);
+    }
+    injectProp(vnodeCall, keyProperty, context);
+    return ret;
+  }
+}
+function isSameKey(a, b) {
+  if (!a || a.type !== b.type) {
+    return false;
+  }
+  if (a.type === 6) {
+    if (a.value.content !== b.value.content) {
+      return false;
+    }
+  } else {
+    const exp = a.exp;
+    const branchExp = b.exp;
+    if (exp.type !== branchExp.type) {
+      return false;
+    }
+    if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {
+      return false;
+    }
+  }
+  return true;
+}
+function getParentCondition(node) {
+  while (true) {
+    if (node.type === 19) {
+      if (node.alternate.type === 19) {
+        node = node.alternate;
+      } else {
+        return node;
+      }
+    } else if (node.type === 20) {
+      node = node.value;
+    }
+  }
+}
+
+const transformFor = createStructuralDirectiveTransform(
+  "for",
+  (node, dir, context) => {
+    const { helper, removeHelper } = context;
+    return processFor(node, dir, context, (forNode) => {
+      const renderExp = createCallExpression(helper(RENDER_LIST), [
+        forNode.source
+      ]);
+      const isTemplate = isTemplateNode(node);
+      const memo = findDir(node, "memo");
+      const keyProp = findProp(node, `key`);
+      const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);
+      const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;
+      if (isTemplate) {
+        if (memo) {
+          memo.exp = processExpression(
+            memo.exp,
+            context
+          );
+        }
+        if (keyProperty && keyProp.type !== 6) {
+          keyProperty.value = processExpression(
+            keyProperty.value,
+            context
+          );
+        }
+      }
+      const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
+      const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
+      forNode.codegenNode = createVNodeCall(
+        context,
+        helper(FRAGMENT),
+        void 0,
+        renderExp,
+        fragmentFlag + (``),
+        void 0,
+        void 0,
+        true,
+        !isStableFragment,
+        false,
+        node.loc
+      );
+      return () => {
+        let childBlock;
+        const { children } = forNode;
+        if (isTemplate) {
+          node.children.some((c) => {
+            if (c.type === 1) {
+              const key = findProp(c, "key");
+              if (key) {
+                context.onError(
+                  createCompilerError(
+                    33,
+                    key.loc
+                  )
+                );
+                return true;
+              }
+            }
+          });
+        }
+        const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;
+        const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;
+        if (slotOutlet) {
+          childBlock = slotOutlet.codegenNode;
+          if (isTemplate && keyProperty) {
+            injectProp(childBlock, keyProperty, context);
+          }
+        } else if (needFragmentWrapper) {
+          childBlock = createVNodeCall(
+            context,
+            helper(FRAGMENT),
+            keyProperty ? createObjectExpression([keyProperty]) : void 0,
+            node.children,
+            64 + (``),
+            void 0,
+            void 0,
+            true,
+            void 0,
+            false
+            /* isComponent */
+          );
+        } else {
+          childBlock = children[0].codegenNode;
+          if (isTemplate && keyProperty) {
+            injectProp(childBlock, keyProperty, context);
+          }
+          if (childBlock.isBlock !== !isStableFragment) {
+            if (childBlock.isBlock) {
+              removeHelper(OPEN_BLOCK);
+              removeHelper(
+                getVNodeBlockHelper(context.inSSR, childBlock.isComponent)
+              );
+            } else {
+              removeHelper(
+                getVNodeHelper(context.inSSR, childBlock.isComponent)
+              );
+            }
+          }
+          childBlock.isBlock = !isStableFragment;
+          if (childBlock.isBlock) {
+            helper(OPEN_BLOCK);
+            helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+          } else {
+            helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+          }
+        }
+        if (memo) {
+          const loop = createFunctionExpression(
+            createForLoopParams(forNode.parseResult, [
+              createSimpleExpression(`_cached`)
+            ])
+          );
+          loop.body = createBlockStatement([
+            createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
+            createCompoundExpression([
+              `if (_cached`,
+              ...keyExp ? [` && _cached.key === `, keyExp] : [],
+              ` && ${context.helperString(
+                IS_MEMO_SAME
+              )}(_cached, _memo)) return _cached`
+            ]),
+            createCompoundExpression([`const _item = `, childBlock]),
+            createSimpleExpression(`_item.memo = _memo`),
+            createSimpleExpression(`return _item`)
+          ]);
+          renderExp.arguments.push(
+            loop,
+            createSimpleExpression(`_cache`),
+            createSimpleExpression(String(context.cached++))
+          );
+        } else {
+          renderExp.arguments.push(
+            createFunctionExpression(
+              createForLoopParams(forNode.parseResult),
+              childBlock,
+              true
+              /* force newline */
+            )
+          );
+        }
+      };
+    });
+  }
+);
+function processFor(node, dir, context, processCodegen) {
+  if (!dir.exp) {
+    context.onError(
+      createCompilerError(31, dir.loc)
+    );
+    return;
+  }
+  const parseResult = parseForExpression(
+    // can only be simple expression because vFor transform is applied
+    // before expression transform.
+    dir.exp,
+    context
+  );
+  if (!parseResult) {
+    context.onError(
+      createCompilerError(32, dir.loc)
+    );
+    return;
+  }
+  const { addIdentifiers, removeIdentifiers, scopes } = context;
+  const { source, value, key, index } = parseResult;
+  const forNode = {
+    type: 11,
+    loc: dir.loc,
+    source,
+    valueAlias: value,
+    keyAlias: key,
+    objectIndexAlias: index,
+    parseResult,
+    children: isTemplateNode(node) ? node.children : [node]
+  };
+  context.replaceNode(forNode);
+  scopes.vFor++;
+  if (context.prefixIdentifiers) {
+    value && addIdentifiers(value);
+    key && addIdentifiers(key);
+    index && addIdentifiers(index);
+  }
+  const onExit = processCodegen && processCodegen(forNode);
+  return () => {
+    scopes.vFor--;
+    if (context.prefixIdentifiers) {
+      value && removeIdentifiers(value);
+      key && removeIdentifiers(key);
+      index && removeIdentifiers(index);
+    }
+    if (onExit)
+      onExit();
+  };
+}
+const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+const stripParensRE = /^\(|\)$/g;
+function parseForExpression(input, context) {
+  const loc = input.loc;
+  const exp = input.content;
+  const inMatch = exp.match(forAliasRE);
+  if (!inMatch)
+    return;
+  const [, LHS, RHS] = inMatch;
+  const result = {
+    source: createAliasExpression(
+      loc,
+      RHS.trim(),
+      exp.indexOf(RHS, LHS.length)
+    ),
+    value: void 0,
+    key: void 0,
+    index: void 0
+  };
+  if (context.prefixIdentifiers) {
+    result.source = processExpression(
+      result.source,
+      context
+    );
+  }
+  let valueContent = LHS.trim().replace(stripParensRE, "").trim();
+  const trimmedOffset = LHS.indexOf(valueContent);
+  const iteratorMatch = valueContent.match(forIteratorRE);
+  if (iteratorMatch) {
+    valueContent = valueContent.replace(forIteratorRE, "").trim();
+    const keyContent = iteratorMatch[1].trim();
+    let keyOffset;
+    if (keyContent) {
+      keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
+      result.key = createAliasExpression(loc, keyContent, keyOffset);
+      if (context.prefixIdentifiers) {
+        result.key = processExpression(result.key, context, true);
+      }
+    }
+    if (iteratorMatch[2]) {
+      const indexContent = iteratorMatch[2].trim();
+      if (indexContent) {
+        result.index = createAliasExpression(
+          loc,
+          indexContent,
+          exp.indexOf(
+            indexContent,
+            result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length
+          )
+        );
+        if (context.prefixIdentifiers) {
+          result.index = processExpression(result.index, context, true);
+        }
+      }
+    }
+  }
+  if (valueContent) {
+    result.value = createAliasExpression(loc, valueContent, trimmedOffset);
+    if (context.prefixIdentifiers) {
+      result.value = processExpression(result.value, context, true);
+    }
+  }
+  return result;
+}
+function createAliasExpression(range, content, offset) {
+  return createSimpleExpression(
+    content,
+    false,
+    getInnerRange(range, offset, content.length)
+  );
+}
+function createForLoopParams({ value, key, index }, memoArgs = []) {
+  return createParamsList([value, key, index, ...memoArgs]);
+}
+function createParamsList(args) {
+  let i = args.length;
+  while (i--) {
+    if (args[i])
+      break;
+  }
+  return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));
+}
+
+const defaultFallback = createSimpleExpression(`undefined`, false);
+const trackSlotScopes = (node, context) => {
+  if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {
+    const vSlot = findDir(node, "slot");
+    if (vSlot) {
+      const slotProps = vSlot.exp;
+      if (context.prefixIdentifiers) {
+        slotProps && context.addIdentifiers(slotProps);
+      }
+      context.scopes.vSlot++;
+      return () => {
+        if (context.prefixIdentifiers) {
+          slotProps && context.removeIdentifiers(slotProps);
+        }
+        context.scopes.vSlot--;
+      };
+    }
+  }
+};
+const trackVForSlotScopes = (node, context) => {
+  let vFor;
+  if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) {
+    const result = vFor.parseResult = parseForExpression(
+      vFor.exp,
+      context
+    );
+    if (result) {
+      const { value, key, index } = result;
+      const { addIdentifiers, removeIdentifiers } = context;
+      value && addIdentifiers(value);
+      key && addIdentifiers(key);
+      index && addIdentifiers(index);
+      return () => {
+        value && removeIdentifiers(value);
+        key && removeIdentifiers(key);
+        index && removeIdentifiers(index);
+      };
+    }
+  }
+};
+const buildClientSlotFn = (props, children, loc) => createFunctionExpression(
+  props,
+  children,
+  false,
+  true,
+  children.length ? children[0].loc : loc
+);
+function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
+  context.helper(WITH_CTX);
+  const { children, loc } = node;
+  const slotsProperties = [];
+  const dynamicSlots = [];
+  let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
+  if (!context.ssr && context.prefixIdentifiers) {
+    hasDynamicSlots = hasScopeRef(node, context.identifiers);
+  }
+  const onComponentSlot = findDir(node, "slot", true);
+  if (onComponentSlot) {
+    const { arg, exp } = onComponentSlot;
+    if (arg && !isStaticExp(arg)) {
+      hasDynamicSlots = true;
+    }
+    slotsProperties.push(
+      createObjectProperty(
+        arg || createSimpleExpression("default", true),
+        buildSlotFn(exp, children, loc)
+      )
+    );
+  }
+  let hasTemplateSlots = false;
+  let hasNamedDefaultSlot = false;
+  const implicitDefaultChildren = [];
+  const seenSlotNames = /* @__PURE__ */ new Set();
+  let conditionalBranchIndex = 0;
+  for (let i = 0; i < children.length; i++) {
+    const slotElement = children[i];
+    let slotDir;
+    if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) {
+      if (slotElement.type !== 3) {
+        implicitDefaultChildren.push(slotElement);
+      }
+      continue;
+    }
+    if (onComponentSlot) {
+      context.onError(
+        createCompilerError(37, slotDir.loc)
+      );
+      break;
+    }
+    hasTemplateSlots = true;
+    const { children: slotChildren, loc: slotLoc } = slotElement;
+    const {
+      arg: slotName = createSimpleExpression(`default`, true),
+      exp: slotProps,
+      loc: dirLoc
+    } = slotDir;
+    let staticSlotName;
+    if (isStaticExp(slotName)) {
+      staticSlotName = slotName ? slotName.content : `default`;
+    } else {
+      hasDynamicSlots = true;
+    }
+    const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);
+    let vIf;
+    let vElse;
+    let vFor;
+    if (vIf = findDir(slotElement, "if")) {
+      hasDynamicSlots = true;
+      dynamicSlots.push(
+        createConditionalExpression(
+          vIf.exp,
+          buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),
+          defaultFallback
+        )
+      );
+    } else if (vElse = findDir(
+      slotElement,
+      /^else(-if)?$/,
+      true
+      /* allowEmpty */
+    )) {
+      let j = i;
+      let prev;
+      while (j--) {
+        prev = children[j];
+        if (prev.type !== 3) {
+          break;
+        }
+      }
+      if (prev && isTemplateNode(prev) && findDir(prev, "if")) {
+        children.splice(i, 1);
+        i--;
+        let conditional = dynamicSlots[dynamicSlots.length - 1];
+        while (conditional.alternate.type === 19) {
+          conditional = conditional.alternate;
+        }
+        conditional.alternate = vElse.exp ? createConditionalExpression(
+          vElse.exp,
+          buildDynamicSlot(
+            slotName,
+            slotFunction,
+            conditionalBranchIndex++
+          ),
+          defaultFallback
+        ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);
+      } else {
+        context.onError(
+          createCompilerError(30, vElse.loc)
+        );
+      }
+    } else if (vFor = findDir(slotElement, "for")) {
+      hasDynamicSlots = true;
+      const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
+      if (parseResult) {
+        dynamicSlots.push(
+          createCallExpression(context.helper(RENDER_LIST), [
+            parseResult.source,
+            createFunctionExpression(
+              createForLoopParams(parseResult),
+              buildDynamicSlot(slotName, slotFunction),
+              true
+              /* force newline */
+            )
+          ])
+        );
+      } else {
+        context.onError(
+          createCompilerError(32, vFor.loc)
+        );
+      }
+    } else {
+      if (staticSlotName) {
+        if (seenSlotNames.has(staticSlotName)) {
+          context.onError(
+            createCompilerError(
+              38,
+              dirLoc
+            )
+          );
+          continue;
+        }
+        seenSlotNames.add(staticSlotName);
+        if (staticSlotName === "default") {
+          hasNamedDefaultSlot = true;
+        }
+      }
+      slotsProperties.push(createObjectProperty(slotName, slotFunction));
+    }
+  }
+  if (!onComponentSlot) {
+    const buildDefaultSlotProperty = (props, children2) => {
+      const fn = buildSlotFn(props, children2, loc);
+      if (context.compatConfig) {
+        fn.isNonScopedSlot = true;
+      }
+      return createObjectProperty(`default`, fn);
+    };
+    if (!hasTemplateSlots) {
+      slotsProperties.push(buildDefaultSlotProperty(void 0, children));
+    } else if (implicitDefaultChildren.length && // #3766
+    // with whitespace: 'preserve', whitespaces between slots will end up in
+    // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
+    implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {
+      if (hasNamedDefaultSlot) {
+        context.onError(
+          createCompilerError(
+            39,
+            implicitDefaultChildren[0].loc
+          )
+        );
+      } else {
+        slotsProperties.push(
+          buildDefaultSlotProperty(void 0, implicitDefaultChildren)
+        );
+      }
+    }
+  }
+  const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;
+  let slots = createObjectExpression(
+    slotsProperties.concat(
+      createObjectProperty(
+        `_`,
+        // 2 = compiled but dynamic = can skip normalization, but must run diff
+        // 1 = compiled and static = can skip normalization AND diff as optimized
+        createSimpleExpression(
+          slotFlag + (``),
+          false
+        )
+      )
+    ),
+    loc
+  );
+  if (dynamicSlots.length) {
+    slots = createCallExpression(context.helper(CREATE_SLOTS), [
+      slots,
+      createArrayExpression(dynamicSlots)
+    ]);
+  }
+  return {
+    slots,
+    hasDynamicSlots
+  };
+}
+function buildDynamicSlot(name, fn, index) {
+  const props = [
+    createObjectProperty(`name`, name),
+    createObjectProperty(`fn`, fn)
+  ];
+  if (index != null) {
+    props.push(
+      createObjectProperty(`key`, createSimpleExpression(String(index), true))
+    );
+  }
+  return createObjectExpression(props);
+}
+function hasForwardedSlots(children) {
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+    switch (child.type) {
+      case 1:
+        if (child.tagType === 2 || hasForwardedSlots(child.children)) {
+          return true;
+        }
+        break;
+      case 9:
+        if (hasForwardedSlots(child.branches))
+          return true;
+        break;
+      case 10:
+      case 11:
+        if (hasForwardedSlots(child.children))
+          return true;
+        break;
+    }
+  }
+  return false;
+}
+function isNonWhitespaceContent(node) {
+  if (node.type !== 2 && node.type !== 12)
+    return true;
+  return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);
+}
+
+const directiveImportMap = /* @__PURE__ */ new WeakMap();
+const transformElement = (node, context) => {
+  return function postTransformElement() {
+    node = context.currentNode;
+    if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {
+      return;
+    }
+    const { tag, props } = node;
+    const isComponent = node.tagType === 1;
+    let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`;
+    const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
+    let vnodeProps;
+    let vnodeChildren;
+    let vnodePatchFlag;
+    let patchFlag = 0;
+    let vnodeDynamicProps;
+    let dynamicPropNames;
+    let vnodeDirectives;
+    let shouldUseBlock = (
+      // dynamic component may resolve to plain elements
+      isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block
+      // updates inside get proper isSVG flag at runtime. (#639, #643)
+      // This is technically web-specific, but splitting the logic out of core
+      // leads to too much unnecessary complexity.
+      (tag === "svg" || tag === "foreignObject")
+    );
+    if (props.length > 0) {
+      const propsBuildResult = buildProps(
+        node,
+        context,
+        void 0,
+        isComponent,
+        isDynamicComponent
+      );
+      vnodeProps = propsBuildResult.props;
+      patchFlag = propsBuildResult.patchFlag;
+      dynamicPropNames = propsBuildResult.dynamicPropNames;
+      const directives = propsBuildResult.directives;
+      vnodeDirectives = directives && directives.length ? createArrayExpression(
+        directives.map((dir) => buildDirectiveArgs(dir, context))
+      ) : void 0;
+      if (propsBuildResult.shouldUseBlock) {
+        shouldUseBlock = true;
+      }
+    }
+    if (node.children.length > 0) {
+      if (vnodeTag === KEEP_ALIVE) {
+        shouldUseBlock = true;
+        patchFlag |= 1024;
+      }
+      const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling
+      vnodeTag !== TELEPORT && // explained above.
+      vnodeTag !== KEEP_ALIVE;
+      if (shouldBuildAsSlots) {
+        const { slots, hasDynamicSlots } = buildSlots(node, context);
+        vnodeChildren = slots;
+        if (hasDynamicSlots) {
+          patchFlag |= 1024;
+        }
+      } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
+        const child = node.children[0];
+        const type = child.type;
+        const hasDynamicTextChild = type === 5 || type === 8;
+        if (hasDynamicTextChild && getConstantType(child, context) === 0) {
+          patchFlag |= 1;
+        }
+        if (hasDynamicTextChild || type === 2) {
+          vnodeChildren = child;
+        } else {
+          vnodeChildren = node.children;
+        }
+      } else {
+        vnodeChildren = node.children;
+      }
+    }
+    if (patchFlag !== 0) {
+      {
+        vnodePatchFlag = String(patchFlag);
+      }
+      if (dynamicPropNames && dynamicPropNames.length) {
+        vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
+      }
+    }
+    node.codegenNode = createVNodeCall(
+      context,
+      vnodeTag,
+      vnodeProps,
+      vnodeChildren,
+      vnodePatchFlag,
+      vnodeDynamicProps,
+      vnodeDirectives,
+      !!shouldUseBlock,
+      false,
+      isComponent,
+      node.loc
+    );
+  };
+};
+function resolveComponentType(node, context, ssr = false) {
+  let { tag } = node;
+  const isExplicitDynamic = isComponentTag(tag);
+  const isProp = findProp(node, "is");
+  if (isProp) {
+    if (isExplicitDynamic || isCompatEnabled(
+      "COMPILER_IS_ON_ELEMENT",
+      context
+    )) {
+      const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;
+      if (exp) {
+        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+          exp
+        ]);
+      }
+    } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) {
+      tag = isProp.value.content.slice(4);
+    }
+  }
+  const isDir = !isExplicitDynamic && findDir(node, "is");
+  if (isDir && isDir.exp) {
+    return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+      isDir.exp
+    ]);
+  }
+  const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
+  if (builtIn) {
+    if (!ssr)
+      context.helper(builtIn);
+    return builtIn;
+  }
+  {
+    const fromSetup = resolveSetupReference(tag, context);
+    if (fromSetup) {
+      return fromSetup;
+    }
+    const dotIndex = tag.indexOf(".");
+    if (dotIndex > 0) {
+      const ns = resolveSetupReference(tag.slice(0, dotIndex), context);
+      if (ns) {
+        return ns + tag.slice(dotIndex);
+      }
+    }
+  }
+  if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) {
+    context.helper(RESOLVE_COMPONENT);
+    context.components.add(tag + `__self`);
+    return toValidAssetId(tag, `component`);
+  }
+  context.helper(RESOLVE_COMPONENT);
+  context.components.add(tag);
+  return toValidAssetId(tag, `component`);
+}
+function resolveSetupReference(name, context) {
+  const bindings = context.bindingMetadata;
+  if (!bindings || bindings.__isScriptSetup === false) {
+    return;
+  }
+  const camelName = shared.camelize(name);
+  const PascalName = shared.capitalize(camelName);
+  const checkType = (type) => {
+    if (bindings[name] === type) {
+      return name;
+    }
+    if (bindings[camelName] === type) {
+      return camelName;
+    }
+    if (bindings[PascalName] === type) {
+      return PascalName;
+    }
+  };
+  const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const");
+  if (fromConst) {
+    return context.inline ? (
+      // in inline mode, const setup bindings (e.g. imports) can be used as-is
+      fromConst
+    ) : `$setup[${JSON.stringify(fromConst)}]`;
+  }
+  const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref");
+  if (fromMaybeRef) {
+    return context.inline ? (
+      // setup scope bindings that may be refs need to be unrefed
+      `${context.helperString(UNREF)}(${fromMaybeRef})`
+    ) : `$setup[${JSON.stringify(fromMaybeRef)}]`;
+  }
+}
+function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {
+  const { tag, loc: elementLoc, children } = node;
+  let properties = [];
+  const mergeArgs = [];
+  const runtimeDirectives = [];
+  const hasChildren = children.length > 0;
+  let shouldUseBlock = false;
+  let patchFlag = 0;
+  let hasRef = false;
+  let hasClassBinding = false;
+  let hasStyleBinding = false;
+  let hasHydrationEventBinding = false;
+  let hasDynamicKeys = false;
+  let hasVnodeHook = false;
+  const dynamicPropNames = [];
+  const pushMergeArg = (arg) => {
+    if (properties.length) {
+      mergeArgs.push(
+        createObjectExpression(dedupeProperties(properties), elementLoc)
+      );
+      properties = [];
+    }
+    if (arg)
+      mergeArgs.push(arg);
+  };
+  const analyzePatchFlag = ({ key, value }) => {
+    if (isStaticExp(key)) {
+      const name = key.content;
+      const isEventHandler = shared.isOn(name);
+      if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click
+      // dedicated fast path.
+      name.toLowerCase() !== "onclick" && // omit v-model handlers
+      name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks
+      !shared.isReservedProp(name)) {
+        hasHydrationEventBinding = true;
+      }
+      if (isEventHandler && shared.isReservedProp(name)) {
+        hasVnodeHook = true;
+      }
+      if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {
+        return;
+      }
+      if (name === "ref") {
+        hasRef = true;
+      } else if (name === "class") {
+        hasClassBinding = true;
+      } else if (name === "style") {
+        hasStyleBinding = true;
+      } else if (name !== "key" && !dynamicPropNames.includes(name)) {
+        dynamicPropNames.push(name);
+      }
+      if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) {
+        dynamicPropNames.push(name);
+      }
+    } else {
+      hasDynamicKeys = true;
+    }
+  };
+  for (let i = 0; i < props.length; i++) {
+    const prop = props[i];
+    if (prop.type === 6) {
+      const { loc, name, value } = prop;
+      let isStatic = true;
+      if (name === "ref") {
+        hasRef = true;
+        if (context.scopes.vFor > 0) {
+          properties.push(
+            createObjectProperty(
+              createSimpleExpression("ref_for", true),
+              createSimpleExpression("true")
+            )
+          );
+        }
+        if (value && context.inline) {
+          const binding = context.bindingMetadata[value.content];
+          if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") {
+            isStatic = false;
+            properties.push(
+              createObjectProperty(
+                createSimpleExpression("ref_key", true),
+                createSimpleExpression(value.content, true, value.loc)
+              )
+            );
+          }
+        }
+      }
+      if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
+        "COMPILER_IS_ON_ELEMENT",
+        context
+      ))) {
+        continue;
+      }
+      properties.push(
+        createObjectProperty(
+          createSimpleExpression(
+            name,
+            true,
+            getInnerRange(loc, 0, name.length)
+          ),
+          createSimpleExpression(
+            value ? value.content : "",
+            isStatic,
+            value ? value.loc : loc
+          )
+        )
+      );
+    } else {
+      const { name, arg, exp, loc } = prop;
+      const isVBind = name === "bind";
+      const isVOn = name === "on";
+      if (name === "slot") {
+        if (!isComponent) {
+          context.onError(
+            createCompilerError(40, loc)
+          );
+        }
+        continue;
+      }
+      if (name === "once" || name === "memo") {
+        continue;
+      }
+      if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled(
+        "COMPILER_IS_ON_ELEMENT",
+        context
+      ))) {
+        continue;
+      }
+      if (isVOn && ssr) {
+        continue;
+      }
+      if (
+        // #938: elements with dynamic keys should be forced into blocks
+        isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked
+        // before children
+        isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update")
+      ) {
+        shouldUseBlock = true;
+      }
+      if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
+        properties.push(
+          createObjectProperty(
+            createSimpleExpression("ref_for", true),
+            createSimpleExpression("true")
+          )
+        );
+      }
+      if (!arg && (isVBind || isVOn)) {
+        hasDynamicKeys = true;
+        if (exp) {
+          if (isVBind) {
+            pushMergeArg();
+            {
+              if (isCompatEnabled(
+                "COMPILER_V_BIND_OBJECT_ORDER",
+                context
+              )) {
+                mergeArgs.unshift(exp);
+                continue;
+              }
+            }
+            mergeArgs.push(exp);
+          } else {
+            pushMergeArg({
+              type: 14,
+              loc,
+              callee: context.helper(TO_HANDLERS),
+              arguments: isComponent ? [exp] : [exp, `true`]
+            });
+          }
+        } else {
+          context.onError(
+            createCompilerError(
+              isVBind ? 34 : 35,
+              loc
+            )
+          );
+        }
+        continue;
+      }
+      const directiveTransform = context.directiveTransforms[name];
+      if (directiveTransform) {
+        const { props: props2, needRuntime } = directiveTransform(prop, node, context);
+        !ssr && props2.forEach(analyzePatchFlag);
+        if (isVOn && arg && !isStaticExp(arg)) {
+          pushMergeArg(createObjectExpression(props2, elementLoc));
+        } else {
+          properties.push(...props2);
+        }
+        if (needRuntime) {
+          runtimeDirectives.push(prop);
+          if (shared.isSymbol(needRuntime)) {
+            directiveImportMap.set(prop, needRuntime);
+          }
+        }
+      } else if (!shared.isBuiltInDirective(name)) {
+        runtimeDirectives.push(prop);
+        if (hasChildren) {
+          shouldUseBlock = true;
+        }
+      }
+    }
+  }
+  let propsExpression = void 0;
+  if (mergeArgs.length) {
+    pushMergeArg();
+    if (mergeArgs.length > 1) {
+      propsExpression = createCallExpression(
+        context.helper(MERGE_PROPS),
+        mergeArgs,
+        elementLoc
+      );
+    } else {
+      propsExpression = mergeArgs[0];
+    }
+  } else if (properties.length) {
+    propsExpression = createObjectExpression(
+      dedupeProperties(properties),
+      elementLoc
+    );
+  }
+  if (hasDynamicKeys) {
+    patchFlag |= 16;
+  } else {
+    if (hasClassBinding && !isComponent) {
+      patchFlag |= 2;
+    }
+    if (hasStyleBinding && !isComponent) {
+      patchFlag |= 4;
+    }
+    if (dynamicPropNames.length) {
+      patchFlag |= 8;
+    }
+    if (hasHydrationEventBinding) {
+      patchFlag |= 32;
+    }
+  }
+  if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
+    patchFlag |= 512;
+  }
+  if (!context.inSSR && propsExpression) {
+    switch (propsExpression.type) {
+      case 15:
+        let classKeyIndex = -1;
+        let styleKeyIndex = -1;
+        let hasDynamicKey = false;
+        for (let i = 0; i < propsExpression.properties.length; i++) {
+          const key = propsExpression.properties[i].key;
+          if (isStaticExp(key)) {
+            if (key.content === "class") {
+              classKeyIndex = i;
+            } else if (key.content === "style") {
+              styleKeyIndex = i;
+            }
+          } else if (!key.isHandlerKey) {
+            hasDynamicKey = true;
+          }
+        }
+        const classProp = propsExpression.properties[classKeyIndex];
+        const styleProp = propsExpression.properties[styleKeyIndex];
+        if (!hasDynamicKey) {
+          if (classProp && !isStaticExp(classProp.value)) {
+            classProp.value = createCallExpression(
+              context.helper(NORMALIZE_CLASS),
+              [classProp.value]
+            );
+          }
+          if (styleProp && // the static style is compiled into an object,
+          // so use `hasStyleBinding` to ensure that it is a dynamic style binding
+          (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,
+          // v-bind:style with static literal object
+          styleProp.value.type === 17)) {
+            styleProp.value = createCallExpression(
+              context.helper(NORMALIZE_STYLE),
+              [styleProp.value]
+            );
+          }
+        } else {
+          propsExpression = createCallExpression(
+            context.helper(NORMALIZE_PROPS),
+            [propsExpression]
+          );
+        }
+        break;
+      case 14:
+        break;
+      default:
+        propsExpression = createCallExpression(
+          context.helper(NORMALIZE_PROPS),
+          [
+            createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
+              propsExpression
+            ])
+          ]
+        );
+        break;
+    }
+  }
+  return {
+    props: propsExpression,
+    directives: runtimeDirectives,
+    patchFlag,
+    dynamicPropNames,
+    shouldUseBlock
+  };
+}
+function dedupeProperties(properties) {
+  const knownProps = /* @__PURE__ */ new Map();
+  const deduped = [];
+  for (let i = 0; i < properties.length; i++) {
+    const prop = properties[i];
+    if (prop.key.type === 8 || !prop.key.isStatic) {
+      deduped.push(prop);
+      continue;
+    }
+    const name = prop.key.content;
+    const existing = knownProps.get(name);
+    if (existing) {
+      if (name === "style" || name === "class" || shared.isOn(name)) {
+        mergeAsArray(existing, prop);
+      }
+    } else {
+      knownProps.set(name, prop);
+      deduped.push(prop);
+    }
+  }
+  return deduped;
+}
+function mergeAsArray(existing, incoming) {
+  if (existing.value.type === 17) {
+    existing.value.elements.push(incoming.value);
+  } else {
+    existing.value = createArrayExpression(
+      [existing.value, incoming.value],
+      existing.loc
+    );
+  }
+}
+function buildDirectiveArgs(dir, context) {
+  const dirArgs = [];
+  const runtime = directiveImportMap.get(dir);
+  if (runtime) {
+    dirArgs.push(context.helperString(runtime));
+  } else {
+    const fromSetup = resolveSetupReference("v-" + dir.name, context);
+    if (fromSetup) {
+      dirArgs.push(fromSetup);
+    } else {
+      context.helper(RESOLVE_DIRECTIVE);
+      context.directives.add(dir.name);
+      dirArgs.push(toValidAssetId(dir.name, `directive`));
+    }
+  }
+  const { loc } = dir;
+  if (dir.exp)
+    dirArgs.push(dir.exp);
+  if (dir.arg) {
+    if (!dir.exp) {
+      dirArgs.push(`void 0`);
+    }
+    dirArgs.push(dir.arg);
+  }
+  if (Object.keys(dir.modifiers).length) {
+    if (!dir.arg) {
+      if (!dir.exp) {
+        dirArgs.push(`void 0`);
+      }
+      dirArgs.push(`void 0`);
+    }
+    const trueExpression = createSimpleExpression(`true`, false, loc);
+    dirArgs.push(
+      createObjectExpression(
+        dir.modifiers.map(
+          (modifier) => createObjectProperty(modifier, trueExpression)
+        ),
+        loc
+      )
+    );
+  }
+  return createArrayExpression(dirArgs, dir.loc);
+}
+function stringifyDynamicPropNames(props) {
+  let propsNamesString = `[`;
+  for (let i = 0, l = props.length; i < l; i++) {
+    propsNamesString += JSON.stringify(props[i]);
+    if (i < l - 1)
+      propsNamesString += ", ";
+  }
+  return propsNamesString + `]`;
+}
+function isComponentTag(tag) {
+  return tag === "component" || tag === "Component";
+}
+
+const transformSlotOutlet = (node, context) => {
+  if (isSlotOutlet(node)) {
+    const { children, loc } = node;
+    const { slotName, slotProps } = processSlotOutlet(node, context);
+    const slotArgs = [
+      context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
+      slotName,
+      "{}",
+      "undefined",
+      "true"
+    ];
+    let expectedLen = 2;
+    if (slotProps) {
+      slotArgs[2] = slotProps;
+      expectedLen = 3;
+    }
+    if (children.length) {
+      slotArgs[3] = createFunctionExpression([], children, false, false, loc);
+      expectedLen = 4;
+    }
+    if (context.scopeId && !context.slotted) {
+      expectedLen = 5;
+    }
+    slotArgs.splice(expectedLen);
+    node.codegenNode = createCallExpression(
+      context.helper(RENDER_SLOT),
+      slotArgs,
+      loc
+    );
+  }
+};
+function processSlotOutlet(node, context) {
+  let slotName = `"default"`;
+  let slotProps = void 0;
+  const nonNameProps = [];
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      if (p.value) {
+        if (p.name === "name") {
+          slotName = JSON.stringify(p.value.content);
+        } else {
+          p.name = shared.camelize(p.name);
+          nonNameProps.push(p);
+        }
+      }
+    } else {
+      if (p.name === "bind" && isStaticArgOf(p.arg, "name")) {
+        if (p.exp)
+          slotName = p.exp;
+      } else {
+        if (p.name === "bind" && p.arg && isStaticExp(p.arg)) {
+          p.arg.content = shared.camelize(p.arg.content);
+        }
+        nonNameProps.push(p);
+      }
+    }
+  }
+  if (nonNameProps.length > 0) {
+    const { props, directives } = buildProps(
+      node,
+      context,
+      nonNameProps,
+      false,
+      false
+    );
+    slotProps = props;
+    if (directives.length) {
+      context.onError(
+        createCompilerError(
+          36,
+          directives[0].loc
+        )
+      );
+    }
+  }
+  return {
+    slotName,
+    slotProps
+  };
+}
+
+const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
+const transformOn = (dir, node, context, augmentor) => {
+  const { loc, modifiers, arg } = dir;
+  if (!dir.exp && !modifiers.length) {
+    context.onError(createCompilerError(35, loc));
+  }
+  let eventName;
+  if (arg.type === 4) {
+    if (arg.isStatic) {
+      let rawName = arg.content;
+      if (rawName.startsWith("vue:")) {
+        rawName = `vnode-${rawName.slice(4)}`;
+      }
+      const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? (
+        // for non-element and vnode lifecycle event listeners, auto convert
+        // it to camelCase. See issue #2249
+        shared.toHandlerKey(shared.camelize(rawName))
+      ) : (
+        // preserve case for plain element listeners that have uppercase
+        // letters, as these may be custom elements' custom events
+        `on:${rawName}`
+      );
+      eventName = createSimpleExpression(eventString, true, arg.loc);
+    } else {
+      eventName = createCompoundExpression([
+        `${context.helperString(TO_HANDLER_KEY)}(`,
+        arg,
+        `)`
+      ]);
+    }
+  } else {
+    eventName = arg;
+    eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
+    eventName.children.push(`)`);
+  }
+  let exp = dir.exp;
+  if (exp && !exp.content.trim()) {
+    exp = void 0;
+  }
+  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
+  if (exp) {
+    const isMemberExp = isMemberExpression(exp.content, context);
+    const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
+    const hasMultipleStatements = exp.content.includes(`;`);
+    if (context.prefixIdentifiers) {
+      isInlineStatement && context.addIdentifiers(`$event`);
+      exp = dir.exp = processExpression(
+        exp,
+        context,
+        false,
+        hasMultipleStatements
+      );
+      isInlineStatement && context.removeIdentifiers(`$event`);
+      shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once
+      !context.inVOnce && // runtime constants don't need to be cached
+      // (this is analyzed by compileScript in SFC <script setup>)
+      !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component -
+      // we need to use the original function to preserve arity,
+      // e.g. <transition> relies on checking cb.length to determine
+      // transition end handling. Inline function is ok since its arity
+      // is preserved even when cached.
+      !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot)
+      // it must be passed fresh to avoid stale values.
+      !hasScopeRef(exp, context.identifiers);
+      if (shouldCache && isMemberExp) {
+        if (exp.type === 4) {
+          exp.content = `${exp.content} && ${exp.content}(...args)`;
+        } else {
+          exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`];
+        }
+      }
+    }
+    if (isInlineStatement || shouldCache && isMemberExp) {
+      exp = createCompoundExpression([
+        `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? `
+//@ts-ignore
+` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
+        exp,
+        hasMultipleStatements ? `}` : `)`
+      ]);
+    }
+  }
+  let ret = {
+    props: [
+      createObjectProperty(
+        eventName,
+        exp || createSimpleExpression(`() => {}`, false, loc)
+      )
+    ]
+  };
+  if (augmentor) {
+    ret = augmentor(ret);
+  }
+  if (shouldCache) {
+    ret.props[0].value = context.cache(ret.props[0].value);
+  }
+  ret.props.forEach((p) => p.key.isHandlerKey = true);
+  return ret;
+};
+
+const transformBind = (dir, _node, context) => {
+  const { exp, modifiers, loc } = dir;
+  const arg = dir.arg;
+  if (arg.type !== 4) {
+    arg.children.unshift(`(`);
+    arg.children.push(`) || ""`);
+  } else if (!arg.isStatic) {
+    arg.content = `${arg.content} || ""`;
+  }
+  if (modifiers.includes("camel")) {
+    if (arg.type === 4) {
+      if (arg.isStatic) {
+        arg.content = shared.camelize(arg.content);
+      } else {
+        arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
+      }
+    } else {
+      arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
+      arg.children.push(`)`);
+    }
+  }
+  if (!context.inSSR) {
+    if (modifiers.includes("prop")) {
+      injectPrefix(arg, ".");
+    }
+    if (modifiers.includes("attr")) {
+      injectPrefix(arg, "^");
+    }
+  }
+  if (!exp || exp.type === 4 && !exp.content.trim()) {
+    context.onError(createCompilerError(34, loc));
+    return {
+      props: [createObjectProperty(arg, createSimpleExpression("", true, loc))]
+    };
+  }
+  return {
+    props: [createObjectProperty(arg, exp)]
+  };
+};
+const injectPrefix = (arg, prefix) => {
+  if (arg.type === 4) {
+    if (arg.isStatic) {
+      arg.content = prefix + arg.content;
+    } else {
+      arg.content = `\`${prefix}\${${arg.content}}\``;
+    }
+  } else {
+    arg.children.unshift(`'${prefix}' + (`);
+    arg.children.push(`)`);
+  }
+};
+
+const transformText = (node, context) => {
+  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
+    return () => {
+      const children = node.children;
+      let currentContainer = void 0;
+      let hasText = false;
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (isText$1(child)) {
+          hasText = true;
+          for (let j = i + 1; j < children.length; j++) {
+            const next = children[j];
+            if (isText$1(next)) {
+              if (!currentContainer) {
+                currentContainer = children[i] = createCompoundExpression(
+                  [child],
+                  child.loc
+                );
+              }
+              currentContainer.children.push(` + `, next);
+              children.splice(j, 1);
+              j--;
+            } else {
+              currentContainer = void 0;
+              break;
+            }
+          }
+        }
+      }
+      if (!hasText || // if this is a plain element with a single text child, leave it
+      // as-is since the runtime has dedicated fast path for this by directly
+      // setting textContent of the element.
+      // for component root it's always normalized anyway.
+      children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756
+      // custom directives can potentially add DOM elements arbitrarily,
+      // we need to avoid setting textContent of the element at runtime
+      // to avoid accidentally overwriting the DOM elements added
+      // by the user through custom directives.
+      !node.props.find(
+        (p) => p.type === 7 && !context.directiveTransforms[p.name]
+      ) && // in compat mode, <template> tags with no special directives
+      // will be rendered as a fragment so its children must be
+      // converted into vnodes.
+      !(node.tag === "template"))) {
+        return;
+      }
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (isText$1(child) || child.type === 8) {
+          const callArgs = [];
+          if (child.type !== 2 || child.content !== " ") {
+            callArgs.push(child);
+          }
+          if (!context.ssr && getConstantType(child, context) === 0) {
+            callArgs.push(
+              1 + (``)
+            );
+          }
+          children[i] = {
+            type: 12,
+            content: child,
+            loc: child.loc,
+            codegenNode: createCallExpression(
+              context.helper(CREATE_TEXT),
+              callArgs
+            )
+          };
+        }
+      }
+    };
+  }
+};
+
+const seen$1 = /* @__PURE__ */ new WeakSet();
+const transformOnce = (node, context) => {
+  if (node.type === 1 && findDir(node, "once", true)) {
+    if (seen$1.has(node) || context.inVOnce || context.inSSR) {
+      return;
+    }
+    seen$1.add(node);
+    context.inVOnce = true;
+    context.helper(SET_BLOCK_TRACKING);
+    return () => {
+      context.inVOnce = false;
+      const cur = context.currentNode;
+      if (cur.codegenNode) {
+        cur.codegenNode = context.cache(
+          cur.codegenNode,
+          true
+          /* isVNode */
+        );
+      }
+    };
+  }
+};
+
+const transformModel = (dir, node, context) => {
+  const { exp, arg } = dir;
+  if (!exp) {
+    context.onError(
+      createCompilerError(41, dir.loc)
+    );
+    return createTransformProps();
+  }
+  const rawExp = exp.loc.source;
+  const expString = exp.type === 4 ? exp.content : rawExp;
+  const bindingType = context.bindingMetadata[rawExp];
+  if (bindingType === "props" || bindingType === "props-aliased") {
+    context.onError(createCompilerError(44, exp.loc));
+    return createTransformProps();
+  }
+  const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref");
+  if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) {
+    context.onError(
+      createCompilerError(42, exp.loc)
+    );
+    return createTransformProps();
+  }
+  if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) {
+    context.onError(
+      createCompilerError(43, exp.loc)
+    );
+    return createTransformProps();
+  }
+  const propName = arg ? arg : createSimpleExpression("modelValue", true);
+  const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`;
+  let assignmentExp;
+  const eventArg = context.isTS ? `($event: any)` : `$event`;
+  if (maybeRef) {
+    if (bindingType === "setup-ref") {
+      assignmentExp = createCompoundExpression([
+        `${eventArg} => ((`,
+        createSimpleExpression(rawExp, false, exp.loc),
+        `).value = $event)`
+      ]);
+    } else {
+      const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`;
+      assignmentExp = createCompoundExpression([
+        `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`,
+        createSimpleExpression(rawExp, false, exp.loc),
+        `).value = $event : ${altAssignment})`
+      ]);
+    }
+  } else {
+    assignmentExp = createCompoundExpression([
+      `${eventArg} => ((`,
+      exp,
+      `) = $event)`
+    ]);
+  }
+  const props = [
+    // modelValue: foo
+    createObjectProperty(propName, dir.exp),
+    // "onUpdate:modelValue": $event => (foo = $event)
+    createObjectProperty(eventName, assignmentExp)
+  ];
+  if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) {
+    props[1].value = context.cache(props[1].value);
+  }
+  if (dir.modifiers.length && node.tagType === 1) {
+    const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
+    const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
+    props.push(
+      createObjectProperty(
+        modifiersKey,
+        createSimpleExpression(
+          `{ ${modifiers} }`,
+          false,
+          dir.loc,
+          2
+        )
+      )
+    );
+  }
+  return createTransformProps(props);
+};
+function createTransformProps(props = []) {
+  return { props };
+}
+
+const validDivisionCharRE = /[\w).+\-_$\]]/;
+const transformFilter = (node, context) => {
+  if (!isCompatEnabled("COMPILER_FILTER", context)) {
+    return;
+  }
+  if (node.type === 5) {
+    rewriteFilter(node.content, context);
+  }
+  if (node.type === 1) {
+    node.props.forEach((prop) => {
+      if (prop.type === 7 && prop.name !== "for" && prop.exp) {
+        rewriteFilter(prop.exp, context);
+      }
+    });
+  }
+};
+function rewriteFilter(node, context) {
+  if (node.type === 4) {
+    parseFilter(node, context);
+  } else {
+    for (let i = 0; i < node.children.length; i++) {
+      const child = node.children[i];
+      if (typeof child !== "object")
+        continue;
+      if (child.type === 4) {
+        parseFilter(child, context);
+      } else if (child.type === 8) {
+        rewriteFilter(node, context);
+      } else if (child.type === 5) {
+        rewriteFilter(child.content, context);
+      }
+    }
+  }
+}
+function parseFilter(node, context) {
+  const exp = node.content;
+  let inSingle = false;
+  let inDouble = false;
+  let inTemplateString = false;
+  let inRegex = false;
+  let curly = 0;
+  let square = 0;
+  let paren = 0;
+  let lastFilterIndex = 0;
+  let c, prev, i, expression, filters = [];
+  for (i = 0; i < exp.length; i++) {
+    prev = c;
+    c = exp.charCodeAt(i);
+    if (inSingle) {
+      if (c === 39 && prev !== 92)
+        inSingle = false;
+    } else if (inDouble) {
+      if (c === 34 && prev !== 92)
+        inDouble = false;
+    } else if (inTemplateString) {
+      if (c === 96 && prev !== 92)
+        inTemplateString = false;
+    } else if (inRegex) {
+      if (c === 47 && prev !== 92)
+        inRegex = false;
+    } else if (c === 124 && // pipe
+    exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {
+      if (expression === void 0) {
+        lastFilterIndex = i + 1;
+        expression = exp.slice(0, i).trim();
+      } else {
+        pushFilter();
+      }
+    } else {
+      switch (c) {
+        case 34:
+          inDouble = true;
+          break;
+        case 39:
+          inSingle = true;
+          break;
+        case 96:
+          inTemplateString = true;
+          break;
+        case 40:
+          paren++;
+          break;
+        case 41:
+          paren--;
+          break;
+        case 91:
+          square++;
+          break;
+        case 93:
+          square--;
+          break;
+        case 123:
+          curly++;
+          break;
+        case 125:
+          curly--;
+          break;
+      }
+      if (c === 47) {
+        let j = i - 1;
+        let p;
+        for (; j >= 0; j--) {
+          p = exp.charAt(j);
+          if (p !== " ")
+            break;
+        }
+        if (!p || !validDivisionCharRE.test(p)) {
+          inRegex = true;
+        }
+      }
+    }
+  }
+  if (expression === void 0) {
+    expression = exp.slice(0, i).trim();
+  } else if (lastFilterIndex !== 0) {
+    pushFilter();
+  }
+  function pushFilter() {
+    filters.push(exp.slice(lastFilterIndex, i).trim());
+    lastFilterIndex = i + 1;
+  }
+  if (filters.length) {
+    for (i = 0; i < filters.length; i++) {
+      expression = wrapFilter(expression, filters[i], context);
+    }
+    node.content = expression;
+  }
+}
+function wrapFilter(exp, filter, context) {
+  context.helper(RESOLVE_FILTER);
+  const i = filter.indexOf("(");
+  if (i < 0) {
+    context.filters.add(filter);
+    return `${toValidAssetId(filter, "filter")}(${exp})`;
+  } else {
+    const name = filter.slice(0, i);
+    const args = filter.slice(i + 1);
+    context.filters.add(name);
+    return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`;
+  }
+}
+
+const seen = /* @__PURE__ */ new WeakSet();
+const transformMemo = (node, context) => {
+  if (node.type === 1) {
+    const dir = findDir(node, "memo");
+    if (!dir || seen.has(node)) {
+      return;
+    }
+    seen.add(node);
+    return () => {
+      const codegenNode = node.codegenNode || context.currentNode.codegenNode;
+      if (codegenNode && codegenNode.type === 13) {
+        if (node.tagType !== 1) {
+          convertToBlock(codegenNode, context);
+        }
+        node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
+          dir.exp,
+          createFunctionExpression(void 0, codegenNode),
+          `_cache`,
+          String(context.cached++)
+        ]);
+      }
+    };
+  }
+};
+
+function getBaseTransformPreset(prefixIdentifiers) {
+  return [
+    [
+      transformOnce,
+      transformIf,
+      transformMemo,
+      transformFor,
+      ...[transformFilter] ,
+      ...prefixIdentifiers ? [
+        // order is important
+        trackVForSlotScopes,
+        transformExpression
+      ] : [],
+      transformSlotOutlet,
+      transformElement,
+      trackSlotScopes,
+      transformText
+    ],
+    {
+      on: transformOn,
+      bind: transformBind,
+      model: transformModel
+    }
+  ];
+}
+function baseCompile(template, options = {}) {
+  const onError = options.onError || defaultOnError;
+  const isModuleMode = options.mode === "module";
+  const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode;
+  if (!prefixIdentifiers && options.cacheHandlers) {
+    onError(createCompilerError(49));
+  }
+  if (options.scopeId && !isModuleMode) {
+    onError(createCompilerError(50));
+  }
+  const ast = shared.isString(template) ? baseParse(template, options) : template;
+  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers);
+  if (options.isTS) {
+    const { expressionPlugins } = options;
+    if (!expressionPlugins || !expressionPlugins.includes("typescript")) {
+      options.expressionPlugins = [...expressionPlugins || [], "typescript"];
+    }
+  }
+  transform(
+    ast,
+    shared.extend({}, options, {
+      prefixIdentifiers,
+      nodeTransforms: [
+        ...nodeTransforms,
+        ...options.nodeTransforms || []
+        // user transforms
+      ],
+      directiveTransforms: shared.extend(
+        {},
+        directiveTransforms,
+        options.directiveTransforms || {}
+        // user transforms
+      )
+    })
+  );
+  return generate(
+    ast,
+    shared.extend({}, options, {
+      prefixIdentifiers
+    })
+  );
+}
+
+const noopDirectiveTransform = () => ({ props: [] });
+
+exports.generateCodeFrame = shared.generateCodeFrame;
+exports.BASE_TRANSITION = BASE_TRANSITION;
+exports.CAMELIZE = CAMELIZE;
+exports.CAPITALIZE = CAPITALIZE;
+exports.CREATE_BLOCK = CREATE_BLOCK;
+exports.CREATE_COMMENT = CREATE_COMMENT;
+exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK;
+exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE;
+exports.CREATE_SLOTS = CREATE_SLOTS;
+exports.CREATE_STATIC = CREATE_STATIC;
+exports.CREATE_TEXT = CREATE_TEXT;
+exports.CREATE_VNODE = CREATE_VNODE;
+exports.FRAGMENT = FRAGMENT;
+exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS;
+exports.IS_MEMO_SAME = IS_MEMO_SAME;
+exports.IS_REF = IS_REF;
+exports.KEEP_ALIVE = KEEP_ALIVE;
+exports.MERGE_PROPS = MERGE_PROPS;
+exports.NORMALIZE_CLASS = NORMALIZE_CLASS;
+exports.NORMALIZE_PROPS = NORMALIZE_PROPS;
+exports.NORMALIZE_STYLE = NORMALIZE_STYLE;
+exports.OPEN_BLOCK = OPEN_BLOCK;
+exports.POP_SCOPE_ID = POP_SCOPE_ID;
+exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID;
+exports.RENDER_LIST = RENDER_LIST;
+exports.RENDER_SLOT = RENDER_SLOT;
+exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT;
+exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE;
+exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT;
+exports.RESOLVE_FILTER = RESOLVE_FILTER;
+exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING;
+exports.SUSPENSE = SUSPENSE;
+exports.TELEPORT = TELEPORT;
+exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING;
+exports.TO_HANDLERS = TO_HANDLERS;
+exports.TO_HANDLER_KEY = TO_HANDLER_KEY;
+exports.TS_NODE_TYPES = TS_NODE_TYPES;
+exports.UNREF = UNREF;
+exports.WITH_CTX = WITH_CTX;
+exports.WITH_DIRECTIVES = WITH_DIRECTIVES;
+exports.WITH_MEMO = WITH_MEMO;
+exports.advancePositionWithClone = advancePositionWithClone;
+exports.advancePositionWithMutation = advancePositionWithMutation;
+exports.assert = assert;
+exports.baseCompile = baseCompile;
+exports.baseParse = baseParse;
+exports.buildDirectiveArgs = buildDirectiveArgs;
+exports.buildProps = buildProps;
+exports.buildSlots = buildSlots;
+exports.checkCompatEnabled = checkCompatEnabled;
+exports.convertToBlock = convertToBlock;
+exports.createArrayExpression = createArrayExpression;
+exports.createAssignmentExpression = createAssignmentExpression;
+exports.createBlockStatement = createBlockStatement;
+exports.createCacheExpression = createCacheExpression;
+exports.createCallExpression = createCallExpression;
+exports.createCompilerError = createCompilerError;
+exports.createCompoundExpression = createCompoundExpression;
+exports.createConditionalExpression = createConditionalExpression;
+exports.createForLoopParams = createForLoopParams;
+exports.createFunctionExpression = createFunctionExpression;
+exports.createIfStatement = createIfStatement;
+exports.createInterpolation = createInterpolation;
+exports.createObjectExpression = createObjectExpression;
+exports.createObjectProperty = createObjectProperty;
+exports.createReturnStatement = createReturnStatement;
+exports.createRoot = createRoot;
+exports.createSequenceExpression = createSequenceExpression;
+exports.createSimpleExpression = createSimpleExpression;
+exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform;
+exports.createTemplateLiteral = createTemplateLiteral;
+exports.createTransformContext = createTransformContext;
+exports.createVNodeCall = createVNodeCall;
+exports.extractIdentifiers = extractIdentifiers;
+exports.findDir = findDir;
+exports.findProp = findProp;
+exports.generate = generate;
+exports.getBaseTransformPreset = getBaseTransformPreset;
+exports.getConstantType = getConstantType;
+exports.getInnerRange = getInnerRange;
+exports.getMemoedVNodeCall = getMemoedVNodeCall;
+exports.getVNodeBlockHelper = getVNodeBlockHelper;
+exports.getVNodeHelper = getVNodeHelper;
+exports.hasDynamicKeyVBind = hasDynamicKeyVBind;
+exports.hasScopeRef = hasScopeRef;
+exports.helperNameMap = helperNameMap;
+exports.injectProp = injectProp;
+exports.isBuiltInType = isBuiltInType;
+exports.isCoreComponent = isCoreComponent;
+exports.isFunctionType = isFunctionType;
+exports.isInDestructureAssignment = isInDestructureAssignment;
+exports.isMemberExpression = isMemberExpression;
+exports.isMemberExpressionBrowser = isMemberExpressionBrowser;
+exports.isMemberExpressionNode = isMemberExpressionNode;
+exports.isReferencedIdentifier = isReferencedIdentifier;
+exports.isSimpleIdentifier = isSimpleIdentifier;
+exports.isSlotOutlet = isSlotOutlet;
+exports.isStaticArgOf = isStaticArgOf;
+exports.isStaticExp = isStaticExp;
+exports.isStaticProperty = isStaticProperty;
+exports.isStaticPropertyKey = isStaticPropertyKey;
+exports.isTemplateNode = isTemplateNode;
+exports.isText = isText$1;
+exports.isVSlot = isVSlot;
+exports.locStub = locStub;
+exports.noopDirectiveTransform = noopDirectiveTransform;
+exports.processExpression = processExpression;
+exports.processFor = processFor;
+exports.processIf = processIf;
+exports.processSlotOutlet = processSlotOutlet;
+exports.registerRuntimeHelpers = registerRuntimeHelpers;
+exports.resolveComponentType = resolveComponentType;
+exports.stringifyExpression = stringifyExpression;
+exports.toValidAssetId = toValidAssetId;
+exports.trackSlotScopes = trackSlotScopes;
+exports.trackVForSlotScopes = trackVForSlotScopes;
+exports.transform = transform;
+exports.transformBind = transformBind;
+exports.transformElement = transformElement;
+exports.transformExpression = transformExpression;
+exports.transformModel = transformModel;
+exports.transformOn = transformOn;
+exports.traverseNode = traverseNode;
+exports.walkBlockDeclarations = walkBlockDeclarations;
+exports.walkFunctionParams = walkFunctionParams;
+exports.walkIdentifiers = walkIdentifiers;
+exports.warnDeprecation = warnDeprecation;

+ 992 - 0
node_modules/@vue/compiler-core/dist/compiler-core.d.ts

xqd
@@ -0,0 +1,992 @@
+import { ParserPlugin } from '@babel/parser';
+import { RawSourceMap, SourceMapGenerator } from 'source-map-js';
+import { Node as Node$1, Identifier, Function, BlockStatement as BlockStatement$1, Program, ObjectProperty } from '@babel/types';
+export { generateCodeFrame } from '@vue/shared';
+
+type OptionalOptions = 'whitespace' | 'isNativeTag' | 'isBuiltInComponent' | keyof CompilerCompatOptions;
+type MergedParserOptions = Omit<Required<ParserOptions>, OptionalOptions> & Pick<ParserOptions, OptionalOptions>;
+export declare const enum TextModes {
+    DATA = 0,
+    RCDATA = 1,
+    RAWTEXT = 2,
+    CDATA = 3,
+    ATTRIBUTE_VALUE = 4
+}
+interface ParserContext {
+    options: MergedParserOptions;
+    readonly originalSource: string;
+    source: string;
+    offset: number;
+    line: number;
+    column: number;
+    inPre: boolean;
+    inVPre: boolean;
+    onWarn: NonNullable<ErrorHandlingOptions['onWarn']>;
+}
+export declare function baseParse(content: string, options?: ParserOptions): RootNode;
+
+type CompilerCompatConfig = Partial<Record<CompilerDeprecationTypes, boolean | 'suppress-warning'>> & {
+    MODE?: 2 | 3;
+};
+interface CompilerCompatOptions {
+    compatConfig?: CompilerCompatConfig;
+}
+export declare const enum CompilerDeprecationTypes {
+    COMPILER_IS_ON_ELEMENT = "COMPILER_IS_ON_ELEMENT",
+    COMPILER_V_BIND_SYNC = "COMPILER_V_BIND_SYNC",
+    COMPILER_V_BIND_PROP = "COMPILER_V_BIND_PROP",
+    COMPILER_V_BIND_OBJECT_ORDER = "COMPILER_V_BIND_OBJECT_ORDER",
+    COMPILER_V_ON_NATIVE = "COMPILER_V_ON_NATIVE",
+    COMPILER_V_IF_V_FOR_PRECEDENCE = "COMPILER_V_IF_V_FOR_PRECEDENCE",
+    COMPILER_NATIVE_TEMPLATE = "COMPILER_NATIVE_TEMPLATE",
+    COMPILER_INLINE_TEMPLATE = "COMPILER_INLINE_TEMPLATE",
+    COMPILER_FILTERS = "COMPILER_FILTER"
+}
+export declare function checkCompatEnabled(key: CompilerDeprecationTypes, context: ParserContext | TransformContext, loc: SourceLocation | null, ...args: any[]): boolean;
+export declare function warnDeprecation(key: CompilerDeprecationTypes, context: ParserContext | TransformContext, loc: SourceLocation | null, ...args: any[]): void;
+
+export type NodeTransform = (node: RootNode | TemplateChildNode, context: TransformContext) => void | (() => void) | (() => void)[];
+export type DirectiveTransform = (dir: DirectiveNode, node: ElementNode, context: TransformContext, augmentor?: (ret: DirectiveTransformResult) => DirectiveTransformResult) => DirectiveTransformResult;
+interface DirectiveTransformResult {
+    props: Property[];
+    needRuntime?: boolean | symbol;
+    ssrTagParts?: TemplateLiteral['elements'];
+}
+export type StructuralDirectiveTransform = (node: ElementNode, dir: DirectiveNode, context: TransformContext) => void | (() => void);
+interface ImportItem {
+    exp: string | ExpressionNode;
+    path: string;
+}
+export interface TransformContext extends Required<Omit<TransformOptions, 'filename' | keyof CompilerCompatOptions>>, CompilerCompatOptions {
+    selfName: string | null;
+    root: RootNode;
+    helpers: Map<symbol, number>;
+    components: Set<string>;
+    directives: Set<string>;
+    hoists: (JSChildNode | null)[];
+    imports: ImportItem[];
+    temps: number;
+    cached: number;
+    identifiers: {
+        [name: string]: number | undefined;
+    };
+    scopes: {
+        vFor: number;
+        vSlot: number;
+        vPre: number;
+        vOnce: number;
+    };
+    parent: ParentNode | null;
+    childIndex: number;
+    currentNode: RootNode | TemplateChildNode | null;
+    inVOnce: boolean;
+    helper<T extends symbol>(name: T): T;
+    removeHelper<T extends symbol>(name: T): void;
+    helperString(name: symbol): string;
+    replaceNode(node: TemplateChildNode): void;
+    removeNode(node?: TemplateChildNode): void;
+    onNodeRemoved(): void;
+    addIdentifiers(exp: ExpressionNode | string): void;
+    removeIdentifiers(exp: ExpressionNode | string): void;
+    hoist(exp: string | JSChildNode | ArrayExpression): SimpleExpressionNode;
+    cache<T extends JSChildNode>(exp: T, isVNode?: boolean): CacheExpression | T;
+    constantCache: Map<TemplateChildNode, ConstantTypes>;
+    filters?: Set<string>;
+}
+export declare function createTransformContext(root: RootNode, { filename, prefixIdentifiers, hoistStatic, cacheHandlers, nodeTransforms, directiveTransforms, transformHoist, isBuiltInComponent, isCustomElement, expressionPlugins, scopeId, slotted, ssr, inSSR, ssrCssVars, bindingMetadata, inline, isTS, onError, onWarn, compatConfig }: TransformOptions): TransformContext;
+export declare function transform(root: RootNode, options: TransformOptions): void;
+export declare function traverseNode(node: RootNode | TemplateChildNode, context: TransformContext): void;
+export declare function createStructuralDirectiveTransform(name: string | RegExp, fn: StructuralDirectiveTransform): NodeTransform;
+
+export declare function processFor(node: ElementNode, dir: DirectiveNode, context: TransformContext, processCodegen?: (forNode: ForNode) => (() => void) | undefined): (() => void) | undefined;
+interface ForParseResult {
+    source: ExpressionNode;
+    value: ExpressionNode | undefined;
+    key: ExpressionNode | undefined;
+    index: ExpressionNode | undefined;
+}
+export declare function createForLoopParams({ value, key, index }: ForParseResult, memoArgs?: ExpressionNode[]): ExpressionNode[];
+
+export declare const FRAGMENT: unique symbol;
+export declare const TELEPORT: unique symbol;
+export declare const SUSPENSE: unique symbol;
+export declare const KEEP_ALIVE: unique symbol;
+export declare const BASE_TRANSITION: unique symbol;
+export declare const OPEN_BLOCK: unique symbol;
+export declare const CREATE_BLOCK: unique symbol;
+export declare const CREATE_ELEMENT_BLOCK: unique symbol;
+export declare const CREATE_VNODE: unique symbol;
+export declare const CREATE_ELEMENT_VNODE: unique symbol;
+export declare const CREATE_COMMENT: unique symbol;
+export declare const CREATE_TEXT: unique symbol;
+export declare const CREATE_STATIC: unique symbol;
+export declare const RESOLVE_COMPONENT: unique symbol;
+export declare const RESOLVE_DYNAMIC_COMPONENT: unique symbol;
+export declare const RESOLVE_DIRECTIVE: unique symbol;
+export declare const RESOLVE_FILTER: unique symbol;
+export declare const WITH_DIRECTIVES: unique symbol;
+export declare const RENDER_LIST: unique symbol;
+export declare const RENDER_SLOT: unique symbol;
+export declare const CREATE_SLOTS: unique symbol;
+export declare const TO_DISPLAY_STRING: unique symbol;
+export declare const MERGE_PROPS: unique symbol;
+export declare const NORMALIZE_CLASS: unique symbol;
+export declare const NORMALIZE_STYLE: unique symbol;
+export declare const NORMALIZE_PROPS: unique symbol;
+export declare const GUARD_REACTIVE_PROPS: unique symbol;
+export declare const TO_HANDLERS: unique symbol;
+export declare const CAMELIZE: unique symbol;
+export declare const CAPITALIZE: unique symbol;
+export declare const TO_HANDLER_KEY: unique symbol;
+export declare const SET_BLOCK_TRACKING: unique symbol;
+export declare const PUSH_SCOPE_ID: unique symbol;
+export declare const POP_SCOPE_ID: unique symbol;
+export declare const WITH_CTX: unique symbol;
+export declare const UNREF: unique symbol;
+export declare const IS_REF: unique symbol;
+export declare const WITH_MEMO: unique symbol;
+export declare const IS_MEMO_SAME: unique symbol;
+export declare const helperNameMap: Record<symbol, string>;
+export declare function registerRuntimeHelpers(helpers: Record<symbol, string>): void;
+
+export declare const transformElement: NodeTransform;
+export declare function resolveComponentType(node: ComponentNode, context: TransformContext, ssr?: boolean): string | symbol | CallExpression;
+export type PropsExpression = ObjectExpression | CallExpression | ExpressionNode;
+export declare function buildProps(node: ElementNode, context: TransformContext, props: (DirectiveNode | AttributeNode)[] | undefined, isComponent: boolean, isDynamicComponent: boolean, ssr?: boolean): {
+    props: PropsExpression | undefined;
+    directives: DirectiveNode[];
+    patchFlag: number;
+    dynamicPropNames: string[];
+    shouldUseBlock: boolean;
+};
+export declare function buildDirectiveArgs(dir: DirectiveNode, context: TransformContext): ArrayExpression;
+
+export type Namespace = number;
+export declare const enum Namespaces {
+    HTML = 0
+}
+export declare const enum NodeTypes {
+    ROOT = 0,
+    ELEMENT = 1,
+    TEXT = 2,
+    COMMENT = 3,
+    SIMPLE_EXPRESSION = 4,
+    INTERPOLATION = 5,
+    ATTRIBUTE = 6,
+    DIRECTIVE = 7,
+    COMPOUND_EXPRESSION = 8,
+    IF = 9,
+    IF_BRANCH = 10,
+    FOR = 11,
+    TEXT_CALL = 12,
+    VNODE_CALL = 13,
+    JS_CALL_EXPRESSION = 14,
+    JS_OBJECT_EXPRESSION = 15,
+    JS_PROPERTY = 16,
+    JS_ARRAY_EXPRESSION = 17,
+    JS_FUNCTION_EXPRESSION = 18,
+    JS_CONDITIONAL_EXPRESSION = 19,
+    JS_CACHE_EXPRESSION = 20,
+    JS_BLOCK_STATEMENT = 21,
+    JS_TEMPLATE_LITERAL = 22,
+    JS_IF_STATEMENT = 23,
+    JS_ASSIGNMENT_EXPRESSION = 24,
+    JS_SEQUENCE_EXPRESSION = 25,
+    JS_RETURN_STATEMENT = 26
+}
+export declare const enum ElementTypes {
+    ELEMENT = 0,
+    COMPONENT = 1,
+    SLOT = 2,
+    TEMPLATE = 3
+}
+export interface Node {
+    type: NodeTypes;
+    loc: SourceLocation;
+}
+export interface SourceLocation {
+    start: Position;
+    end: Position;
+    source: string;
+}
+export interface Position {
+    offset: number;
+    line: number;
+    column: number;
+}
+export type ParentNode = RootNode | ElementNode | IfBranchNode | ForNode;
+export type ExpressionNode = SimpleExpressionNode | CompoundExpressionNode;
+export type TemplateChildNode = ElementNode | InterpolationNode | CompoundExpressionNode | TextNode | CommentNode | IfNode | IfBranchNode | ForNode | TextCallNode;
+export interface RootNode extends Node {
+    type: NodeTypes.ROOT;
+    children: TemplateChildNode[];
+    helpers: Set<symbol>;
+    components: string[];
+    directives: string[];
+    hoists: (JSChildNode | null)[];
+    imports: ImportItem[];
+    cached: number;
+    temps: number;
+    ssrHelpers?: symbol[];
+    codegenNode?: TemplateChildNode | JSChildNode | BlockStatement;
+    filters?: string[];
+}
+export type ElementNode = PlainElementNode | ComponentNode | SlotOutletNode | TemplateNode;
+export interface BaseElementNode extends Node {
+    type: NodeTypes.ELEMENT;
+    ns: Namespace;
+    tag: string;
+    tagType: ElementTypes;
+    isSelfClosing: boolean;
+    props: Array<AttributeNode | DirectiveNode>;
+    children: TemplateChildNode[];
+}
+export interface PlainElementNode extends BaseElementNode {
+    tagType: ElementTypes.ELEMENT;
+    codegenNode: VNodeCall | SimpleExpressionNode | CacheExpression | MemoExpression | undefined;
+    ssrCodegenNode?: TemplateLiteral;
+}
+export interface ComponentNode extends BaseElementNode {
+    tagType: ElementTypes.COMPONENT;
+    codegenNode: VNodeCall | CacheExpression | MemoExpression | undefined;
+    ssrCodegenNode?: CallExpression;
+}
+export interface SlotOutletNode extends BaseElementNode {
+    tagType: ElementTypes.SLOT;
+    codegenNode: RenderSlotCall | CacheExpression | undefined;
+    ssrCodegenNode?: CallExpression;
+}
+export interface TemplateNode extends BaseElementNode {
+    tagType: ElementTypes.TEMPLATE;
+    codegenNode: undefined;
+}
+export interface TextNode extends Node {
+    type: NodeTypes.TEXT;
+    content: string;
+}
+export interface CommentNode extends Node {
+    type: NodeTypes.COMMENT;
+    content: string;
+}
+export interface AttributeNode extends Node {
+    type: NodeTypes.ATTRIBUTE;
+    name: string;
+    value: TextNode | undefined;
+}
+export interface DirectiveNode extends Node {
+    type: NodeTypes.DIRECTIVE;
+    name: string;
+    exp: ExpressionNode | undefined;
+    arg: ExpressionNode | undefined;
+    modifiers: string[];
+    /**
+     * optional property to cache the expression parse result for v-for
+     */
+    parseResult?: ForParseResult;
+}
+/**
+ * Static types have several levels.
+ * Higher levels implies lower levels. e.g. a node that can be stringified
+ * can always be hoisted and skipped for patch.
+ */
+export declare const enum ConstantTypes {
+    NOT_CONSTANT = 0,
+    CAN_SKIP_PATCH = 1,
+    CAN_HOIST = 2,
+    CAN_STRINGIFY = 3
+}
+export interface SimpleExpressionNode extends Node {
+    type: NodeTypes.SIMPLE_EXPRESSION;
+    content: string;
+    isStatic: boolean;
+    constType: ConstantTypes;
+    /**
+     * Indicates this is an identifier for a hoist vnode call and points to the
+     * hoisted node.
+     */
+    hoisted?: JSChildNode;
+    /**
+     * an expression parsed as the params of a function will track
+     * the identifiers declared inside the function body.
+     */
+    identifiers?: string[];
+    isHandlerKey?: boolean;
+}
+export interface InterpolationNode extends Node {
+    type: NodeTypes.INTERPOLATION;
+    content: ExpressionNode;
+}
+export interface CompoundExpressionNode extends Node {
+    type: NodeTypes.COMPOUND_EXPRESSION;
+    children: (SimpleExpressionNode | CompoundExpressionNode | InterpolationNode | TextNode | string | symbol)[];
+    /**
+     * an expression parsed as the params of a function will track
+     * the identifiers declared inside the function body.
+     */
+    identifiers?: string[];
+    isHandlerKey?: boolean;
+}
+export interface IfNode extends Node {
+    type: NodeTypes.IF;
+    branches: IfBranchNode[];
+    codegenNode?: IfConditionalExpression | CacheExpression;
+}
+export interface IfBranchNode extends Node {
+    type: NodeTypes.IF_BRANCH;
+    condition: ExpressionNode | undefined;
+    children: TemplateChildNode[];
+    userKey?: AttributeNode | DirectiveNode;
+    isTemplateIf?: boolean;
+}
+export interface ForNode extends Node {
+    type: NodeTypes.FOR;
+    source: ExpressionNode;
+    valueAlias: ExpressionNode | undefined;
+    keyAlias: ExpressionNode | undefined;
+    objectIndexAlias: ExpressionNode | undefined;
+    parseResult: ForParseResult;
+    children: TemplateChildNode[];
+    codegenNode?: ForCodegenNode;
+}
+export interface TextCallNode extends Node {
+    type: NodeTypes.TEXT_CALL;
+    content: TextNode | InterpolationNode | CompoundExpressionNode;
+    codegenNode: CallExpression | SimpleExpressionNode;
+}
+export type TemplateTextChildNode = TextNode | InterpolationNode | CompoundExpressionNode;
+export interface VNodeCall extends Node {
+    type: NodeTypes.VNODE_CALL;
+    tag: string | symbol | CallExpression;
+    props: PropsExpression | undefined;
+    children: TemplateChildNode[] | TemplateTextChildNode | SlotsExpression | ForRenderListExpression | SimpleExpressionNode | undefined;
+    patchFlag: string | undefined;
+    dynamicProps: string | SimpleExpressionNode | undefined;
+    directives: DirectiveArguments | undefined;
+    isBlock: boolean;
+    disableTracking: boolean;
+    isComponent: boolean;
+}
+export type JSChildNode = VNodeCall | CallExpression | ObjectExpression | ArrayExpression | ExpressionNode | FunctionExpression | ConditionalExpression | CacheExpression | AssignmentExpression | SequenceExpression;
+export interface CallExpression extends Node {
+    type: NodeTypes.JS_CALL_EXPRESSION;
+    callee: string | symbol;
+    arguments: (string | symbol | JSChildNode | SSRCodegenNode | TemplateChildNode | TemplateChildNode[])[];
+}
+export interface ObjectExpression extends Node {
+    type: NodeTypes.JS_OBJECT_EXPRESSION;
+    properties: Array<Property>;
+}
+export interface Property extends Node {
+    type: NodeTypes.JS_PROPERTY;
+    key: ExpressionNode;
+    value: JSChildNode;
+}
+export interface ArrayExpression extends Node {
+    type: NodeTypes.JS_ARRAY_EXPRESSION;
+    elements: Array<string | Node>;
+}
+export interface FunctionExpression extends Node {
+    type: NodeTypes.JS_FUNCTION_EXPRESSION;
+    params: ExpressionNode | string | (ExpressionNode | string)[] | undefined;
+    returns?: TemplateChildNode | TemplateChildNode[] | JSChildNode;
+    body?: BlockStatement | IfStatement;
+    newline: boolean;
+    /**
+     * This flag is for codegen to determine whether it needs to generate the
+     * withScopeId() wrapper
+     */
+    isSlot: boolean;
+    /**
+     * __COMPAT__ only, indicates a slot function that should be excluded from
+     * the legacy $scopedSlots instance property.
+     */
+    isNonScopedSlot?: boolean;
+}
+export interface ConditionalExpression extends Node {
+    type: NodeTypes.JS_CONDITIONAL_EXPRESSION;
+    test: JSChildNode;
+    consequent: JSChildNode;
+    alternate: JSChildNode;
+    newline: boolean;
+}
+export interface CacheExpression extends Node {
+    type: NodeTypes.JS_CACHE_EXPRESSION;
+    index: number;
+    value: JSChildNode;
+    isVNode: boolean;
+}
+export interface MemoExpression extends CallExpression {
+    callee: typeof WITH_MEMO;
+    arguments: [ExpressionNode, MemoFactory, string, string];
+}
+interface MemoFactory extends FunctionExpression {
+    returns: BlockCodegenNode;
+}
+export type SSRCodegenNode = BlockStatement | TemplateLiteral | IfStatement | AssignmentExpression | ReturnStatement | SequenceExpression;
+export interface BlockStatement extends Node {
+    type: NodeTypes.JS_BLOCK_STATEMENT;
+    body: (JSChildNode | IfStatement)[];
+}
+export interface TemplateLiteral extends Node {
+    type: NodeTypes.JS_TEMPLATE_LITERAL;
+    elements: (string | JSChildNode)[];
+}
+export interface IfStatement extends Node {
+    type: NodeTypes.JS_IF_STATEMENT;
+    test: ExpressionNode;
+    consequent: BlockStatement;
+    alternate: IfStatement | BlockStatement | ReturnStatement | undefined;
+}
+export interface AssignmentExpression extends Node {
+    type: NodeTypes.JS_ASSIGNMENT_EXPRESSION;
+    left: SimpleExpressionNode;
+    right: JSChildNode;
+}
+export interface SequenceExpression extends Node {
+    type: NodeTypes.JS_SEQUENCE_EXPRESSION;
+    expressions: JSChildNode[];
+}
+export interface ReturnStatement extends Node {
+    type: NodeTypes.JS_RETURN_STATEMENT;
+    returns: TemplateChildNode | TemplateChildNode[] | JSChildNode;
+}
+export interface DirectiveArguments extends ArrayExpression {
+    elements: DirectiveArgumentNode[];
+}
+export interface DirectiveArgumentNode extends ArrayExpression {
+    elements: [string] | [string, ExpressionNode] | [string, ExpressionNode, ExpressionNode] | [string, ExpressionNode, ExpressionNode, ObjectExpression];
+}
+export interface RenderSlotCall extends CallExpression {
+    callee: typeof RENDER_SLOT;
+    arguments: [string, string | ExpressionNode] | [string, string | ExpressionNode, PropsExpression] | [
+        string,
+        string | ExpressionNode,
+        PropsExpression | '{}',
+        TemplateChildNode[]
+    ];
+}
+export type SlotsExpression = SlotsObjectExpression | DynamicSlotsExpression;
+export interface SlotsObjectExpression extends ObjectExpression {
+    properties: SlotsObjectProperty[];
+}
+export interface SlotsObjectProperty extends Property {
+    value: SlotFunctionExpression;
+}
+export interface SlotFunctionExpression extends FunctionExpression {
+    returns: TemplateChildNode[];
+}
+export interface DynamicSlotsExpression extends CallExpression {
+    callee: typeof CREATE_SLOTS;
+    arguments: [SlotsObjectExpression, DynamicSlotEntries];
+}
+export interface DynamicSlotEntries extends ArrayExpression {
+    elements: (ConditionalDynamicSlotNode | ListDynamicSlotNode)[];
+}
+export interface ConditionalDynamicSlotNode extends ConditionalExpression {
+    consequent: DynamicSlotNode;
+    alternate: DynamicSlotNode | SimpleExpressionNode;
+}
+export interface ListDynamicSlotNode extends CallExpression {
+    callee: typeof RENDER_LIST;
+    arguments: [ExpressionNode, ListDynamicSlotIterator];
+}
+export interface ListDynamicSlotIterator extends FunctionExpression {
+    returns: DynamicSlotNode;
+}
+export interface DynamicSlotNode extends ObjectExpression {
+    properties: [Property, DynamicSlotFnProperty];
+}
+export interface DynamicSlotFnProperty extends Property {
+    value: SlotFunctionExpression;
+}
+export type BlockCodegenNode = VNodeCall | RenderSlotCall;
+export interface IfConditionalExpression extends ConditionalExpression {
+    consequent: BlockCodegenNode | MemoExpression;
+    alternate: BlockCodegenNode | IfConditionalExpression | MemoExpression;
+}
+export interface ForCodegenNode extends VNodeCall {
+    isBlock: true;
+    tag: typeof FRAGMENT;
+    props: undefined;
+    children: ForRenderListExpression;
+    patchFlag: string;
+    disableTracking: boolean;
+}
+export interface ForRenderListExpression extends CallExpression {
+    callee: typeof RENDER_LIST;
+    arguments: [ExpressionNode, ForIteratorExpression];
+}
+export interface ForIteratorExpression extends FunctionExpression {
+    returns: BlockCodegenNode;
+}
+export declare const locStub: SourceLocation;
+export declare function createRoot(children: TemplateChildNode[], loc?: SourceLocation): RootNode;
+export declare function createVNodeCall(context: TransformContext | null, tag: VNodeCall['tag'], props?: VNodeCall['props'], children?: VNodeCall['children'], patchFlag?: VNodeCall['patchFlag'], dynamicProps?: VNodeCall['dynamicProps'], directives?: VNodeCall['directives'], isBlock?: VNodeCall['isBlock'], disableTracking?: VNodeCall['disableTracking'], isComponent?: VNodeCall['isComponent'], loc?: SourceLocation): VNodeCall;
+export declare function createArrayExpression(elements: ArrayExpression['elements'], loc?: SourceLocation): ArrayExpression;
+export declare function createObjectExpression(properties: ObjectExpression['properties'], loc?: SourceLocation): ObjectExpression;
+export declare function createObjectProperty(key: Property['key'] | string, value: Property['value']): Property;
+export declare function createSimpleExpression(content: SimpleExpressionNode['content'], isStatic?: SimpleExpressionNode['isStatic'], loc?: SourceLocation, constType?: ConstantTypes): SimpleExpressionNode;
+export declare function createInterpolation(content: InterpolationNode['content'] | string, loc: SourceLocation): InterpolationNode;
+export declare function createCompoundExpression(children: CompoundExpressionNode['children'], loc?: SourceLocation): CompoundExpressionNode;
+type InferCodegenNodeType<T> = T extends typeof RENDER_SLOT ? RenderSlotCall : CallExpression;
+export declare function createCallExpression<T extends CallExpression['callee']>(callee: T, args?: CallExpression['arguments'], loc?: SourceLocation): InferCodegenNodeType<T>;
+export declare function createFunctionExpression(params: FunctionExpression['params'], returns?: FunctionExpression['returns'], newline?: boolean, isSlot?: boolean, loc?: SourceLocation): FunctionExpression;
+export declare function createConditionalExpression(test: ConditionalExpression['test'], consequent: ConditionalExpression['consequent'], alternate: ConditionalExpression['alternate'], newline?: boolean): ConditionalExpression;
+export declare function createCacheExpression(index: number, value: JSChildNode, isVNode?: boolean): CacheExpression;
+export declare function createBlockStatement(body: BlockStatement['body']): BlockStatement;
+export declare function createTemplateLiteral(elements: TemplateLiteral['elements']): TemplateLiteral;
+export declare function createIfStatement(test: IfStatement['test'], consequent: IfStatement['consequent'], alternate?: IfStatement['alternate']): IfStatement;
+export declare function createAssignmentExpression(left: AssignmentExpression['left'], right: AssignmentExpression['right']): AssignmentExpression;
+export declare function createSequenceExpression(expressions: SequenceExpression['expressions']): SequenceExpression;
+export declare function createReturnStatement(returns: ReturnStatement['returns']): ReturnStatement;
+export declare function getVNodeHelper(ssr: boolean, isComponent: boolean): typeof CREATE_VNODE | typeof CREATE_ELEMENT_VNODE;
+export declare function getVNodeBlockHelper(ssr: boolean, isComponent: boolean): typeof CREATE_BLOCK | typeof CREATE_ELEMENT_BLOCK;
+export declare function convertToBlock(node: VNodeCall, { helper, removeHelper, inSSR }: TransformContext): void;
+
+export interface CompilerError extends SyntaxError {
+    code: number | string;
+    loc?: SourceLocation;
+}
+export interface CoreCompilerError extends CompilerError {
+    code: ErrorCodes;
+}
+type InferCompilerError<T> = T extends ErrorCodes ? CoreCompilerError : CompilerError;
+export declare function createCompilerError<T extends number>(code: T, loc?: SourceLocation, messages?: {
+    [code: number]: string;
+}, additionalMessage?: string): InferCompilerError<T>;
+export declare const enum ErrorCodes {
+    ABRUPT_CLOSING_OF_EMPTY_COMMENT = 0,
+    CDATA_IN_HTML_CONTENT = 1,
+    DUPLICATE_ATTRIBUTE = 2,
+    END_TAG_WITH_ATTRIBUTES = 3,
+    END_TAG_WITH_TRAILING_SOLIDUS = 4,
+    EOF_BEFORE_TAG_NAME = 5,
+    EOF_IN_CDATA = 6,
+    EOF_IN_COMMENT = 7,
+    EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT = 8,
+    EOF_IN_TAG = 9,
+    INCORRECTLY_CLOSED_COMMENT = 10,
+    INCORRECTLY_OPENED_COMMENT = 11,
+    INVALID_FIRST_CHARACTER_OF_TAG_NAME = 12,
+    MISSING_ATTRIBUTE_VALUE = 13,
+    MISSING_END_TAG_NAME = 14,
+    MISSING_WHITESPACE_BETWEEN_ATTRIBUTES = 15,
+    NESTED_COMMENT = 16,
+    UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME = 17,
+    UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE = 18,
+    UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME = 19,
+    UNEXPECTED_NULL_CHARACTER = 20,
+    UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME = 21,
+    UNEXPECTED_SOLIDUS_IN_TAG = 22,
+    X_INVALID_END_TAG = 23,
+    X_MISSING_END_TAG = 24,
+    X_MISSING_INTERPOLATION_END = 25,
+    X_MISSING_DIRECTIVE_NAME = 26,
+    X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END = 27,
+    X_V_IF_NO_EXPRESSION = 28,
+    X_V_IF_SAME_KEY = 29,
+    X_V_ELSE_NO_ADJACENT_IF = 30,
+    X_V_FOR_NO_EXPRESSION = 31,
+    X_V_FOR_MALFORMED_EXPRESSION = 32,
+    X_V_FOR_TEMPLATE_KEY_PLACEMENT = 33,
+    X_V_BIND_NO_EXPRESSION = 34,
+    X_V_ON_NO_EXPRESSION = 35,
+    X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET = 36,
+    X_V_SLOT_MIXED_SLOT_USAGE = 37,
+    X_V_SLOT_DUPLICATE_SLOT_NAMES = 38,
+    X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN = 39,
+    X_V_SLOT_MISPLACED = 40,
+    X_V_MODEL_NO_EXPRESSION = 41,
+    X_V_MODEL_MALFORMED_EXPRESSION = 42,
+    X_V_MODEL_ON_SCOPE_VARIABLE = 43,
+    X_V_MODEL_ON_PROPS = 44,
+    X_INVALID_EXPRESSION = 45,
+    X_KEEP_ALIVE_INVALID_CHILDREN = 46,
+    X_PREFIX_ID_NOT_SUPPORTED = 47,
+    X_MODULE_MODE_NOT_SUPPORTED = 48,
+    X_CACHE_HANDLER_NOT_SUPPORTED = 49,
+    X_SCOPE_ID_NOT_SUPPORTED = 50,
+    DEPRECATION_VNODE_HOOKS = 51,
+    DEPRECATION_V_IS = 52,
+    __EXTEND_POINT__ = 53
+}
+
+interface ErrorHandlingOptions {
+    onWarn?: (warning: CompilerError) => void;
+    onError?: (error: CompilerError) => void;
+}
+export interface ParserOptions extends ErrorHandlingOptions, CompilerCompatOptions {
+    /**
+     * e.g. platform native elements, e.g. `<div>` for browsers
+     */
+    isNativeTag?: (tag: string) => boolean;
+    /**
+     * e.g. native elements that can self-close, e.g. `<img>`, `<br>`, `<hr>`
+     */
+    isVoidTag?: (tag: string) => boolean;
+    /**
+     * e.g. elements that should preserve whitespace inside, e.g. `<pre>`
+     */
+    isPreTag?: (tag: string) => boolean;
+    /**
+     * Platform-specific built-in components e.g. `<Transition>`
+     */
+    isBuiltInComponent?: (tag: string) => symbol | void;
+    /**
+     * Separate option for end users to extend the native elements list
+     */
+    isCustomElement?: (tag: string) => boolean | void;
+    /**
+     * Get tag namespace
+     */
+    getNamespace?: (tag: string, parent: ElementNode | undefined) => Namespace;
+    /**
+     * Get text parsing mode for this element
+     */
+    getTextMode?: (node: ElementNode, parent: ElementNode | undefined) => TextModes;
+    /**
+     * @default ['{{', '}}']
+     */
+    delimiters?: [string, string];
+    /**
+     * Whitespace handling strategy
+     */
+    whitespace?: 'preserve' | 'condense';
+    /**
+     * Only needed for DOM compilers
+     */
+    decodeEntities?: (rawText: string, asAttr: boolean) => string;
+    /**
+     * Whether to keep comments in the templates AST.
+     * This defaults to `true` in development and `false` in production builds.
+     */
+    comments?: boolean;
+}
+export type HoistTransform = (children: TemplateChildNode[], context: TransformContext, parent: ParentNode) => void;
+export declare const enum BindingTypes {
+    /**
+     * returned from data()
+     */
+    DATA = "data",
+    /**
+     * declared as a prop
+     */
+    PROPS = "props",
+    /**
+     * a local alias of a `<script setup>` destructured prop.
+     * the original is stored in __propsAliases of the bindingMetadata object.
+     */
+    PROPS_ALIASED = "props-aliased",
+    /**
+     * a let binding (may or may not be a ref)
+     */
+    SETUP_LET = "setup-let",
+    /**
+     * a const binding that can never be a ref.
+     * these bindings don't need `unref()` calls when processed in inlined
+     * template expressions.
+     */
+    SETUP_CONST = "setup-const",
+    /**
+     * a const binding that does not need `unref()`, but may be mutated.
+     */
+    SETUP_REACTIVE_CONST = "setup-reactive-const",
+    /**
+     * a const binding that may be a ref.
+     */
+    SETUP_MAYBE_REF = "setup-maybe-ref",
+    /**
+     * bindings that are guaranteed to be refs
+     */
+    SETUP_REF = "setup-ref",
+    /**
+     * declared by other options, e.g. computed, inject
+     */
+    OPTIONS = "options",
+    /**
+     * a literal constant, e.g. 'foo', 1, true
+     */
+    LITERAL_CONST = "literal-const"
+}
+export type BindingMetadata = {
+    [key: string]: BindingTypes | undefined;
+} & {
+    __isScriptSetup?: boolean;
+    __propsAliases?: Record<string, string>;
+};
+interface SharedTransformCodegenOptions {
+    /**
+     * Transform expressions like {{ foo }} to `_ctx.foo`.
+     * If this option is false, the generated code will be wrapped in a
+     * `with (this) { ... }` block.
+     * - This is force-enabled in module mode, since modules are by default strict
+     * and cannot use `with`
+     * @default mode === 'module'
+     */
+    prefixIdentifiers?: boolean;
+    /**
+     * Control whether generate SSR-optimized render functions instead.
+     * The resulting function must be attached to the component via the
+     * `ssrRender` option instead of `render`.
+     *
+     * When compiler generates code for SSR's fallback branch, we need to set it to false:
+     *  - context.ssr = false
+     *
+     * see `subTransform` in `ssrTransformComponent.ts`
+     */
+    ssr?: boolean;
+    /**
+     * Indicates whether the compiler generates code for SSR,
+     * it is always true when generating code for SSR,
+     * regardless of whether we are generating code for SSR's fallback branch,
+     * this means that when the compiler generates code for SSR's fallback branch:
+     *  - context.ssr = false
+     *  - context.inSSR = true
+     */
+    inSSR?: boolean;
+    /**
+     * Optional binding metadata analyzed from script - used to optimize
+     * binding access when `prefixIdentifiers` is enabled.
+     */
+    bindingMetadata?: BindingMetadata;
+    /**
+     * Compile the function for inlining inside setup().
+     * This allows the function to directly access setup() local bindings.
+     */
+    inline?: boolean;
+    /**
+     * Indicates that transforms and codegen should try to output valid TS code
+     */
+    isTS?: boolean;
+    /**
+     * Filename for source map generation.
+     * Also used for self-recursive reference in templates
+     * @default 'template.vue.html'
+     */
+    filename?: string;
+}
+export interface TransformOptions extends SharedTransformCodegenOptions, ErrorHandlingOptions, CompilerCompatOptions {
+    /**
+     * An array of node transforms to be applied to every AST node.
+     */
+    nodeTransforms?: NodeTransform[];
+    /**
+     * An object of { name: transform } to be applied to every directive attribute
+     * node found on element nodes.
+     */
+    directiveTransforms?: Record<string, DirectiveTransform | undefined>;
+    /**
+     * An optional hook to transform a node being hoisted.
+     * used by compiler-dom to turn hoisted nodes into stringified HTML vnodes.
+     * @default null
+     */
+    transformHoist?: HoistTransform | null;
+    /**
+     * If the pairing runtime provides additional built-in elements, use this to
+     * mark them as built-in so the compiler will generate component vnodes
+     * for them.
+     */
+    isBuiltInComponent?: (tag: string) => symbol | void;
+    /**
+     * Used by some transforms that expects only native elements
+     */
+    isCustomElement?: (tag: string) => boolean | void;
+    /**
+     * Transform expressions like {{ foo }} to `_ctx.foo`.
+     * If this option is false, the generated code will be wrapped in a
+     * `with (this) { ... }` block.
+     * - This is force-enabled in module mode, since modules are by default strict
+     * and cannot use `with`
+     * @default mode === 'module'
+     */
+    prefixIdentifiers?: boolean;
+    /**
+     * Hoist static VNodes and props objects to `_hoisted_x` constants
+     * @default false
+     */
+    hoistStatic?: boolean;
+    /**
+     * Cache v-on handlers to avoid creating new inline functions on each render,
+     * also avoids the need for dynamically patching the handlers by wrapping it.
+     * e.g `@click="foo"` by default is compiled to `{ onClick: foo }`. With this
+     * option it's compiled to:
+     * ```js
+     * { onClick: _cache[0] || (_cache[0] = e => _ctx.foo(e)) }
+     * ```
+     * - Requires "prefixIdentifiers" to be enabled because it relies on scope
+     * analysis to determine if a handler is safe to cache.
+     * @default false
+     */
+    cacheHandlers?: boolean;
+    /**
+     * A list of parser plugins to enable for `@babel/parser`, which is used to
+     * parse expressions in bindings and interpolations.
+     * https://babeljs.io/docs/en/next/babel-parser#plugins
+     */
+    expressionPlugins?: ParserPlugin[];
+    /**
+     * SFC scoped styles ID
+     */
+    scopeId?: string | null;
+    /**
+     * Indicates this SFC template has used :slotted in its styles
+     * Defaults to `true` for backwards compatibility - SFC tooling should set it
+     * to `false` if no `:slotted` usage is detected in `<style>`
+     */
+    slotted?: boolean;
+    /**
+     * SFC `<style vars>` injection string
+     * Should already be an object expression, e.g. `{ 'xxxx-color': color }`
+     * needed to render inline CSS variables on component root
+     */
+    ssrCssVars?: string;
+}
+export interface CodegenOptions extends SharedTransformCodegenOptions {
+    /**
+     * - `module` mode will generate ES module import statements for helpers
+     * and export the render function as the default export.
+     * - `function` mode will generate a single `const { helpers... } = Vue`
+     * statement and return the render function. It expects `Vue` to be globally
+     * available (or passed by wrapping the code with an IIFE). It is meant to be
+     * used with `new Function(code)()` to generate a render function at runtime.
+     * @default 'function'
+     */
+    mode?: 'module' | 'function';
+    /**
+     * Generate source map?
+     * @default false
+     */
+    sourceMap?: boolean;
+    /**
+     * SFC scoped styles ID
+     */
+    scopeId?: string | null;
+    /**
+     * Option to optimize helper import bindings via variable assignment
+     * (only used for webpack code-split)
+     * @default false
+     */
+    optimizeImports?: boolean;
+    /**
+     * Customize where to import runtime helpers from.
+     * @default 'vue'
+     */
+    runtimeModuleName?: string;
+    /**
+     * Customize where to import ssr runtime helpers from/**
+     * @default 'vue/server-renderer'
+     */
+    ssrRuntimeModuleName?: string;
+    /**
+     * Customize the global variable name of `Vue` to get helpers from
+     * in function mode
+     * @default 'Vue'
+     */
+    runtimeGlobalName?: string;
+}
+export type CompilerOptions = ParserOptions & TransformOptions & CodegenOptions;
+
+type CodegenNode = TemplateChildNode | JSChildNode | SSRCodegenNode;
+export interface CodegenResult {
+    code: string;
+    preamble: string;
+    ast: RootNode;
+    map?: RawSourceMap;
+}
+export interface CodegenContext extends Omit<Required<CodegenOptions>, 'bindingMetadata' | 'inline'> {
+    source: string;
+    code: string;
+    line: number;
+    column: number;
+    offset: number;
+    indentLevel: number;
+    pure: boolean;
+    map?: SourceMapGenerator;
+    helper(key: symbol): string;
+    push(code: string, node?: CodegenNode): void;
+    indent(): void;
+    deindent(withoutNewLine?: boolean): void;
+    newline(): void;
+}
+export declare function generate(ast: RootNode, options?: CodegenOptions & {
+    onContextCreated?: (context: CodegenContext) => void;
+}): CodegenResult;
+
+export type TransformPreset = [
+    NodeTransform[],
+    Record<string, DirectiveTransform>
+];
+export declare function getBaseTransformPreset(prefixIdentifiers?: boolean): TransformPreset;
+export declare function baseCompile(template: string | RootNode, options?: CompilerOptions): CodegenResult;
+
+export declare const isStaticExp: (p: JSChildNode) => p is SimpleExpressionNode;
+export declare const isBuiltInType: (tag: string, expected: string) => boolean;
+export declare function isCoreComponent(tag: string): symbol | void;
+export declare const isSimpleIdentifier: (name: string) => boolean;
+/**
+ * Simple lexer to check if an expression is a member expression. This is
+ * lax and only checks validity at the root level (i.e. does not validate exps
+ * inside square brackets), but it's ok since these are only used on template
+ * expressions and false positives are invalid expressions in the first place.
+ */
+export declare const isMemberExpressionBrowser: (path: string) => boolean;
+export declare const isMemberExpressionNode: (path: string, context: TransformContext) => boolean;
+export declare const isMemberExpression: (path: string, context: TransformContext) => boolean;
+export declare function getInnerRange(loc: SourceLocation, offset: number, length: number): SourceLocation;
+export declare function advancePositionWithClone(pos: Position, source: string, numberOfCharacters?: number): Position;
+export declare function advancePositionWithMutation(pos: Position, source: string, numberOfCharacters?: number): Position;
+export declare function assert(condition: boolean, msg?: string): void;
+export declare function findDir(node: ElementNode, name: string | RegExp, allowEmpty?: boolean): DirectiveNode | undefined;
+export declare function findProp(node: ElementNode, name: string, dynamicOnly?: boolean, allowEmpty?: boolean): ElementNode['props'][0] | undefined;
+export declare function isStaticArgOf(arg: DirectiveNode['arg'], name: string): boolean;
+export declare function hasDynamicKeyVBind(node: ElementNode): boolean;
+export declare function isText(node: TemplateChildNode): node is TextNode | InterpolationNode;
+export declare function isVSlot(p: ElementNode['props'][0]): p is DirectiveNode;
+export declare function isTemplateNode(node: RootNode | TemplateChildNode): node is TemplateNode;
+export declare function isSlotOutlet(node: RootNode | TemplateChildNode): node is SlotOutletNode;
+export declare function injectProp(node: VNodeCall | RenderSlotCall, prop: Property, context: TransformContext): void;
+export declare function toValidAssetId(name: string, type: 'component' | 'directive' | 'filter'): string;
+export declare function hasScopeRef(node: TemplateChildNode | IfBranchNode | ExpressionNode | undefined, ids: TransformContext['identifiers']): boolean;
+export declare function getMemoedVNodeCall(node: BlockCodegenNode | MemoExpression): VNodeCall | RenderSlotCall;
+
+export declare function walkIdentifiers(root: Node$1, onIdentifier: (node: Identifier, parent: Node$1, parentStack: Node$1[], isReference: boolean, isLocal: boolean) => void, includeAll?: boolean, parentStack?: Node$1[], knownIds?: Record<string, number>): void;
+export declare function isReferencedIdentifier(id: Identifier, parent: Node$1 | null, parentStack: Node$1[]): boolean;
+export declare function isInDestructureAssignment(parent: Node$1, parentStack: Node$1[]): boolean;
+export declare function walkFunctionParams(node: Function, onIdent: (id: Identifier) => void): void;
+export declare function walkBlockDeclarations(block: BlockStatement$1 | Program, onIdent: (node: Identifier) => void): void;
+export declare function extractIdentifiers(param: Node$1, nodes?: Identifier[]): Identifier[];
+export declare const isFunctionType: (node: Node$1) => node is Function;
+export declare const isStaticProperty: (node: Node$1) => node is ObjectProperty;
+export declare const isStaticPropertyKey: (node: Node$1, parent: Node$1) => boolean;
+export declare const TS_NODE_TYPES: string[];
+
+export declare const transformModel: DirectiveTransform;
+
+export declare const transformOn: DirectiveTransform;
+
+export declare const transformBind: DirectiveTransform;
+
+export declare const noopDirectiveTransform: DirectiveTransform;
+
+export declare function processIf(node: ElementNode, dir: DirectiveNode, context: TransformContext, processCodegen?: (node: IfNode, branch: IfBranchNode, isRoot: boolean) => (() => void) | undefined): (() => void) | undefined;
+
+export declare const transformExpression: NodeTransform;
+export declare function processExpression(node: SimpleExpressionNode, context: TransformContext, asParams?: boolean, asRawStatements?: boolean, localVars?: Record<string, number>): ExpressionNode;
+export declare function stringifyExpression(exp: ExpressionNode | string): string;
+
+export declare const trackSlotScopes: NodeTransform;
+export declare const trackVForSlotScopes: NodeTransform;
+export type SlotFnBuilder = (slotProps: ExpressionNode | undefined, slotChildren: TemplateChildNode[], loc: SourceLocation) => FunctionExpression;
+export declare function buildSlots(node: ElementNode, context: TransformContext, buildSlotFn?: SlotFnBuilder): {
+    slots: SlotsExpression;
+    hasDynamicSlots: boolean;
+};
+
+interface SlotOutletProcessResult {
+    slotName: string | ExpressionNode;
+    slotProps: PropsExpression | undefined;
+}
+export declare function processSlotOutlet(node: SlotOutletNode, context: TransformContext): SlotOutletProcessResult;
+
+export declare function getConstantType(node: TemplateChildNode | SimpleExpressionNode, context: TransformContext): ConstantTypes;
+

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 4698 - 0
node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js


+ 7 - 0
node_modules/@vue/compiler-core/index.js

xqd
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/compiler-core.cjs.prod.js')
+} else {
+  module.exports = require('./dist/compiler-core.cjs.js')
+}

+ 43 - 0
node_modules/@vue/compiler-core/package.json

xqd
@@ -0,0 +1,43 @@
+{
+  "name": "@vue/compiler-core",
+  "version": "3.3.4",
+  "description": "@vue/compiler-core",
+  "main": "index.js",
+  "module": "dist/compiler-core.esm-bundler.js",
+  "types": "dist/compiler-core.d.ts",
+  "files": [
+    "index.js",
+    "dist"
+  ],
+  "buildOptions": {
+    "name": "VueCompilerCore",
+    "compat": true,
+    "formats": [
+      "esm-bundler",
+      "cjs"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vuejs/core.git",
+    "directory": "packages/compiler-core"
+  },
+  "keywords": [
+    "vue"
+  ],
+  "author": "Evan You",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/vuejs/core/issues"
+  },
+  "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme",
+  "dependencies": {
+    "@babel/parser": "^7.21.3",
+    "@vue/shared": "3.3.4",
+    "estree-walker": "^2.0.2",
+    "source-map-js": "^1.0.2"
+  },
+  "devDependencies": {
+    "@babel/types": "^7.21.3"
+  }
+}

+ 21 - 0
node_modules/@vue/compiler-dom/LICENSE

xqd
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-present, Yuxi (Evan) You
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 1 - 0
node_modules/@vue/compiler-dom/README.md

xqd
@@ -0,0 +1 @@
+# @vue/compiler-dom

+ 3047 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js

xqd
@@ -0,0 +1,3047 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var compilerCore = require('@vue/compiler-core');
+var shared = require('@vue/shared');
+
+const V_MODEL_RADIO = Symbol(`vModelRadio` );
+const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` );
+const V_MODEL_TEXT = Symbol(`vModelText` );
+const V_MODEL_SELECT = Symbol(`vModelSelect` );
+const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` );
+const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` );
+const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` );
+const V_SHOW = Symbol(`vShow` );
+const TRANSITION = Symbol(`Transition` );
+const TRANSITION_GROUP = Symbol(`TransitionGroup` );
+compilerCore.registerRuntimeHelpers({
+  [V_MODEL_RADIO]: `vModelRadio`,
+  [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+  [V_MODEL_TEXT]: `vModelText`,
+  [V_MODEL_SELECT]: `vModelSelect`,
+  [V_MODEL_DYNAMIC]: `vModelDynamic`,
+  [V_ON_WITH_MODIFIERS]: `withModifiers`,
+  [V_ON_WITH_KEYS]: `withKeys`,
+  [V_SHOW]: `vShow`,
+  [TRANSITION]: `Transition`,
+  [TRANSITION_GROUP]: `TransitionGroup`
+});
+
+var namedCharacterReferences = {
+	GT: ">",
+	gt: ">",
+	LT: "<",
+	lt: "<",
+	"ac;": "∾",
+	"af;": "⁡",
+	AMP: "&",
+	amp: "&",
+	"ap;": "≈",
+	"DD;": "ⅅ",
+	"dd;": "ⅆ",
+	deg: "°",
+	"ee;": "ⅇ",
+	"eg;": "⪚",
+	"el;": "⪙",
+	ETH: "Ð",
+	eth: "ð",
+	"gE;": "≧",
+	"ge;": "≥",
+	"Gg;": "⋙",
+	"gg;": "≫",
+	"gl;": "≷",
+	"GT;": ">",
+	"Gt;": "≫",
+	"gt;": ">",
+	"ic;": "⁣",
+	"ii;": "ⅈ",
+	"Im;": "ℑ",
+	"in;": "∈",
+	"it;": "⁢",
+	"lE;": "≦",
+	"le;": "≤",
+	"lg;": "≶",
+	"Ll;": "⋘",
+	"ll;": "≪",
+	"LT;": "<",
+	"Lt;": "≪",
+	"lt;": "<",
+	"mp;": "∓",
+	"Mu;": "Μ",
+	"mu;": "μ",
+	"ne;": "≠",
+	"ni;": "∋",
+	not: "¬",
+	"Nu;": "Ν",
+	"nu;": "ν",
+	"Or;": "⩔",
+	"or;": "∨",
+	"oS;": "Ⓢ",
+	"Pi;": "Π",
+	"pi;": "π",
+	"pm;": "±",
+	"Pr;": "⪻",
+	"pr;": "≺",
+	"Re;": "ℜ",
+	REG: "®",
+	reg: "®",
+	"rx;": "℞",
+	"Sc;": "⪼",
+	"sc;": "≻",
+	shy: "­",
+	uml: "¨",
+	"wp;": "℘",
+	"wr;": "≀",
+	"Xi;": "Ξ",
+	"xi;": "ξ",
+	yen: "¥",
+	"acd;": "∿",
+	"acE;": "∾̳",
+	"Acy;": "А",
+	"acy;": "а",
+	"Afr;": "𝔄",
+	"afr;": "𝔞",
+	"AMP;": "&",
+	"amp;": "&",
+	"And;": "⩓",
+	"and;": "∧",
+	"ang;": "∠",
+	"apE;": "⩰",
+	"ape;": "≊",
+	"ast;": "*",
+	Auml: "Ä",
+	auml: "ä",
+	"Bcy;": "Б",
+	"bcy;": "б",
+	"Bfr;": "𝔅",
+	"bfr;": "𝔟",
+	"bne;": "=⃥",
+	"bot;": "⊥",
+	"Cap;": "⋒",
+	"cap;": "∩",
+	cent: "¢",
+	"Cfr;": "ℭ",
+	"cfr;": "𝔠",
+	"Chi;": "Χ",
+	"chi;": "χ",
+	"cir;": "○",
+	COPY: "©",
+	copy: "©",
+	"Cup;": "⋓",
+	"cup;": "∪",
+	"Dcy;": "Д",
+	"dcy;": "д",
+	"deg;": "°",
+	"Del;": "∇",
+	"Dfr;": "𝔇",
+	"dfr;": "𝔡",
+	"die;": "¨",
+	"div;": "÷",
+	"Dot;": "¨",
+	"dot;": "˙",
+	"Ecy;": "Э",
+	"ecy;": "э",
+	"Efr;": "𝔈",
+	"efr;": "𝔢",
+	"egs;": "⪖",
+	"ell;": "ℓ",
+	"els;": "⪕",
+	"ENG;": "Ŋ",
+	"eng;": "ŋ",
+	"Eta;": "Η",
+	"eta;": "η",
+	"ETH;": "Ð",
+	"eth;": "ð",
+	Euml: "Ë",
+	euml: "ë",
+	"Fcy;": "Ф",
+	"fcy;": "ф",
+	"Ffr;": "𝔉",
+	"ffr;": "𝔣",
+	"gap;": "⪆",
+	"Gcy;": "Г",
+	"gcy;": "г",
+	"gEl;": "⪌",
+	"gel;": "⋛",
+	"geq;": "≥",
+	"ges;": "⩾",
+	"Gfr;": "𝔊",
+	"gfr;": "𝔤",
+	"ggg;": "⋙",
+	"gla;": "⪥",
+	"glE;": "⪒",
+	"glj;": "⪤",
+	"gnE;": "≩",
+	"gne;": "⪈",
+	"Hat;": "^",
+	"Hfr;": "ℌ",
+	"hfr;": "𝔥",
+	"Icy;": "И",
+	"icy;": "и",
+	"iff;": "⇔",
+	"Ifr;": "ℑ",
+	"ifr;": "𝔦",
+	"Int;": "∬",
+	"int;": "∫",
+	Iuml: "Ï",
+	iuml: "ï",
+	"Jcy;": "Й",
+	"jcy;": "й",
+	"Jfr;": "𝔍",
+	"jfr;": "𝔧",
+	"Kcy;": "К",
+	"kcy;": "к",
+	"Kfr;": "𝔎",
+	"kfr;": "𝔨",
+	"lap;": "⪅",
+	"lat;": "⪫",
+	"Lcy;": "Л",
+	"lcy;": "л",
+	"lEg;": "⪋",
+	"leg;": "⋚",
+	"leq;": "≤",
+	"les;": "⩽",
+	"Lfr;": "𝔏",
+	"lfr;": "𝔩",
+	"lgE;": "⪑",
+	"lnE;": "≨",
+	"lne;": "⪇",
+	"loz;": "◊",
+	"lrm;": "‎",
+	"Lsh;": "↰",
+	"lsh;": "↰",
+	macr: "¯",
+	"Map;": "⤅",
+	"map;": "↦",
+	"Mcy;": "М",
+	"mcy;": "м",
+	"Mfr;": "𝔐",
+	"mfr;": "𝔪",
+	"mho;": "℧",
+	"mid;": "∣",
+	"nap;": "≉",
+	nbsp: " ",
+	"Ncy;": "Н",
+	"ncy;": "н",
+	"Nfr;": "𝔑",
+	"nfr;": "𝔫",
+	"ngE;": "≧̸",
+	"nge;": "≱",
+	"nGg;": "⋙̸",
+	"nGt;": "≫⃒",
+	"ngt;": "≯",
+	"nis;": "⋼",
+	"niv;": "∋",
+	"nlE;": "≦̸",
+	"nle;": "≰",
+	"nLl;": "⋘̸",
+	"nLt;": "≪⃒",
+	"nlt;": "≮",
+	"Not;": "⫬",
+	"not;": "¬",
+	"npr;": "⊀",
+	"nsc;": "⊁",
+	"num;": "#",
+	"Ocy;": "О",
+	"ocy;": "о",
+	"Ofr;": "𝔒",
+	"ofr;": "𝔬",
+	"ogt;": "⧁",
+	"ohm;": "Ω",
+	"olt;": "⧀",
+	"ord;": "⩝",
+	ordf: "ª",
+	ordm: "º",
+	"orv;": "⩛",
+	Ouml: "Ö",
+	ouml: "ö",
+	"par;": "∥",
+	para: "¶",
+	"Pcy;": "П",
+	"pcy;": "п",
+	"Pfr;": "𝔓",
+	"pfr;": "𝔭",
+	"Phi;": "Φ",
+	"phi;": "φ",
+	"piv;": "ϖ",
+	"prE;": "⪳",
+	"pre;": "⪯",
+	"Psi;": "Ψ",
+	"psi;": "ψ",
+	"Qfr;": "𝔔",
+	"qfr;": "𝔮",
+	QUOT: "\"",
+	quot: "\"",
+	"Rcy;": "Р",
+	"rcy;": "р",
+	"REG;": "®",
+	"reg;": "®",
+	"Rfr;": "ℜ",
+	"rfr;": "𝔯",
+	"Rho;": "Ρ",
+	"rho;": "ρ",
+	"rlm;": "‏",
+	"Rsh;": "↱",
+	"rsh;": "↱",
+	"scE;": "⪴",
+	"sce;": "⪰",
+	"Scy;": "С",
+	"scy;": "с",
+	sect: "§",
+	"Sfr;": "𝔖",
+	"sfr;": "𝔰",
+	"shy;": "­",
+	"sim;": "∼",
+	"smt;": "⪪",
+	"sol;": "/",
+	"squ;": "□",
+	"Sub;": "⋐",
+	"sub;": "⊂",
+	"Sum;": "∑",
+	"sum;": "∑",
+	"Sup;": "⋑",
+	"sup;": "⊃",
+	sup1: "¹",
+	sup2: "²",
+	sup3: "³",
+	"Tab;": "\t",
+	"Tau;": "Τ",
+	"tau;": "τ",
+	"Tcy;": "Т",
+	"tcy;": "т",
+	"Tfr;": "𝔗",
+	"tfr;": "𝔱",
+	"top;": "⊤",
+	"Ucy;": "У",
+	"ucy;": "у",
+	"Ufr;": "𝔘",
+	"ufr;": "𝔲",
+	"uml;": "¨",
+	Uuml: "Ü",
+	uuml: "ü",
+	"Vcy;": "В",
+	"vcy;": "в",
+	"Vee;": "⋁",
+	"vee;": "∨",
+	"Vfr;": "𝔙",
+	"vfr;": "𝔳",
+	"Wfr;": "𝔚",
+	"wfr;": "𝔴",
+	"Xfr;": "𝔛",
+	"xfr;": "𝔵",
+	"Ycy;": "Ы",
+	"ycy;": "ы",
+	"yen;": "¥",
+	"Yfr;": "𝔜",
+	"yfr;": "𝔶",
+	yuml: "ÿ",
+	"Zcy;": "З",
+	"zcy;": "з",
+	"Zfr;": "ℨ",
+	"zfr;": "𝔷",
+	"zwj;": "‍",
+	Acirc: "Â",
+	acirc: "â",
+	acute: "´",
+	AElig: "Æ",
+	aelig: "æ",
+	"andd;": "⩜",
+	"andv;": "⩚",
+	"ange;": "⦤",
+	"Aopf;": "𝔸",
+	"aopf;": "𝕒",
+	"apid;": "≋",
+	"apos;": "'",
+	Aring: "Å",
+	aring: "å",
+	"Ascr;": "𝒜",
+	"ascr;": "𝒶",
+	"Auml;": "Ä",
+	"auml;": "ä",
+	"Barv;": "⫧",
+	"bbrk;": "⎵",
+	"Beta;": "Β",
+	"beta;": "β",
+	"beth;": "ℶ",
+	"bNot;": "⫭",
+	"bnot;": "⌐",
+	"Bopf;": "𝔹",
+	"bopf;": "𝕓",
+	"boxH;": "═",
+	"boxh;": "─",
+	"boxV;": "║",
+	"boxv;": "│",
+	"Bscr;": "ℬ",
+	"bscr;": "𝒷",
+	"bsim;": "∽",
+	"bsol;": "\\",
+	"bull;": "•",
+	"bump;": "≎",
+	"caps;": "∩︀",
+	"Cdot;": "Ċ",
+	"cdot;": "ċ",
+	cedil: "¸",
+	"cent;": "¢",
+	"CHcy;": "Ч",
+	"chcy;": "ч",
+	"circ;": "ˆ",
+	"cirE;": "⧃",
+	"cire;": "≗",
+	"comp;": "∁",
+	"cong;": "≅",
+	"Copf;": "ℂ",
+	"copf;": "𝕔",
+	"COPY;": "©",
+	"copy;": "©",
+	"Cscr;": "𝒞",
+	"cscr;": "𝒸",
+	"csub;": "⫏",
+	"csup;": "⫐",
+	"cups;": "∪︀",
+	"Darr;": "↡",
+	"dArr;": "⇓",
+	"darr;": "↓",
+	"dash;": "‐",
+	"dHar;": "⥥",
+	"diam;": "⋄",
+	"DJcy;": "Ђ",
+	"djcy;": "ђ",
+	"Dopf;": "𝔻",
+	"dopf;": "𝕕",
+	"Dscr;": "𝒟",
+	"dscr;": "𝒹",
+	"DScy;": "Ѕ",
+	"dscy;": "ѕ",
+	"dsol;": "⧶",
+	"dtri;": "▿",
+	"DZcy;": "Џ",
+	"dzcy;": "џ",
+	"ecir;": "≖",
+	Ecirc: "Ê",
+	ecirc: "ê",
+	"Edot;": "Ė",
+	"eDot;": "≑",
+	"edot;": "ė",
+	"emsp;": " ",
+	"ensp;": " ",
+	"Eopf;": "𝔼",
+	"eopf;": "𝕖",
+	"epar;": "⋕",
+	"epsi;": "ε",
+	"Escr;": "ℰ",
+	"escr;": "ℯ",
+	"Esim;": "⩳",
+	"esim;": "≂",
+	"Euml;": "Ë",
+	"euml;": "ë",
+	"euro;": "€",
+	"excl;": "!",
+	"flat;": "♭",
+	"fnof;": "ƒ",
+	"Fopf;": "𝔽",
+	"fopf;": "𝕗",
+	"fork;": "⋔",
+	"Fscr;": "ℱ",
+	"fscr;": "𝒻",
+	"Gdot;": "Ġ",
+	"gdot;": "ġ",
+	"geqq;": "≧",
+	"gesl;": "⋛︀",
+	"GJcy;": "Ѓ",
+	"gjcy;": "ѓ",
+	"gnap;": "⪊",
+	"gneq;": "⪈",
+	"Gopf;": "𝔾",
+	"gopf;": "𝕘",
+	"Gscr;": "𝒢",
+	"gscr;": "ℊ",
+	"gsim;": "≳",
+	"gtcc;": "⪧",
+	"gvnE;": "≩︀",
+	"half;": "½",
+	"hArr;": "⇔",
+	"harr;": "↔",
+	"hbar;": "ℏ",
+	"Hopf;": "ℍ",
+	"hopf;": "𝕙",
+	"Hscr;": "ℋ",
+	"hscr;": "𝒽",
+	Icirc: "Î",
+	icirc: "î",
+	"Idot;": "İ",
+	"IEcy;": "Е",
+	"iecy;": "е",
+	iexcl: "¡",
+	"imof;": "⊷",
+	"IOcy;": "Ё",
+	"iocy;": "ё",
+	"Iopf;": "𝕀",
+	"iopf;": "𝕚",
+	"Iota;": "Ι",
+	"iota;": "ι",
+	"Iscr;": "ℐ",
+	"iscr;": "𝒾",
+	"isin;": "∈",
+	"Iuml;": "Ï",
+	"iuml;": "ï",
+	"Jopf;": "𝕁",
+	"jopf;": "𝕛",
+	"Jscr;": "𝒥",
+	"jscr;": "𝒿",
+	"KHcy;": "Х",
+	"khcy;": "х",
+	"KJcy;": "Ќ",
+	"kjcy;": "ќ",
+	"Kopf;": "𝕂",
+	"kopf;": "𝕜",
+	"Kscr;": "𝒦",
+	"kscr;": "𝓀",
+	"Lang;": "⟪",
+	"lang;": "⟨",
+	laquo: "«",
+	"Larr;": "↞",
+	"lArr;": "⇐",
+	"larr;": "←",
+	"late;": "⪭",
+	"lcub;": "{",
+	"ldca;": "⤶",
+	"ldsh;": "↲",
+	"leqq;": "≦",
+	"lesg;": "⋚︀",
+	"lHar;": "⥢",
+	"LJcy;": "Љ",
+	"ljcy;": "љ",
+	"lnap;": "⪉",
+	"lneq;": "⪇",
+	"Lopf;": "𝕃",
+	"lopf;": "𝕝",
+	"lozf;": "⧫",
+	"lpar;": "(",
+	"Lscr;": "ℒ",
+	"lscr;": "𝓁",
+	"lsim;": "≲",
+	"lsqb;": "[",
+	"ltcc;": "⪦",
+	"ltri;": "◃",
+	"lvnE;": "≨︀",
+	"macr;": "¯",
+	"male;": "♂",
+	"malt;": "✠",
+	micro: "µ",
+	"mlcp;": "⫛",
+	"mldr;": "…",
+	"Mopf;": "𝕄",
+	"mopf;": "𝕞",
+	"Mscr;": "ℳ",
+	"mscr;": "𝓂",
+	"nang;": "∠⃒",
+	"napE;": "⩰̸",
+	"nbsp;": " ",
+	"ncap;": "⩃",
+	"ncup;": "⩂",
+	"ngeq;": "≱",
+	"nges;": "⩾̸",
+	"ngtr;": "≯",
+	"nGtv;": "≫̸",
+	"nisd;": "⋺",
+	"NJcy;": "Њ",
+	"njcy;": "њ",
+	"nldr;": "‥",
+	"nleq;": "≰",
+	"nles;": "⩽̸",
+	"nLtv;": "≪̸",
+	"nmid;": "∤",
+	"Nopf;": "ℕ",
+	"nopf;": "𝕟",
+	"npar;": "∦",
+	"npre;": "⪯̸",
+	"nsce;": "⪰̸",
+	"Nscr;": "𝒩",
+	"nscr;": "𝓃",
+	"nsim;": "≁",
+	"nsub;": "⊄",
+	"nsup;": "⊅",
+	"ntgl;": "≹",
+	"ntlg;": "≸",
+	"nvap;": "≍⃒",
+	"nvge;": "≥⃒",
+	"nvgt;": ">⃒",
+	"nvle;": "≤⃒",
+	"nvlt;": "<⃒",
+	"oast;": "⊛",
+	"ocir;": "⊚",
+	Ocirc: "Ô",
+	ocirc: "ô",
+	"odiv;": "⨸",
+	"odot;": "⊙",
+	"ogon;": "˛",
+	"oint;": "∮",
+	"omid;": "⦶",
+	"Oopf;": "𝕆",
+	"oopf;": "𝕠",
+	"opar;": "⦷",
+	"ordf;": "ª",
+	"ordm;": "º",
+	"oror;": "⩖",
+	"Oscr;": "𝒪",
+	"oscr;": "ℴ",
+	"osol;": "⊘",
+	"Ouml;": "Ö",
+	"ouml;": "ö",
+	"para;": "¶",
+	"part;": "∂",
+	"perp;": "⊥",
+	"phiv;": "ϕ",
+	"plus;": "+",
+	"Popf;": "ℙ",
+	"popf;": "𝕡",
+	pound: "£",
+	"prap;": "⪷",
+	"prec;": "≺",
+	"prnE;": "⪵",
+	"prod;": "∏",
+	"prop;": "∝",
+	"Pscr;": "𝒫",
+	"pscr;": "𝓅",
+	"qint;": "⨌",
+	"Qopf;": "ℚ",
+	"qopf;": "𝕢",
+	"Qscr;": "𝒬",
+	"qscr;": "𝓆",
+	"QUOT;": "\"",
+	"quot;": "\"",
+	"race;": "∽̱",
+	"Rang;": "⟫",
+	"rang;": "⟩",
+	raquo: "»",
+	"Rarr;": "↠",
+	"rArr;": "⇒",
+	"rarr;": "→",
+	"rcub;": "}",
+	"rdca;": "⤷",
+	"rdsh;": "↳",
+	"real;": "ℜ",
+	"rect;": "▭",
+	"rHar;": "⥤",
+	"rhov;": "ϱ",
+	"ring;": "˚",
+	"Ropf;": "ℝ",
+	"ropf;": "𝕣",
+	"rpar;": ")",
+	"Rscr;": "ℛ",
+	"rscr;": "𝓇",
+	"rsqb;": "]",
+	"rtri;": "▹",
+	"scap;": "⪸",
+	"scnE;": "⪶",
+	"sdot;": "⋅",
+	"sect;": "§",
+	"semi;": ";",
+	"sext;": "✶",
+	"SHcy;": "Ш",
+	"shcy;": "ш",
+	"sime;": "≃",
+	"simg;": "⪞",
+	"siml;": "⪝",
+	"smid;": "∣",
+	"smte;": "⪬",
+	"solb;": "⧄",
+	"Sopf;": "𝕊",
+	"sopf;": "𝕤",
+	"spar;": "∥",
+	"Sqrt;": "√",
+	"squf;": "▪",
+	"Sscr;": "𝒮",
+	"sscr;": "𝓈",
+	"Star;": "⋆",
+	"star;": "☆",
+	"subE;": "⫅",
+	"sube;": "⊆",
+	"succ;": "≻",
+	"sung;": "♪",
+	"sup1;": "¹",
+	"sup2;": "²",
+	"sup3;": "³",
+	"supE;": "⫆",
+	"supe;": "⊇",
+	szlig: "ß",
+	"tbrk;": "⎴",
+	"tdot;": "⃛",
+	THORN: "Þ",
+	thorn: "þ",
+	times: "×",
+	"tint;": "∭",
+	"toea;": "⤨",
+	"Topf;": "𝕋",
+	"topf;": "𝕥",
+	"tosa;": "⤩",
+	"trie;": "≜",
+	"Tscr;": "𝒯",
+	"tscr;": "𝓉",
+	"TScy;": "Ц",
+	"tscy;": "ц",
+	"Uarr;": "↟",
+	"uArr;": "⇑",
+	"uarr;": "↑",
+	Ucirc: "Û",
+	ucirc: "û",
+	"uHar;": "⥣",
+	"Uopf;": "𝕌",
+	"uopf;": "𝕦",
+	"Upsi;": "ϒ",
+	"upsi;": "υ",
+	"Uscr;": "𝒰",
+	"uscr;": "𝓊",
+	"utri;": "▵",
+	"Uuml;": "Ü",
+	"uuml;": "ü",
+	"vArr;": "⇕",
+	"varr;": "↕",
+	"Vbar;": "⫫",
+	"vBar;": "⫨",
+	"Vert;": "‖",
+	"vert;": "|",
+	"Vopf;": "𝕍",
+	"vopf;": "𝕧",
+	"Vscr;": "𝒱",
+	"vscr;": "𝓋",
+	"Wopf;": "𝕎",
+	"wopf;": "𝕨",
+	"Wscr;": "𝒲",
+	"wscr;": "𝓌",
+	"xcap;": "⋂",
+	"xcup;": "⋃",
+	"xmap;": "⟼",
+	"xnis;": "⋻",
+	"Xopf;": "𝕏",
+	"xopf;": "𝕩",
+	"Xscr;": "𝒳",
+	"xscr;": "𝓍",
+	"xvee;": "⋁",
+	"YAcy;": "Я",
+	"yacy;": "я",
+	"YIcy;": "Ї",
+	"yicy;": "ї",
+	"Yopf;": "𝕐",
+	"yopf;": "𝕪",
+	"Yscr;": "𝒴",
+	"yscr;": "𝓎",
+	"YUcy;": "Ю",
+	"yucy;": "ю",
+	"Yuml;": "Ÿ",
+	"yuml;": "ÿ",
+	"Zdot;": "Ż",
+	"zdot;": "ż",
+	"Zeta;": "Ζ",
+	"zeta;": "ζ",
+	"ZHcy;": "Ж",
+	"zhcy;": "ж",
+	"Zopf;": "ℤ",
+	"zopf;": "𝕫",
+	"Zscr;": "𝒵",
+	"zscr;": "𝓏",
+	"zwnj;": "‌",
+	Aacute: "Á",
+	aacute: "á",
+	"Acirc;": "Â",
+	"acirc;": "â",
+	"acute;": "´",
+	"AElig;": "Æ",
+	"aelig;": "æ",
+	Agrave: "À",
+	agrave: "à",
+	"aleph;": "ℵ",
+	"Alpha;": "Α",
+	"alpha;": "α",
+	"Amacr;": "Ā",
+	"amacr;": "ā",
+	"amalg;": "⨿",
+	"angle;": "∠",
+	"angrt;": "∟",
+	"angst;": "Å",
+	"Aogon;": "Ą",
+	"aogon;": "ą",
+	"Aring;": "Å",
+	"aring;": "å",
+	"asymp;": "≈",
+	Atilde: "Ã",
+	atilde: "ã",
+	"awint;": "⨑",
+	"bcong;": "≌",
+	"bdquo;": "„",
+	"bepsi;": "϶",
+	"blank;": "␣",
+	"blk12;": "▒",
+	"blk14;": "░",
+	"blk34;": "▓",
+	"block;": "█",
+	"boxDL;": "╗",
+	"boxDl;": "╖",
+	"boxdL;": "╕",
+	"boxdl;": "┐",
+	"boxDR;": "╔",
+	"boxDr;": "╓",
+	"boxdR;": "╒",
+	"boxdr;": "┌",
+	"boxHD;": "╦",
+	"boxHd;": "╤",
+	"boxhD;": "╥",
+	"boxhd;": "┬",
+	"boxHU;": "╩",
+	"boxHu;": "╧",
+	"boxhU;": "╨",
+	"boxhu;": "┴",
+	"boxUL;": "╝",
+	"boxUl;": "╜",
+	"boxuL;": "╛",
+	"boxul;": "┘",
+	"boxUR;": "╚",
+	"boxUr;": "╙",
+	"boxuR;": "╘",
+	"boxur;": "└",
+	"boxVH;": "╬",
+	"boxVh;": "╫",
+	"boxvH;": "╪",
+	"boxvh;": "┼",
+	"boxVL;": "╣",
+	"boxVl;": "╢",
+	"boxvL;": "╡",
+	"boxvl;": "┤",
+	"boxVR;": "╠",
+	"boxVr;": "╟",
+	"boxvR;": "╞",
+	"boxvr;": "├",
+	"Breve;": "˘",
+	"breve;": "˘",
+	brvbar: "¦",
+	"bsemi;": "⁏",
+	"bsime;": "⋍",
+	"bsolb;": "⧅",
+	"bumpE;": "⪮",
+	"bumpe;": "≏",
+	"caret;": "⁁",
+	"caron;": "ˇ",
+	"ccaps;": "⩍",
+	Ccedil: "Ç",
+	ccedil: "ç",
+	"Ccirc;": "Ĉ",
+	"ccirc;": "ĉ",
+	"ccups;": "⩌",
+	"cedil;": "¸",
+	"check;": "✓",
+	"clubs;": "♣",
+	"Colon;": "∷",
+	"colon;": ":",
+	"comma;": ",",
+	"crarr;": "↵",
+	"Cross;": "⨯",
+	"cross;": "✗",
+	"csube;": "⫑",
+	"csupe;": "⫒",
+	"ctdot;": "⋯",
+	"cuepr;": "⋞",
+	"cuesc;": "⋟",
+	"cupor;": "⩅",
+	curren: "¤",
+	"cuvee;": "⋎",
+	"cuwed;": "⋏",
+	"cwint;": "∱",
+	"Dashv;": "⫤",
+	"dashv;": "⊣",
+	"dblac;": "˝",
+	"ddarr;": "⇊",
+	"Delta;": "Δ",
+	"delta;": "δ",
+	"dharl;": "⇃",
+	"dharr;": "⇂",
+	"diams;": "♦",
+	"disin;": "⋲",
+	divide: "÷",
+	"doteq;": "≐",
+	"dtdot;": "⋱",
+	"dtrif;": "▾",
+	"duarr;": "⇵",
+	"duhar;": "⥯",
+	Eacute: "É",
+	eacute: "é",
+	"Ecirc;": "Ê",
+	"ecirc;": "ê",
+	"eDDot;": "⩷",
+	"efDot;": "≒",
+	Egrave: "È",
+	egrave: "è",
+	"Emacr;": "Ē",
+	"emacr;": "ē",
+	"empty;": "∅",
+	"Eogon;": "Ę",
+	"eogon;": "ę",
+	"eplus;": "⩱",
+	"epsiv;": "ϵ",
+	"eqsim;": "≂",
+	"Equal;": "⩵",
+	"equiv;": "≡",
+	"erarr;": "⥱",
+	"erDot;": "≓",
+	"esdot;": "≐",
+	"exist;": "∃",
+	"fflig;": "ff",
+	"filig;": "fi",
+	"fjlig;": "fj",
+	"fllig;": "fl",
+	"fltns;": "▱",
+	"forkv;": "⫙",
+	frac12: "½",
+	frac14: "¼",
+	frac34: "¾",
+	"frasl;": "⁄",
+	"frown;": "⌢",
+	"Gamma;": "Γ",
+	"gamma;": "γ",
+	"Gcirc;": "Ĝ",
+	"gcirc;": "ĝ",
+	"gescc;": "⪩",
+	"gimel;": "ℷ",
+	"gneqq;": "≩",
+	"gnsim;": "⋧",
+	"grave;": "`",
+	"gsime;": "⪎",
+	"gsiml;": "⪐",
+	"gtcir;": "⩺",
+	"gtdot;": "⋗",
+	"Hacek;": "ˇ",
+	"harrw;": "↭",
+	"Hcirc;": "Ĥ",
+	"hcirc;": "ĥ",
+	"hoarr;": "⇿",
+	Iacute: "Í",
+	iacute: "í",
+	"Icirc;": "Î",
+	"icirc;": "î",
+	"iexcl;": "¡",
+	Igrave: "Ì",
+	igrave: "ì",
+	"iiint;": "∭",
+	"iiota;": "℩",
+	"IJlig;": "IJ",
+	"ijlig;": "ij",
+	"Imacr;": "Ī",
+	"imacr;": "ī",
+	"image;": "ℑ",
+	"imath;": "ı",
+	"imped;": "Ƶ",
+	"infin;": "∞",
+	"Iogon;": "Į",
+	"iogon;": "į",
+	"iprod;": "⨼",
+	iquest: "¿",
+	"isinE;": "⋹",
+	"isins;": "⋴",
+	"isinv;": "∈",
+	"Iukcy;": "І",
+	"iukcy;": "і",
+	"Jcirc;": "Ĵ",
+	"jcirc;": "ĵ",
+	"jmath;": "ȷ",
+	"Jukcy;": "Є",
+	"jukcy;": "є",
+	"Kappa;": "Κ",
+	"kappa;": "κ",
+	"lAarr;": "⇚",
+	"langd;": "⦑",
+	"laquo;": "«",
+	"larrb;": "⇤",
+	"lates;": "⪭︀",
+	"lBarr;": "⤎",
+	"lbarr;": "⤌",
+	"lbbrk;": "❲",
+	"lbrke;": "⦋",
+	"lceil;": "⌈",
+	"ldquo;": "“",
+	"lescc;": "⪨",
+	"lhard;": "↽",
+	"lharu;": "↼",
+	"lhblk;": "▄",
+	"llarr;": "⇇",
+	"lltri;": "◺",
+	"lneqq;": "≨",
+	"lnsim;": "⋦",
+	"loang;": "⟬",
+	"loarr;": "⇽",
+	"lobrk;": "⟦",
+	"lopar;": "⦅",
+	"lrarr;": "⇆",
+	"lrhar;": "⇋",
+	"lrtri;": "⊿",
+	"lsime;": "⪍",
+	"lsimg;": "⪏",
+	"lsquo;": "‘",
+	"ltcir;": "⩹",
+	"ltdot;": "⋖",
+	"ltrie;": "⊴",
+	"ltrif;": "◂",
+	"mdash;": "—",
+	"mDDot;": "∺",
+	"micro;": "µ",
+	middot: "·",
+	"minus;": "−",
+	"mumap;": "⊸",
+	"nabla;": "∇",
+	"napid;": "≋̸",
+	"napos;": "ʼn",
+	"natur;": "♮",
+	"nbump;": "≎̸",
+	"ncong;": "≇",
+	"ndash;": "–",
+	"neArr;": "⇗",
+	"nearr;": "↗",
+	"nedot;": "≐̸",
+	"nesim;": "≂̸",
+	"ngeqq;": "≧̸",
+	"ngsim;": "≵",
+	"nhArr;": "⇎",
+	"nharr;": "↮",
+	"nhpar;": "⫲",
+	"nlArr;": "⇍",
+	"nlarr;": "↚",
+	"nleqq;": "≦̸",
+	"nless;": "≮",
+	"nlsim;": "≴",
+	"nltri;": "⋪",
+	"notin;": "∉",
+	"notni;": "∌",
+	"npart;": "∂̸",
+	"nprec;": "⊀",
+	"nrArr;": "⇏",
+	"nrarr;": "↛",
+	"nrtri;": "⋫",
+	"nsime;": "≄",
+	"nsmid;": "∤",
+	"nspar;": "∦",
+	"nsubE;": "⫅̸",
+	"nsube;": "⊈",
+	"nsucc;": "⊁",
+	"nsupE;": "⫆̸",
+	"nsupe;": "⊉",
+	Ntilde: "Ñ",
+	ntilde: "ñ",
+	"numsp;": " ",
+	"nvsim;": "∼⃒",
+	"nwArr;": "⇖",
+	"nwarr;": "↖",
+	Oacute: "Ó",
+	oacute: "ó",
+	"Ocirc;": "Ô",
+	"ocirc;": "ô",
+	"odash;": "⊝",
+	"OElig;": "Œ",
+	"oelig;": "œ",
+	"ofcir;": "⦿",
+	Ograve: "Ò",
+	ograve: "ò",
+	"ohbar;": "⦵",
+	"olarr;": "↺",
+	"olcir;": "⦾",
+	"oline;": "‾",
+	"Omacr;": "Ō",
+	"omacr;": "ō",
+	"Omega;": "Ω",
+	"omega;": "ω",
+	"operp;": "⦹",
+	"oplus;": "⊕",
+	"orarr;": "↻",
+	"order;": "ℴ",
+	Oslash: "Ø",
+	oslash: "ø",
+	Otilde: "Õ",
+	otilde: "õ",
+	"ovbar;": "⌽",
+	"parsl;": "⫽",
+	"phone;": "☎",
+	"plusb;": "⊞",
+	"pluse;": "⩲",
+	plusmn: "±",
+	"pound;": "£",
+	"prcue;": "≼",
+	"Prime;": "″",
+	"prime;": "′",
+	"prnap;": "⪹",
+	"prsim;": "≾",
+	"quest;": "?",
+	"rAarr;": "⇛",
+	"radic;": "√",
+	"rangd;": "⦒",
+	"range;": "⦥",
+	"raquo;": "»",
+	"rarrb;": "⇥",
+	"rarrc;": "⤳",
+	"rarrw;": "↝",
+	"ratio;": "∶",
+	"RBarr;": "⤐",
+	"rBarr;": "⤏",
+	"rbarr;": "⤍",
+	"rbbrk;": "❳",
+	"rbrke;": "⦌",
+	"rceil;": "⌉",
+	"rdquo;": "”",
+	"reals;": "ℝ",
+	"rhard;": "⇁",
+	"rharu;": "⇀",
+	"rlarr;": "⇄",
+	"rlhar;": "⇌",
+	"rnmid;": "⫮",
+	"roang;": "⟭",
+	"roarr;": "⇾",
+	"robrk;": "⟧",
+	"ropar;": "⦆",
+	"rrarr;": "⇉",
+	"rsquo;": "’",
+	"rtrie;": "⊵",
+	"rtrif;": "▸",
+	"sbquo;": "‚",
+	"sccue;": "≽",
+	"Scirc;": "Ŝ",
+	"scirc;": "ŝ",
+	"scnap;": "⪺",
+	"scsim;": "≿",
+	"sdotb;": "⊡",
+	"sdote;": "⩦",
+	"seArr;": "⇘",
+	"searr;": "↘",
+	"setmn;": "∖",
+	"sharp;": "♯",
+	"Sigma;": "Σ",
+	"sigma;": "σ",
+	"simeq;": "≃",
+	"simgE;": "⪠",
+	"simlE;": "⪟",
+	"simne;": "≆",
+	"slarr;": "←",
+	"smile;": "⌣",
+	"smtes;": "⪬︀",
+	"sqcap;": "⊓",
+	"sqcup;": "⊔",
+	"sqsub;": "⊏",
+	"sqsup;": "⊐",
+	"srarr;": "→",
+	"starf;": "★",
+	"strns;": "¯",
+	"subnE;": "⫋",
+	"subne;": "⊊",
+	"supnE;": "⫌",
+	"supne;": "⊋",
+	"swArr;": "⇙",
+	"swarr;": "↙",
+	"szlig;": "ß",
+	"Theta;": "Θ",
+	"theta;": "θ",
+	"thkap;": "≈",
+	"THORN;": "Þ",
+	"thorn;": "þ",
+	"Tilde;": "∼",
+	"tilde;": "˜",
+	"times;": "×",
+	"TRADE;": "™",
+	"trade;": "™",
+	"trisb;": "⧍",
+	"TSHcy;": "Ћ",
+	"tshcy;": "ћ",
+	"twixt;": "≬",
+	Uacute: "Ú",
+	uacute: "ú",
+	"Ubrcy;": "Ў",
+	"ubrcy;": "ў",
+	"Ucirc;": "Û",
+	"ucirc;": "û",
+	"udarr;": "⇅",
+	"udhar;": "⥮",
+	Ugrave: "Ù",
+	ugrave: "ù",
+	"uharl;": "↿",
+	"uharr;": "↾",
+	"uhblk;": "▀",
+	"ultri;": "◸",
+	"Umacr;": "Ū",
+	"umacr;": "ū",
+	"Union;": "⋃",
+	"Uogon;": "Ų",
+	"uogon;": "ų",
+	"uplus;": "⊎",
+	"upsih;": "ϒ",
+	"UpTee;": "⊥",
+	"Uring;": "Ů",
+	"uring;": "ů",
+	"urtri;": "◹",
+	"utdot;": "⋰",
+	"utrif;": "▴",
+	"uuarr;": "⇈",
+	"varpi;": "ϖ",
+	"vBarv;": "⫩",
+	"VDash;": "⊫",
+	"Vdash;": "⊩",
+	"vDash;": "⊨",
+	"vdash;": "⊢",
+	"veeeq;": "≚",
+	"vltri;": "⊲",
+	"vnsub;": "⊂⃒",
+	"vnsup;": "⊃⃒",
+	"vprop;": "∝",
+	"vrtri;": "⊳",
+	"Wcirc;": "Ŵ",
+	"wcirc;": "ŵ",
+	"Wedge;": "⋀",
+	"wedge;": "∧",
+	"xcirc;": "◯",
+	"xdtri;": "▽",
+	"xhArr;": "⟺",
+	"xharr;": "⟷",
+	"xlArr;": "⟸",
+	"xlarr;": "⟵",
+	"xodot;": "⨀",
+	"xrArr;": "⟹",
+	"xrarr;": "⟶",
+	"xutri;": "△",
+	Yacute: "Ý",
+	yacute: "ý",
+	"Ycirc;": "Ŷ",
+	"ycirc;": "ŷ",
+	"Aacute;": "Á",
+	"aacute;": "á",
+	"Abreve;": "Ă",
+	"abreve;": "ă",
+	"Agrave;": "À",
+	"agrave;": "à",
+	"andand;": "⩕",
+	"angmsd;": "∡",
+	"angsph;": "∢",
+	"apacir;": "⩯",
+	"approx;": "≈",
+	"Assign;": "≔",
+	"Atilde;": "Ã",
+	"atilde;": "ã",
+	"barvee;": "⊽",
+	"Barwed;": "⌆",
+	"barwed;": "⌅",
+	"becaus;": "∵",
+	"bernou;": "ℬ",
+	"bigcap;": "⋂",
+	"bigcup;": "⋃",
+	"bigvee;": "⋁",
+	"bkarow;": "⤍",
+	"bottom;": "⊥",
+	"bowtie;": "⋈",
+	"boxbox;": "⧉",
+	"bprime;": "‵",
+	"brvbar;": "¦",
+	"bullet;": "•",
+	"Bumpeq;": "≎",
+	"bumpeq;": "≏",
+	"Cacute;": "Ć",
+	"cacute;": "ć",
+	"capand;": "⩄",
+	"capcap;": "⩋",
+	"capcup;": "⩇",
+	"capdot;": "⩀",
+	"Ccaron;": "Č",
+	"ccaron;": "č",
+	"Ccedil;": "Ç",
+	"ccedil;": "ç",
+	"circeq;": "≗",
+	"cirmid;": "⫯",
+	"Colone;": "⩴",
+	"colone;": "≔",
+	"commat;": "@",
+	"compfn;": "∘",
+	"Conint;": "∯",
+	"conint;": "∮",
+	"coprod;": "∐",
+	"copysr;": "℗",
+	"cularr;": "↶",
+	"CupCap;": "≍",
+	"cupcap;": "⩆",
+	"cupcup;": "⩊",
+	"cupdot;": "⊍",
+	"curarr;": "↷",
+	"curren;": "¤",
+	"cylcty;": "⌭",
+	"Dagger;": "‡",
+	"dagger;": "†",
+	"daleth;": "ℸ",
+	"Dcaron;": "Ď",
+	"dcaron;": "ď",
+	"dfisht;": "⥿",
+	"divide;": "÷",
+	"divonx;": "⋇",
+	"dlcorn;": "⌞",
+	"dlcrop;": "⌍",
+	"dollar;": "$",
+	"DotDot;": "⃜",
+	"drcorn;": "⌟",
+	"drcrop;": "⌌",
+	"Dstrok;": "Đ",
+	"dstrok;": "đ",
+	"Eacute;": "É",
+	"eacute;": "é",
+	"easter;": "⩮",
+	"Ecaron;": "Ě",
+	"ecaron;": "ě",
+	"ecolon;": "≕",
+	"Egrave;": "È",
+	"egrave;": "è",
+	"egsdot;": "⪘",
+	"elsdot;": "⪗",
+	"emptyv;": "∅",
+	"emsp13;": " ",
+	"emsp14;": " ",
+	"eparsl;": "⧣",
+	"eqcirc;": "≖",
+	"equals;": "=",
+	"equest;": "≟",
+	"Exists;": "∃",
+	"female;": "♀",
+	"ffilig;": "ffi",
+	"ffllig;": "ffl",
+	"ForAll;": "∀",
+	"forall;": "∀",
+	"frac12;": "½",
+	"frac13;": "⅓",
+	"frac14;": "¼",
+	"frac15;": "⅕",
+	"frac16;": "⅙",
+	"frac18;": "⅛",
+	"frac23;": "⅔",
+	"frac25;": "⅖",
+	"frac34;": "¾",
+	"frac35;": "⅗",
+	"frac38;": "⅜",
+	"frac45;": "⅘",
+	"frac56;": "⅚",
+	"frac58;": "⅝",
+	"frac78;": "⅞",
+	"gacute;": "ǵ",
+	"Gammad;": "Ϝ",
+	"gammad;": "ϝ",
+	"Gbreve;": "Ğ",
+	"gbreve;": "ğ",
+	"Gcedil;": "Ģ",
+	"gesdot;": "⪀",
+	"gesles;": "⪔",
+	"gtlPar;": "⦕",
+	"gtrarr;": "⥸",
+	"gtrdot;": "⋗",
+	"gtrsim;": "≳",
+	"hairsp;": " ",
+	"hamilt;": "ℋ",
+	"HARDcy;": "Ъ",
+	"hardcy;": "ъ",
+	"hearts;": "♥",
+	"hellip;": "…",
+	"hercon;": "⊹",
+	"homtht;": "∻",
+	"horbar;": "―",
+	"hslash;": "ℏ",
+	"Hstrok;": "Ħ",
+	"hstrok;": "ħ",
+	"hybull;": "⁃",
+	"hyphen;": "‐",
+	"Iacute;": "Í",
+	"iacute;": "í",
+	"Igrave;": "Ì",
+	"igrave;": "ì",
+	"iiiint;": "⨌",
+	"iinfin;": "⧜",
+	"incare;": "℅",
+	"inodot;": "ı",
+	"intcal;": "⊺",
+	"iquest;": "¿",
+	"isinsv;": "⋳",
+	"Itilde;": "Ĩ",
+	"itilde;": "ĩ",
+	"Jsercy;": "Ј",
+	"jsercy;": "ј",
+	"kappav;": "ϰ",
+	"Kcedil;": "Ķ",
+	"kcedil;": "ķ",
+	"kgreen;": "ĸ",
+	"Lacute;": "Ĺ",
+	"lacute;": "ĺ",
+	"lagran;": "ℒ",
+	"Lambda;": "Λ",
+	"lambda;": "λ",
+	"langle;": "⟨",
+	"larrfs;": "⤝",
+	"larrhk;": "↩",
+	"larrlp;": "↫",
+	"larrpl;": "⤹",
+	"larrtl;": "↢",
+	"lAtail;": "⤛",
+	"latail;": "⤙",
+	"lbrace;": "{",
+	"lbrack;": "[",
+	"Lcaron;": "Ľ",
+	"lcaron;": "ľ",
+	"Lcedil;": "Ļ",
+	"lcedil;": "ļ",
+	"ldquor;": "„",
+	"lesdot;": "⩿",
+	"lesges;": "⪓",
+	"lfisht;": "⥼",
+	"lfloor;": "⌊",
+	"lharul;": "⥪",
+	"llhard;": "⥫",
+	"Lmidot;": "Ŀ",
+	"lmidot;": "ŀ",
+	"lmoust;": "⎰",
+	"loplus;": "⨭",
+	"lowast;": "∗",
+	"lowbar;": "_",
+	"lparlt;": "⦓",
+	"lrhard;": "⥭",
+	"lsaquo;": "‹",
+	"lsquor;": "‚",
+	"Lstrok;": "Ł",
+	"lstrok;": "ł",
+	"lthree;": "⋋",
+	"ltimes;": "⋉",
+	"ltlarr;": "⥶",
+	"ltrPar;": "⦖",
+	"mapsto;": "↦",
+	"marker;": "▮",
+	"mcomma;": "⨩",
+	"midast;": "*",
+	"midcir;": "⫰",
+	"middot;": "·",
+	"minusb;": "⊟",
+	"minusd;": "∸",
+	"mnplus;": "∓",
+	"models;": "⊧",
+	"mstpos;": "∾",
+	"Nacute;": "Ń",
+	"nacute;": "ń",
+	"nbumpe;": "≏̸",
+	"Ncaron;": "Ň",
+	"ncaron;": "ň",
+	"Ncedil;": "Ņ",
+	"ncedil;": "ņ",
+	"nearhk;": "⤤",
+	"nequiv;": "≢",
+	"nesear;": "⤨",
+	"nexist;": "∄",
+	"nltrie;": "⋬",
+	"notinE;": "⋹̸",
+	"nparsl;": "⫽⃥",
+	"nprcue;": "⋠",
+	"nrarrc;": "⤳̸",
+	"nrarrw;": "↝̸",
+	"nrtrie;": "⋭",
+	"nsccue;": "⋡",
+	"nsimeq;": "≄",
+	"Ntilde;": "Ñ",
+	"ntilde;": "ñ",
+	"numero;": "№",
+	"nVDash;": "⊯",
+	"nVdash;": "⊮",
+	"nvDash;": "⊭",
+	"nvdash;": "⊬",
+	"nvHarr;": "⤄",
+	"nvlArr;": "⤂",
+	"nvrArr;": "⤃",
+	"nwarhk;": "⤣",
+	"nwnear;": "⤧",
+	"Oacute;": "Ó",
+	"oacute;": "ó",
+	"Odblac;": "Ő",
+	"odblac;": "ő",
+	"odsold;": "⦼",
+	"Ograve;": "Ò",
+	"ograve;": "ò",
+	"ominus;": "⊖",
+	"origof;": "⊶",
+	"Oslash;": "Ø",
+	"oslash;": "ø",
+	"Otilde;": "Õ",
+	"otilde;": "õ",
+	"Otimes;": "⨷",
+	"otimes;": "⊗",
+	"parsim;": "⫳",
+	"percnt;": "%",
+	"period;": ".",
+	"permil;": "‰",
+	"phmmat;": "ℳ",
+	"planck;": "ℏ",
+	"plankv;": "ℏ",
+	"plusdo;": "∔",
+	"plusdu;": "⨥",
+	"plusmn;": "±",
+	"preceq;": "⪯",
+	"primes;": "ℙ",
+	"prnsim;": "⋨",
+	"propto;": "∝",
+	"prurel;": "⊰",
+	"puncsp;": " ",
+	"qprime;": "⁗",
+	"Racute;": "Ŕ",
+	"racute;": "ŕ",
+	"rangle;": "⟩",
+	"rarrap;": "⥵",
+	"rarrfs;": "⤞",
+	"rarrhk;": "↪",
+	"rarrlp;": "↬",
+	"rarrpl;": "⥅",
+	"Rarrtl;": "⤖",
+	"rarrtl;": "↣",
+	"rAtail;": "⤜",
+	"ratail;": "⤚",
+	"rbrace;": "}",
+	"rbrack;": "]",
+	"Rcaron;": "Ř",
+	"rcaron;": "ř",
+	"Rcedil;": "Ŗ",
+	"rcedil;": "ŗ",
+	"rdquor;": "”",
+	"rfisht;": "⥽",
+	"rfloor;": "⌋",
+	"rharul;": "⥬",
+	"rmoust;": "⎱",
+	"roplus;": "⨮",
+	"rpargt;": "⦔",
+	"rsaquo;": "›",
+	"rsquor;": "’",
+	"rthree;": "⋌",
+	"rtimes;": "⋊",
+	"Sacute;": "Ś",
+	"sacute;": "ś",
+	"Scaron;": "Š",
+	"scaron;": "š",
+	"Scedil;": "Ş",
+	"scedil;": "ş",
+	"scnsim;": "⋩",
+	"searhk;": "⤥",
+	"seswar;": "⤩",
+	"sfrown;": "⌢",
+	"SHCHcy;": "Щ",
+	"shchcy;": "щ",
+	"sigmaf;": "ς",
+	"sigmav;": "ς",
+	"simdot;": "⩪",
+	"smashp;": "⨳",
+	"SOFTcy;": "Ь",
+	"softcy;": "ь",
+	"solbar;": "⌿",
+	"spades;": "♠",
+	"sqcaps;": "⊓︀",
+	"sqcups;": "⊔︀",
+	"sqsube;": "⊑",
+	"sqsupe;": "⊒",
+	"Square;": "□",
+	"square;": "□",
+	"squarf;": "▪",
+	"ssetmn;": "∖",
+	"ssmile;": "⌣",
+	"sstarf;": "⋆",
+	"subdot;": "⪽",
+	"Subset;": "⋐",
+	"subset;": "⊂",
+	"subsim;": "⫇",
+	"subsub;": "⫕",
+	"subsup;": "⫓",
+	"succeq;": "⪰",
+	"supdot;": "⪾",
+	"Supset;": "⋑",
+	"supset;": "⊃",
+	"supsim;": "⫈",
+	"supsub;": "⫔",
+	"supsup;": "⫖",
+	"swarhk;": "⤦",
+	"swnwar;": "⤪",
+	"target;": "⌖",
+	"Tcaron;": "Ť",
+	"tcaron;": "ť",
+	"Tcedil;": "Ţ",
+	"tcedil;": "ţ",
+	"telrec;": "⌕",
+	"there4;": "∴",
+	"thetav;": "ϑ",
+	"thinsp;": " ",
+	"thksim;": "∼",
+	"timesb;": "⊠",
+	"timesd;": "⨰",
+	"topbot;": "⌶",
+	"topcir;": "⫱",
+	"tprime;": "‴",
+	"tridot;": "◬",
+	"Tstrok;": "Ŧ",
+	"tstrok;": "ŧ",
+	"Uacute;": "Ú",
+	"uacute;": "ú",
+	"Ubreve;": "Ŭ",
+	"ubreve;": "ŭ",
+	"Udblac;": "Ű",
+	"udblac;": "ű",
+	"ufisht;": "⥾",
+	"Ugrave;": "Ù",
+	"ugrave;": "ù",
+	"ulcorn;": "⌜",
+	"ulcrop;": "⌏",
+	"urcorn;": "⌝",
+	"urcrop;": "⌎",
+	"Utilde;": "Ũ",
+	"utilde;": "ũ",
+	"vangrt;": "⦜",
+	"varphi;": "ϕ",
+	"varrho;": "ϱ",
+	"Vdashl;": "⫦",
+	"veebar;": "⊻",
+	"vellip;": "⋮",
+	"Verbar;": "‖",
+	"verbar;": "|",
+	"vsubnE;": "⫋︀",
+	"vsubne;": "⊊︀",
+	"vsupnE;": "⫌︀",
+	"vsupne;": "⊋︀",
+	"Vvdash;": "⊪",
+	"wedbar;": "⩟",
+	"wedgeq;": "≙",
+	"weierp;": "℘",
+	"wreath;": "≀",
+	"xoplus;": "⨁",
+	"xotime;": "⨂",
+	"xsqcup;": "⨆",
+	"xuplus;": "⨄",
+	"xwedge;": "⋀",
+	"Yacute;": "Ý",
+	"yacute;": "ý",
+	"Zacute;": "Ź",
+	"zacute;": "ź",
+	"Zcaron;": "Ž",
+	"zcaron;": "ž",
+	"zeetrf;": "ℨ",
+	"alefsym;": "ℵ",
+	"angrtvb;": "⊾",
+	"angzarr;": "⍼",
+	"asympeq;": "≍",
+	"backsim;": "∽",
+	"Because;": "∵",
+	"because;": "∵",
+	"bemptyv;": "⦰",
+	"between;": "≬",
+	"bigcirc;": "◯",
+	"bigodot;": "⨀",
+	"bigstar;": "★",
+	"bnequiv;": "≡⃥",
+	"boxplus;": "⊞",
+	"Cayleys;": "ℭ",
+	"Cconint;": "∰",
+	"ccupssm;": "⩐",
+	"Cedilla;": "¸",
+	"cemptyv;": "⦲",
+	"cirscir;": "⧂",
+	"coloneq;": "≔",
+	"congdot;": "⩭",
+	"cudarrl;": "⤸",
+	"cudarrr;": "⤵",
+	"cularrp;": "⤽",
+	"curarrm;": "⤼",
+	"dbkarow;": "⤏",
+	"ddagger;": "‡",
+	"ddotseq;": "⩷",
+	"demptyv;": "⦱",
+	"Diamond;": "⋄",
+	"diamond;": "⋄",
+	"digamma;": "ϝ",
+	"dotplus;": "∔",
+	"DownTee;": "⊤",
+	"dwangle;": "⦦",
+	"Element;": "∈",
+	"Epsilon;": "Ε",
+	"epsilon;": "ε",
+	"eqcolon;": "≕",
+	"equivDD;": "⩸",
+	"gesdoto;": "⪂",
+	"gtquest;": "⩼",
+	"gtrless;": "≷",
+	"harrcir;": "⥈",
+	"Implies;": "⇒",
+	"intprod;": "⨼",
+	"isindot;": "⋵",
+	"larrbfs;": "⤟",
+	"larrsim;": "⥳",
+	"lbrksld;": "⦏",
+	"lbrkslu;": "⦍",
+	"ldrdhar;": "⥧",
+	"LeftTee;": "⊣",
+	"lesdoto;": "⪁",
+	"lessdot;": "⋖",
+	"lessgtr;": "≶",
+	"lesssim;": "≲",
+	"lotimes;": "⨴",
+	"lozenge;": "◊",
+	"ltquest;": "⩻",
+	"luruhar;": "⥦",
+	"maltese;": "✠",
+	"minusdu;": "⨪",
+	"napprox;": "≉",
+	"natural;": "♮",
+	"nearrow;": "↗",
+	"NewLine;": "\n",
+	"nexists;": "∄",
+	"NoBreak;": "⁠",
+	"notinva;": "∉",
+	"notinvb;": "⋷",
+	"notinvc;": "⋶",
+	"NotLess;": "≮",
+	"notniva;": "∌",
+	"notnivb;": "⋾",
+	"notnivc;": "⋽",
+	"npolint;": "⨔",
+	"npreceq;": "⪯̸",
+	"nsqsube;": "⋢",
+	"nsqsupe;": "⋣",
+	"nsubset;": "⊂⃒",
+	"nsucceq;": "⪰̸",
+	"nsupset;": "⊃⃒",
+	"nvinfin;": "⧞",
+	"nvltrie;": "⊴⃒",
+	"nvrtrie;": "⊵⃒",
+	"nwarrow;": "↖",
+	"olcross;": "⦻",
+	"Omicron;": "Ο",
+	"omicron;": "ο",
+	"orderof;": "ℴ",
+	"orslope;": "⩗",
+	"OverBar;": "‾",
+	"pertenk;": "‱",
+	"planckh;": "ℎ",
+	"pluscir;": "⨢",
+	"plussim;": "⨦",
+	"plustwo;": "⨧",
+	"precsim;": "≾",
+	"Product;": "∏",
+	"quatint;": "⨖",
+	"questeq;": "≟",
+	"rarrbfs;": "⤠",
+	"rarrsim;": "⥴",
+	"rbrksld;": "⦎",
+	"rbrkslu;": "⦐",
+	"rdldhar;": "⥩",
+	"realine;": "ℛ",
+	"rotimes;": "⨵",
+	"ruluhar;": "⥨",
+	"searrow;": "↘",
+	"simplus;": "⨤",
+	"simrarr;": "⥲",
+	"subedot;": "⫃",
+	"submult;": "⫁",
+	"subplus;": "⪿",
+	"subrarr;": "⥹",
+	"succsim;": "≿",
+	"supdsub;": "⫘",
+	"supedot;": "⫄",
+	"suphsol;": "⟉",
+	"suphsub;": "⫗",
+	"suplarr;": "⥻",
+	"supmult;": "⫂",
+	"supplus;": "⫀",
+	"swarrow;": "↙",
+	"topfork;": "⫚",
+	"triplus;": "⨹",
+	"tritime;": "⨻",
+	"UpArrow;": "↑",
+	"Uparrow;": "⇑",
+	"uparrow;": "↑",
+	"Upsilon;": "Υ",
+	"upsilon;": "υ",
+	"uwangle;": "⦧",
+	"vzigzag;": "⦚",
+	"zigrarr;": "⇝",
+	"andslope;": "⩘",
+	"angmsdaa;": "⦨",
+	"angmsdab;": "⦩",
+	"angmsdac;": "⦪",
+	"angmsdad;": "⦫",
+	"angmsdae;": "⦬",
+	"angmsdaf;": "⦭",
+	"angmsdag;": "⦮",
+	"angmsdah;": "⦯",
+	"angrtvbd;": "⦝",
+	"approxeq;": "≊",
+	"awconint;": "∳",
+	"backcong;": "≌",
+	"barwedge;": "⌅",
+	"bbrktbrk;": "⎶",
+	"bigoplus;": "⨁",
+	"bigsqcup;": "⨆",
+	"biguplus;": "⨄",
+	"bigwedge;": "⋀",
+	"boxminus;": "⊟",
+	"boxtimes;": "⊠",
+	"bsolhsub;": "⟈",
+	"capbrcup;": "⩉",
+	"circledR;": "®",
+	"circledS;": "Ⓢ",
+	"cirfnint;": "⨐",
+	"clubsuit;": "♣",
+	"cupbrcap;": "⩈",
+	"curlyvee;": "⋎",
+	"cwconint;": "∲",
+	"DDotrahd;": "⤑",
+	"doteqdot;": "≑",
+	"DotEqual;": "≐",
+	"dotminus;": "∸",
+	"drbkarow;": "⤐",
+	"dzigrarr;": "⟿",
+	"elinters;": "⏧",
+	"emptyset;": "∅",
+	"eqvparsl;": "⧥",
+	"fpartint;": "⨍",
+	"geqslant;": "⩾",
+	"gesdotol;": "⪄",
+	"gnapprox;": "⪊",
+	"hksearow;": "⤥",
+	"hkswarow;": "⤦",
+	"imagline;": "ℐ",
+	"imagpart;": "ℑ",
+	"infintie;": "⧝",
+	"integers;": "ℤ",
+	"Integral;": "∫",
+	"intercal;": "⊺",
+	"intlarhk;": "⨗",
+	"laemptyv;": "⦴",
+	"ldrushar;": "⥋",
+	"leqslant;": "⩽",
+	"lesdotor;": "⪃",
+	"LessLess;": "⪡",
+	"llcorner;": "⌞",
+	"lnapprox;": "⪉",
+	"lrcorner;": "⌟",
+	"lurdshar;": "⥊",
+	"mapstoup;": "↥",
+	"multimap;": "⊸",
+	"naturals;": "ℕ",
+	"ncongdot;": "⩭̸",
+	"NotEqual;": "≠",
+	"notindot;": "⋵̸",
+	"NotTilde;": "≁",
+	"otimesas;": "⨶",
+	"parallel;": "∥",
+	"PartialD;": "∂",
+	"plusacir;": "⨣",
+	"pointint;": "⨕",
+	"Precedes;": "≺",
+	"precneqq;": "⪵",
+	"precnsim;": "⋨",
+	"profalar;": "⌮",
+	"profline;": "⌒",
+	"profsurf;": "⌓",
+	"raemptyv;": "⦳",
+	"realpart;": "ℜ",
+	"RightTee;": "⊢",
+	"rppolint;": "⨒",
+	"rtriltri;": "⧎",
+	"scpolint;": "⨓",
+	"setminus;": "∖",
+	"shortmid;": "∣",
+	"smeparsl;": "⧤",
+	"sqsubset;": "⊏",
+	"sqsupset;": "⊐",
+	"subseteq;": "⊆",
+	"Succeeds;": "≻",
+	"succneqq;": "⪶",
+	"succnsim;": "⋩",
+	"SuchThat;": "∋",
+	"Superset;": "⊃",
+	"supseteq;": "⊇",
+	"thetasym;": "ϑ",
+	"thicksim;": "∼",
+	"timesbar;": "⨱",
+	"triangle;": "▵",
+	"triminus;": "⨺",
+	"trpezium;": "⏢",
+	"Uarrocir;": "⥉",
+	"ulcorner;": "⌜",
+	"UnderBar;": "_",
+	"urcorner;": "⌝",
+	"varkappa;": "ϰ",
+	"varsigma;": "ς",
+	"vartheta;": "ϑ",
+	"backprime;": "‵",
+	"backsimeq;": "⋍",
+	"Backslash;": "∖",
+	"bigotimes;": "⨂",
+	"CenterDot;": "·",
+	"centerdot;": "·",
+	"checkmark;": "✓",
+	"CircleDot;": "⊙",
+	"complexes;": "ℂ",
+	"Congruent;": "≡",
+	"Coproduct;": "∐",
+	"dotsquare;": "⊡",
+	"DoubleDot;": "¨",
+	"DownArrow;": "↓",
+	"Downarrow;": "⇓",
+	"downarrow;": "↓",
+	"DownBreve;": "̑",
+	"gtrapprox;": "⪆",
+	"gtreqless;": "⋛",
+	"gvertneqq;": "≩︀",
+	"heartsuit;": "♥",
+	"HumpEqual;": "≏",
+	"LeftArrow;": "←",
+	"Leftarrow;": "⇐",
+	"leftarrow;": "←",
+	"LeftFloor;": "⌊",
+	"lesseqgtr;": "⋚",
+	"LessTilde;": "≲",
+	"lvertneqq;": "≨︀",
+	"Mellintrf;": "ℳ",
+	"MinusPlus;": "∓",
+	"ngeqslant;": "⩾̸",
+	"nleqslant;": "⩽̸",
+	"NotCupCap;": "≭",
+	"NotExists;": "∄",
+	"NotSubset;": "⊂⃒",
+	"nparallel;": "∦",
+	"nshortmid;": "∤",
+	"nsubseteq;": "⊈",
+	"nsupseteq;": "⊉",
+	"OverBrace;": "⏞",
+	"pitchfork;": "⋔",
+	"PlusMinus;": "±",
+	"rationals;": "ℚ",
+	"spadesuit;": "♠",
+	"subseteqq;": "⫅",
+	"subsetneq;": "⊊",
+	"supseteqq;": "⫆",
+	"supsetneq;": "⊋",
+	"Therefore;": "∴",
+	"therefore;": "∴",
+	"ThinSpace;": " ",
+	"triangleq;": "≜",
+	"TripleDot;": "⃛",
+	"UnionPlus;": "⊎",
+	"varpropto;": "∝",
+	"Bernoullis;": "ℬ",
+	"circledast;": "⊛",
+	"CirclePlus;": "⊕",
+	"complement;": "∁",
+	"curlywedge;": "⋏",
+	"eqslantgtr;": "⪖",
+	"EqualTilde;": "≂",
+	"Fouriertrf;": "ℱ",
+	"gtreqqless;": "⪌",
+	"ImaginaryI;": "ⅈ",
+	"Laplacetrf;": "ℒ",
+	"LeftVector;": "↼",
+	"lessapprox;": "⪅",
+	"lesseqqgtr;": "⪋",
+	"Lleftarrow;": "⇚",
+	"lmoustache;": "⎰",
+	"longmapsto;": "⟼",
+	"mapstodown;": "↧",
+	"mapstoleft;": "↤",
+	"nLeftarrow;": "⇍",
+	"nleftarrow;": "↚",
+	"NotElement;": "∉",
+	"NotGreater;": "≯",
+	"nsubseteqq;": "⫅̸",
+	"nsupseteqq;": "⫆̸",
+	"precapprox;": "⪷",
+	"Proportion;": "∷",
+	"RightArrow;": "→",
+	"Rightarrow;": "⇒",
+	"rightarrow;": "→",
+	"RightFloor;": "⌋",
+	"rmoustache;": "⎱",
+	"sqsubseteq;": "⊑",
+	"sqsupseteq;": "⊒",
+	"subsetneqq;": "⫋",
+	"succapprox;": "⪸",
+	"supsetneqq;": "⫌",
+	"ThickSpace;": "  ",
+	"TildeEqual;": "≃",
+	"TildeTilde;": "≈",
+	"UnderBrace;": "⏟",
+	"UpArrowBar;": "⤒",
+	"UpTeeArrow;": "↥",
+	"upuparrows;": "⇈",
+	"varepsilon;": "ϵ",
+	"varnothing;": "∅",
+	"backepsilon;": "϶",
+	"blacksquare;": "▪",
+	"circledcirc;": "⊚",
+	"circleddash;": "⊝",
+	"CircleMinus;": "⊖",
+	"CircleTimes;": "⊗",
+	"curlyeqprec;": "⋞",
+	"curlyeqsucc;": "⋟",
+	"diamondsuit;": "♦",
+	"eqslantless;": "⪕",
+	"Equilibrium;": "⇌",
+	"expectation;": "ℰ",
+	"GreaterLess;": "≷",
+	"LeftCeiling;": "⌈",
+	"LessGreater;": "≶",
+	"MediumSpace;": " ",
+	"NotLessLess;": "≪̸",
+	"NotPrecedes;": "⊀",
+	"NotSucceeds;": "⊁",
+	"NotSuperset;": "⊃⃒",
+	"nRightarrow;": "⇏",
+	"nrightarrow;": "↛",
+	"OverBracket;": "⎴",
+	"preccurlyeq;": "≼",
+	"precnapprox;": "⪹",
+	"quaternions;": "ℍ",
+	"RightVector;": "⇀",
+	"Rrightarrow;": "⇛",
+	"RuleDelayed;": "⧴",
+	"SmallCircle;": "∘",
+	"SquareUnion;": "⊔",
+	"straightphi;": "ϕ",
+	"SubsetEqual;": "⊆",
+	"succcurlyeq;": "≽",
+	"succnapprox;": "⪺",
+	"thickapprox;": "≈",
+	"UpDownArrow;": "↕",
+	"Updownarrow;": "⇕",
+	"updownarrow;": "↕",
+	"VerticalBar;": "∣",
+	"blacklozenge;": "⧫",
+	"DownArrowBar;": "⤓",
+	"DownTeeArrow;": "↧",
+	"ExponentialE;": "ⅇ",
+	"exponentiale;": "ⅇ",
+	"GreaterEqual;": "≥",
+	"GreaterTilde;": "≳",
+	"HilbertSpace;": "ℋ",
+	"HumpDownHump;": "≎",
+	"Intersection;": "⋂",
+	"LeftArrowBar;": "⇤",
+	"LeftTeeArrow;": "↤",
+	"LeftTriangle;": "⊲",
+	"LeftUpVector;": "↿",
+	"NotCongruent;": "≢",
+	"NotHumpEqual;": "≏̸",
+	"NotLessEqual;": "≰",
+	"NotLessTilde;": "≴",
+	"Proportional;": "∝",
+	"RightCeiling;": "⌉",
+	"risingdotseq;": "≓",
+	"RoundImplies;": "⥰",
+	"ShortUpArrow;": "↑",
+	"SquareSubset;": "⊏",
+	"triangledown;": "▿",
+	"triangleleft;": "◃",
+	"UnderBracket;": "⎵",
+	"varsubsetneq;": "⊊︀",
+	"varsupsetneq;": "⊋︀",
+	"VerticalLine;": "|",
+	"ApplyFunction;": "⁡",
+	"bigtriangleup;": "△",
+	"blacktriangle;": "▴",
+	"DifferentialD;": "ⅆ",
+	"divideontimes;": "⋇",
+	"DoubleLeftTee;": "⫤",
+	"DoubleUpArrow;": "⇑",
+	"fallingdotseq;": "≒",
+	"hookleftarrow;": "↩",
+	"leftarrowtail;": "↢",
+	"leftharpoonup;": "↼",
+	"LeftTeeVector;": "⥚",
+	"LeftVectorBar;": "⥒",
+	"LessFullEqual;": "≦",
+	"LongLeftArrow;": "⟵",
+	"Longleftarrow;": "⟸",
+	"longleftarrow;": "⟵",
+	"looparrowleft;": "↫",
+	"measuredangle;": "∡",
+	"NotEqualTilde;": "≂̸",
+	"NotTildeEqual;": "≄",
+	"NotTildeTilde;": "≉",
+	"ntriangleleft;": "⋪",
+	"Poincareplane;": "ℌ",
+	"PrecedesEqual;": "⪯",
+	"PrecedesTilde;": "≾",
+	"RightArrowBar;": "⇥",
+	"RightTeeArrow;": "↦",
+	"RightTriangle;": "⊳",
+	"RightUpVector;": "↾",
+	"shortparallel;": "∥",
+	"smallsetminus;": "∖",
+	"SucceedsEqual;": "⪰",
+	"SucceedsTilde;": "≿",
+	"SupersetEqual;": "⊇",
+	"triangleright;": "▹",
+	"UpEquilibrium;": "⥮",
+	"upharpoonleft;": "↿",
+	"varsubsetneqq;": "⫋︀",
+	"varsupsetneqq;": "⫌︀",
+	"VerticalTilde;": "≀",
+	"VeryThinSpace;": " ",
+	"curvearrowleft;": "↶",
+	"DiacriticalDot;": "˙",
+	"doublebarwedge;": "⌆",
+	"DoubleRightTee;": "⊨",
+	"downdownarrows;": "⇊",
+	"DownLeftVector;": "↽",
+	"GreaterGreater;": "⪢",
+	"hookrightarrow;": "↪",
+	"HorizontalLine;": "─",
+	"InvisibleComma;": "⁣",
+	"InvisibleTimes;": "⁢",
+	"LeftDownVector;": "⇃",
+	"leftleftarrows;": "⇇",
+	"LeftRightArrow;": "↔",
+	"Leftrightarrow;": "⇔",
+	"leftrightarrow;": "↔",
+	"leftthreetimes;": "⋋",
+	"LessSlantEqual;": "⩽",
+	"LongRightArrow;": "⟶",
+	"Longrightarrow;": "⟹",
+	"longrightarrow;": "⟶",
+	"looparrowright;": "↬",
+	"LowerLeftArrow;": "↙",
+	"NestedLessLess;": "≪",
+	"NotGreaterLess;": "≹",
+	"NotLessGreater;": "≸",
+	"NotSubsetEqual;": "⊈",
+	"NotVerticalBar;": "∤",
+	"nshortparallel;": "∦",
+	"ntriangleright;": "⋫",
+	"OpenCurlyQuote;": "‘",
+	"ReverseElement;": "∋",
+	"rightarrowtail;": "↣",
+	"rightharpoonup;": "⇀",
+	"RightTeeVector;": "⥛",
+	"RightVectorBar;": "⥓",
+	"ShortDownArrow;": "↓",
+	"ShortLeftArrow;": "←",
+	"SquareSuperset;": "⊐",
+	"TildeFullEqual;": "≅",
+	"trianglelefteq;": "⊴",
+	"upharpoonright;": "↾",
+	"UpperLeftArrow;": "↖",
+	"ZeroWidthSpace;": "​",
+	"bigtriangledown;": "▽",
+	"circlearrowleft;": "↺",
+	"CloseCurlyQuote;": "’",
+	"ContourIntegral;": "∮",
+	"curvearrowright;": "↷",
+	"DoubleDownArrow;": "⇓",
+	"DoubleLeftArrow;": "⇐",
+	"downharpoonleft;": "⇃",
+	"DownRightVector;": "⇁",
+	"leftharpoondown;": "↽",
+	"leftrightarrows;": "⇆",
+	"LeftRightVector;": "⥎",
+	"LeftTriangleBar;": "⧏",
+	"LeftUpTeeVector;": "⥠",
+	"LeftUpVectorBar;": "⥘",
+	"LowerRightArrow;": "↘",
+	"nLeftrightarrow;": "⇎",
+	"nleftrightarrow;": "↮",
+	"NotGreaterEqual;": "≱",
+	"NotGreaterTilde;": "≵",
+	"NotHumpDownHump;": "≎̸",
+	"NotLeftTriangle;": "⋪",
+	"NotSquareSubset;": "⊏̸",
+	"ntrianglelefteq;": "⋬",
+	"OverParenthesis;": "⏜",
+	"RightDownVector;": "⇂",
+	"rightleftarrows;": "⇄",
+	"rightsquigarrow;": "↝",
+	"rightthreetimes;": "⋌",
+	"ShortRightArrow;": "→",
+	"straightepsilon;": "ϵ",
+	"trianglerighteq;": "⊵",
+	"UpperRightArrow;": "↗",
+	"vartriangleleft;": "⊲",
+	"circlearrowright;": "↻",
+	"DiacriticalAcute;": "´",
+	"DiacriticalGrave;": "`",
+	"DiacriticalTilde;": "˜",
+	"DoubleRightArrow;": "⇒",
+	"DownArrowUpArrow;": "⇵",
+	"downharpoonright;": "⇂",
+	"EmptySmallSquare;": "◻",
+	"GreaterEqualLess;": "⋛",
+	"GreaterFullEqual;": "≧",
+	"LeftAngleBracket;": "⟨",
+	"LeftUpDownVector;": "⥑",
+	"LessEqualGreater;": "⋚",
+	"NonBreakingSpace;": " ",
+	"NotPrecedesEqual;": "⪯̸",
+	"NotRightTriangle;": "⋫",
+	"NotSucceedsEqual;": "⪰̸",
+	"NotSucceedsTilde;": "≿̸",
+	"NotSupersetEqual;": "⊉",
+	"ntrianglerighteq;": "⋭",
+	"rightharpoondown;": "⇁",
+	"rightrightarrows;": "⇉",
+	"RightTriangleBar;": "⧐",
+	"RightUpTeeVector;": "⥜",
+	"RightUpVectorBar;": "⥔",
+	"twoheadleftarrow;": "↞",
+	"UnderParenthesis;": "⏝",
+	"UpArrowDownArrow;": "⇅",
+	"vartriangleright;": "⊳",
+	"blacktriangledown;": "▾",
+	"blacktriangleleft;": "◂",
+	"DoubleUpDownArrow;": "⇕",
+	"DoubleVerticalBar;": "∥",
+	"DownLeftTeeVector;": "⥞",
+	"DownLeftVectorBar;": "⥖",
+	"FilledSmallSquare;": "◼",
+	"GreaterSlantEqual;": "⩾",
+	"LeftDoubleBracket;": "⟦",
+	"LeftDownTeeVector;": "⥡",
+	"LeftDownVectorBar;": "⥙",
+	"leftrightharpoons;": "⇋",
+	"LeftTriangleEqual;": "⊴",
+	"NegativeThinSpace;": "​",
+	"NotGreaterGreater;": "≫̸",
+	"NotLessSlantEqual;": "⩽̸",
+	"NotNestedLessLess;": "⪡̸",
+	"NotReverseElement;": "∌",
+	"NotSquareSuperset;": "⊐̸",
+	"NotTildeFullEqual;": "≇",
+	"RightAngleBracket;": "⟩",
+	"rightleftharpoons;": "⇌",
+	"RightUpDownVector;": "⥏",
+	"SquareSubsetEqual;": "⊑",
+	"twoheadrightarrow;": "↠",
+	"VerticalSeparator;": "❘",
+	"blacktriangleright;": "▸",
+	"DownRightTeeVector;": "⥟",
+	"DownRightVectorBar;": "⥗",
+	"LongLeftRightArrow;": "⟷",
+	"Longleftrightarrow;": "⟺",
+	"longleftrightarrow;": "⟷",
+	"NegativeThickSpace;": "​",
+	"NotLeftTriangleBar;": "⧏̸",
+	"PrecedesSlantEqual;": "≼",
+	"ReverseEquilibrium;": "⇋",
+	"RightDoubleBracket;": "⟧",
+	"RightDownTeeVector;": "⥝",
+	"RightDownVectorBar;": "⥕",
+	"RightTriangleEqual;": "⊵",
+	"SquareIntersection;": "⊓",
+	"SucceedsSlantEqual;": "≽",
+	"DoubleLongLeftArrow;": "⟸",
+	"DownLeftRightVector;": "⥐",
+	"LeftArrowRightArrow;": "⇆",
+	"leftrightsquigarrow;": "↭",
+	"NegativeMediumSpace;": "​",
+	"NotGreaterFullEqual;": "≧̸",
+	"NotRightTriangleBar;": "⧐̸",
+	"RightArrowLeftArrow;": "⇄",
+	"SquareSupersetEqual;": "⊒",
+	"CapitalDifferentialD;": "ⅅ",
+	"DoubleLeftRightArrow;": "⇔",
+	"DoubleLongRightArrow;": "⟹",
+	"EmptyVerySmallSquare;": "▫",
+	"NestedGreaterGreater;": "≫",
+	"NotDoubleVerticalBar;": "∦",
+	"NotGreaterSlantEqual;": "⩾̸",
+	"NotLeftTriangleEqual;": "⋬",
+	"NotSquareSubsetEqual;": "⋢",
+	"OpenCurlyDoubleQuote;": "“",
+	"ReverseUpEquilibrium;": "⥯",
+	"CloseCurlyDoubleQuote;": "”",
+	"DoubleContourIntegral;": "∯",
+	"FilledVerySmallSquare;": "▪",
+	"NegativeVeryThinSpace;": "​",
+	"NotPrecedesSlantEqual;": "⋠",
+	"NotRightTriangleEqual;": "⋭",
+	"NotSucceedsSlantEqual;": "⋡",
+	"DiacriticalDoubleAcute;": "˝",
+	"NotSquareSupersetEqual;": "⋣",
+	"NotNestedGreaterGreater;": "⪢̸",
+	"ClockwiseContourIntegral;": "∲",
+	"DoubleLongLeftRightArrow;": "⟺",
+	"CounterClockwiseContourIntegral;": "∳"
+};
+
+let maxCRNameLength;
+const decodeHtml = (rawText, asAttr) => {
+  let offset = 0;
+  const end = rawText.length;
+  let decodedText = "";
+  function advance(length) {
+    offset += length;
+    rawText = rawText.slice(length);
+  }
+  while (offset < end) {
+    const head = /&(?:#x?)?/i.exec(rawText);
+    if (!head || offset + head.index >= end) {
+      const remaining = end - offset;
+      decodedText += rawText.slice(0, remaining);
+      advance(remaining);
+      break;
+    }
+    decodedText += rawText.slice(0, head.index);
+    advance(head.index);
+    if (head[0] === "&") {
+      let name = "";
+      let value = void 0;
+      if (/[0-9a-z]/i.test(rawText[1])) {
+        if (!maxCRNameLength) {
+          maxCRNameLength = Object.keys(namedCharacterReferences).reduce(
+            (max, name2) => Math.max(max, name2.length),
+            0
+          );
+        }
+        for (let length = maxCRNameLength; !value && length > 0; --length) {
+          name = rawText.slice(1, 1 + length);
+          value = namedCharacterReferences[name];
+        }
+        if (value) {
+          const semi = name.endsWith(";");
+          if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) {
+            decodedText += "&" + name;
+            advance(1 + name.length);
+          } else {
+            decodedText += value;
+            advance(1 + name.length);
+          }
+        } else {
+          decodedText += "&" + name;
+          advance(1 + name.length);
+        }
+      } else {
+        decodedText += "&";
+        advance(1);
+      }
+    } else {
+      const hex = head[0] === "&#x";
+      const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/;
+      const body = pattern.exec(rawText);
+      if (!body) {
+        decodedText += head[0];
+        advance(head[0].length);
+      } else {
+        let cp = Number.parseInt(body[1], hex ? 16 : 10);
+        if (cp === 0) {
+          cp = 65533;
+        } else if (cp > 1114111) {
+          cp = 65533;
+        } else if (cp >= 55296 && cp <= 57343) {
+          cp = 65533;
+        } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) {
+          cp = CCR_REPLACEMENTS[cp] || cp;
+        }
+        decodedText += String.fromCodePoint(cp);
+        advance(body[0].length);
+      }
+    }
+  }
+  return decodedText;
+};
+const CCR_REPLACEMENTS = {
+  128: 8364,
+  130: 8218,
+  131: 402,
+  132: 8222,
+  133: 8230,
+  134: 8224,
+  135: 8225,
+  136: 710,
+  137: 8240,
+  138: 352,
+  139: 8249,
+  140: 338,
+  142: 381,
+  145: 8216,
+  146: 8217,
+  147: 8220,
+  148: 8221,
+  149: 8226,
+  150: 8211,
+  151: 8212,
+  152: 732,
+  153: 8482,
+  154: 353,
+  155: 8250,
+  156: 339,
+  158: 382,
+  159: 376
+};
+
+const isRawTextContainer = /* @__PURE__ */ shared.makeMap(
+  "style,iframe,script,noscript",
+  true
+);
+const parserOptions = {
+  isVoidTag: shared.isVoidTag,
+  isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag),
+  isPreTag: (tag) => tag === "pre",
+  decodeEntities: decodeHtml,
+  isBuiltInComponent: (tag) => {
+    if (compilerCore.isBuiltInType(tag, `Transition`)) {
+      return TRANSITION;
+    } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) {
+      return TRANSITION_GROUP;
+    }
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+  getNamespace(tag, parent) {
+    let ns = parent ? parent.ns : 0;
+    if (parent && ns === 2) {
+      if (parent.tag === "annotation-xml") {
+        if (tag === "svg") {
+          return 1;
+        }
+        if (parent.props.some(
+          (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
+        )) {
+          ns = 0;
+        }
+      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
+        ns = 0;
+      }
+    } else if (parent && ns === 1) {
+      if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
+        ns = 0;
+      }
+    }
+    if (ns === 0) {
+      if (tag === "svg") {
+        return 1;
+      }
+      if (tag === "math") {
+        return 2;
+      }
+    }
+    return ns;
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+  getTextMode({ tag, ns }) {
+    if (ns === 0) {
+      if (tag === "textarea" || tag === "title") {
+        return 1;
+      }
+      if (isRawTextContainer(tag)) {
+        return 2;
+      }
+    }
+    return 0;
+  }
+};
+
+const transformStyle = (node) => {
+  if (node.type === 1) {
+    node.props.forEach((p, i) => {
+      if (p.type === 6 && p.name === "style" && p.value) {
+        node.props[i] = {
+          type: 7,
+          name: `bind`,
+          arg: compilerCore.createSimpleExpression(`style`, true, p.loc),
+          exp: parseInlineCSS(p.value.content, p.loc),
+          modifiers: [],
+          loc: p.loc
+        };
+      }
+    });
+  }
+};
+const parseInlineCSS = (cssText, loc) => {
+  const normalized = shared.parseStringStyle(cssText);
+  return compilerCore.createSimpleExpression(
+    JSON.stringify(normalized),
+    false,
+    loc,
+    3
+  );
+};
+
+function createDOMCompilerError(code, loc) {
+  return compilerCore.createCompilerError(
+    code,
+    loc,
+    DOMErrorMessages 
+  );
+}
+const DOMErrorMessages = {
+  [53]: `v-html is missing expression.`,
+  [54]: `v-html will override element children.`,
+  [55]: `v-text is missing expression.`,
+  [56]: `v-text will override element children.`,
+  [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+  [58]: `v-model argument is not supported on plain elements.`,
+  [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+  [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+  [61]: `v-show is missing expression.`,
+  [62]: `<Transition> expects exactly one child element or component.`,
+  [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+};
+
+const transformVHtml = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(53, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(54, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      compilerCore.createObjectProperty(
+        compilerCore.createSimpleExpression(`innerHTML`, true, loc),
+        exp || compilerCore.createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformVText = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(55, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(56, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      compilerCore.createObjectProperty(
+        compilerCore.createSimpleExpression(`textContent`, true),
+        exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression(
+          context.helperString(compilerCore.TO_DISPLAY_STRING),
+          [exp],
+          loc
+        ) : compilerCore.createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformModel = (dir, node, context) => {
+  const baseResult = compilerCore.transformModel(dir, node, context);
+  if (!baseResult.props.length || node.tagType === 1) {
+    return baseResult;
+  }
+  if (dir.arg) {
+    context.onError(
+      createDOMCompilerError(
+        58,
+        dir.arg.loc
+      )
+    );
+  }
+  function checkDuplicatedValue() {
+    const value = compilerCore.findProp(node, "value");
+    if (value) {
+      context.onError(
+        createDOMCompilerError(
+          60,
+          value.loc
+        )
+      );
+    }
+  }
+  const { tag } = node;
+  const isCustomElement = context.isCustomElement(tag);
+  if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
+    let directiveToUse = V_MODEL_TEXT;
+    let isInvalidType = false;
+    if (tag === "input" || isCustomElement) {
+      const type = compilerCore.findProp(node, `type`);
+      if (type) {
+        if (type.type === 7) {
+          directiveToUse = V_MODEL_DYNAMIC;
+        } else if (type.value) {
+          switch (type.value.content) {
+            case "radio":
+              directiveToUse = V_MODEL_RADIO;
+              break;
+            case "checkbox":
+              directiveToUse = V_MODEL_CHECKBOX;
+              break;
+            case "file":
+              isInvalidType = true;
+              context.onError(
+                createDOMCompilerError(
+                  59,
+                  dir.loc
+                )
+              );
+              break;
+            default:
+              checkDuplicatedValue();
+              break;
+          }
+        }
+      } else if (compilerCore.hasDynamicKeyVBind(node)) {
+        directiveToUse = V_MODEL_DYNAMIC;
+      } else {
+        checkDuplicatedValue();
+      }
+    } else if (tag === "select") {
+      directiveToUse = V_MODEL_SELECT;
+    } else {
+      checkDuplicatedValue();
+    }
+    if (!isInvalidType) {
+      baseResult.needRuntime = context.helper(directiveToUse);
+    }
+  } else {
+    context.onError(
+      createDOMCompilerError(
+        57,
+        dir.loc
+      )
+    );
+  }
+  baseResult.props = baseResult.props.filter(
+    (p) => !(p.key.type === 4 && p.key.content === "modelValue")
+  );
+  return baseResult;
+};
+
+const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`);
+const isNonKeyModifier = /* @__PURE__ */ shared.makeMap(
+  // event propagation management
+  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
+);
+const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right");
+const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(
+  `onkeyup,onkeydown,onkeypress`,
+  true
+);
+const resolveModifiers = (key, modifiers, context, loc) => {
+  const keyModifiers = [];
+  const nonKeyModifiers = [];
+  const eventOptionModifiers = [];
+  for (let i = 0; i < modifiers.length; i++) {
+    const modifier = modifiers[i];
+    if (modifier === "native" && compilerCore.checkCompatEnabled(
+      "COMPILER_V_ON_NATIVE",
+      context,
+      loc
+    )) {
+      eventOptionModifiers.push(modifier);
+    } else if (isEventOptionModifier(modifier)) {
+      eventOptionModifiers.push(modifier);
+    } else {
+      if (maybeKeyModifier(modifier)) {
+        if (compilerCore.isStaticExp(key)) {
+          if (isKeyboardEvent(key.content)) {
+            keyModifiers.push(modifier);
+          } else {
+            nonKeyModifiers.push(modifier);
+          }
+        } else {
+          keyModifiers.push(modifier);
+          nonKeyModifiers.push(modifier);
+        }
+      } else {
+        if (isNonKeyModifier(modifier)) {
+          nonKeyModifiers.push(modifier);
+        } else {
+          keyModifiers.push(modifier);
+        }
+      }
+    }
+  }
+  return {
+    keyModifiers,
+    nonKeyModifiers,
+    eventOptionModifiers
+  };
+};
+const transformClick = (key, event) => {
+  const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick";
+  return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([
+    `(`,
+    key,
+    `) === "onClick" ? "${event}" : (`,
+    key,
+    `)`
+  ]) : key;
+};
+const transformOn = (dir, node, context) => {
+  return compilerCore.transformOn(dir, node, context, (baseResult) => {
+    const { modifiers } = dir;
+    if (!modifiers.length)
+      return baseResult;
+    let { key, value: handlerExp } = baseResult.props[0];
+    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+    if (nonKeyModifiers.includes("right")) {
+      key = transformClick(key, `onContextmenu`);
+    }
+    if (nonKeyModifiers.includes("middle")) {
+      key = transformClick(key, `onMouseup`);
+    }
+    if (nonKeyModifiers.length) {
+      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+        handlerExp,
+        JSON.stringify(nonKeyModifiers)
+      ]);
+    }
+    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
+    (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) {
+      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [
+        handlerExp,
+        JSON.stringify(keyModifiers)
+      ]);
+    }
+    if (eventOptionModifiers.length) {
+      const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join("");
+      key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+    }
+    return {
+      props: [compilerCore.createObjectProperty(key, handlerExp)]
+    };
+  });
+};
+
+const transformShow = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(61, loc)
+    );
+  }
+  return {
+    props: [],
+    needRuntime: context.helper(V_SHOW)
+  };
+};
+
+const transformTransition = (node, context) => {
+  if (node.type === 1 && node.tagType === 1) {
+    const component = context.isBuiltInComponent(node.tag);
+    if (component === TRANSITION) {
+      return () => {
+        if (!node.children.length) {
+          return;
+        }
+        if (hasMultipleChildren(node)) {
+          context.onError(
+            createDOMCompilerError(
+              62,
+              {
+                start: node.children[0].loc.start,
+                end: node.children[node.children.length - 1].loc.end,
+                source: ""
+              }
+            )
+          );
+        }
+        const child = node.children[0];
+        if (child.type === 1) {
+          for (const p of child.props) {
+            if (p.type === 7 && p.name === "show") {
+              node.props.push({
+                type: 6,
+                name: "persisted",
+                value: void 0,
+                loc: node.loc
+              });
+            }
+          }
+        }
+      };
+    }
+  }
+};
+function hasMultipleChildren(node) {
+  const children = node.children = node.children.filter(
+    (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
+  );
+  const child = children[0];
+  return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
+}
+
+const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g;
+const stringifyStatic = (children, context, parent) => {
+  if (context.scopes.vSlot > 0) {
+    return;
+  }
+  let nc = 0;
+  let ec = 0;
+  const currentChunk = [];
+  const stringifyCurrentChunk = (currentIndex) => {
+    if (nc >= 20 || ec >= 5) {
+      const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [
+        JSON.stringify(
+          currentChunk.map((node) => stringifyNode(node, context)).join("")
+        ).replace(expReplaceRE, `" + $1 + "`),
+        // the 2nd argument indicates the number of DOM nodes this static vnode
+        // will insert / hydrate
+        String(currentChunk.length)
+      ]);
+      replaceHoist(currentChunk[0], staticCall, context);
+      if (currentChunk.length > 1) {
+        for (let i2 = 1; i2 < currentChunk.length; i2++) {
+          replaceHoist(currentChunk[i2], null, context);
+        }
+        const deleteCount = currentChunk.length - 1;
+        children.splice(currentIndex - currentChunk.length + 1, deleteCount);
+        return deleteCount;
+      }
+    }
+    return 0;
+  };
+  let i = 0;
+  for (; i < children.length; i++) {
+    const child = children[i];
+    const hoisted = getHoistedNode(child);
+    if (hoisted) {
+      const node = child;
+      const result = analyzeNode(node);
+      if (result) {
+        nc += result[0];
+        ec += result[1];
+        currentChunk.push(node);
+        continue;
+      }
+    }
+    i -= stringifyCurrentChunk(i);
+    nc = 0;
+    ec = 0;
+    currentChunk.length = 0;
+  }
+  stringifyCurrentChunk(i);
+};
+const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted;
+const dataAriaRE = /^(data|aria)-/;
+const isStringifiableAttr = (name, ns) => {
+  return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name);
+};
+const replaceHoist = (node, replacement, context) => {
+  const hoistToReplace = node.codegenNode.hoisted;
+  context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement;
+};
+const isNonStringifiable = /* @__PURE__ */ shared.makeMap(
+  `caption,thead,tr,th,tbody,td,tfoot,colgroup,col`
+);
+function analyzeNode(node) {
+  if (node.type === 1 && isNonStringifiable(node.tag)) {
+    return false;
+  }
+  if (node.type === 12) {
+    return [1, 0];
+  }
+  let nc = 1;
+  let ec = node.props.length > 0 ? 1 : 0;
+  let bailed = false;
+  const bail = () => {
+    bailed = true;
+    return false;
+  };
+  function walk(node2) {
+    for (let i = 0; i < node2.props.length; i++) {
+      const p = node2.props[i];
+      if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) {
+        return bail();
+      }
+      if (p.type === 7 && p.name === "bind") {
+        if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) {
+          return bail();
+        }
+        if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) {
+          return bail();
+        }
+      }
+    }
+    for (let i = 0; i < node2.children.length; i++) {
+      nc++;
+      const child = node2.children[i];
+      if (child.type === 1) {
+        if (child.props.length > 0) {
+          ec++;
+        }
+        walk(child);
+        if (bailed) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+  return walk(node) ? [nc, ec] : false;
+}
+function stringifyNode(node, context) {
+  if (shared.isString(node)) {
+    return node;
+  }
+  if (shared.isSymbol(node)) {
+    return ``;
+  }
+  switch (node.type) {
+    case 1:
+      return stringifyElement(node, context);
+    case 2:
+      return shared.escapeHtml(node.content);
+    case 3:
+      return `<!--${shared.escapeHtml(node.content)}-->`;
+    case 5:
+      return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content)));
+    case 8:
+      return shared.escapeHtml(evaluateConstant(node));
+    case 12:
+      return stringifyNode(node.content, context);
+    default:
+      return "";
+  }
+}
+function stringifyElement(node, context) {
+  let res = `<${node.tag}`;
+  let innerHTML = "";
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      res += ` ${p.name}`;
+      if (p.value) {
+        res += `="${shared.escapeHtml(p.value.content)}"`;
+      }
+    } else if (p.type === 7) {
+      if (p.name === "bind") {
+        const exp = p.exp;
+        if (exp.content[0] === "_") {
+          res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`;
+          continue;
+        }
+        if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") {
+          continue;
+        }
+        let evaluated = evaluateConstant(exp);
+        if (evaluated != null) {
+          const arg = p.arg && p.arg.content;
+          if (arg === "class") {
+            evaluated = shared.normalizeClass(evaluated);
+          } else if (arg === "style") {
+            evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated));
+          }
+          res += ` ${p.arg.content}="${shared.escapeHtml(
+            evaluated
+          )}"`;
+        }
+      } else if (p.name === "html") {
+        innerHTML = evaluateConstant(p.exp);
+      } else if (p.name === "text") {
+        innerHTML = shared.escapeHtml(
+          shared.toDisplayString(evaluateConstant(p.exp))
+        );
+      }
+    }
+  }
+  if (context.scopeId) {
+    res += ` ${context.scopeId}`;
+  }
+  res += `>`;
+  if (innerHTML) {
+    res += innerHTML;
+  } else {
+    for (let i = 0; i < node.children.length; i++) {
+      res += stringifyNode(node.children[i], context);
+    }
+  }
+  if (!shared.isVoidTag(node.tag)) {
+    res += `</${node.tag}>`;
+  }
+  return res;
+}
+function evaluateConstant(exp) {
+  if (exp.type === 4) {
+    return new Function(`return (${exp.content})`)();
+  } else {
+    let res = ``;
+    exp.children.forEach((c) => {
+      if (shared.isString(c) || shared.isSymbol(c)) {
+        return;
+      }
+      if (c.type === 2) {
+        res += c.content;
+      } else if (c.type === 5) {
+        res += shared.toDisplayString(evaluateConstant(c.content));
+      } else {
+        res += evaluateConstant(c);
+      }
+    });
+    return res;
+  }
+}
+
+const ignoreSideEffectTags = (node, context) => {
+  if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
+    context.onError(
+      createDOMCompilerError(
+        63,
+        node.loc
+      )
+    );
+    context.removeNode();
+  }
+};
+
+const DOMNodeTransforms = [
+  transformStyle,
+  ...[transformTransition] 
+];
+const DOMDirectiveTransforms = {
+  cloak: compilerCore.noopDirectiveTransform,
+  html: transformVHtml,
+  text: transformVText,
+  model: transformModel,
+  // override compiler-core
+  on: transformOn,
+  // override compiler-core
+  show: transformShow
+};
+function compile(template, options = {}) {
+  return compilerCore.baseCompile(
+    template,
+    shared.extend({}, parserOptions, options, {
+      nodeTransforms: [
+        // ignore <script> and <tag>
+        // this is not put inside DOMNodeTransforms because that list is used
+        // by compiler-ssr to generate vnode fallback branches
+        ignoreSideEffectTags,
+        ...DOMNodeTransforms,
+        ...options.nodeTransforms || []
+      ],
+      directiveTransforms: shared.extend(
+        {},
+        DOMDirectiveTransforms,
+        options.directiveTransforms || {}
+      ),
+      transformHoist: stringifyStatic
+    })
+  );
+}
+function parse(template, options = {}) {
+  return compilerCore.baseParse(template, shared.extend({}, parserOptions, options));
+}
+
+exports.DOMDirectiveTransforms = DOMDirectiveTransforms;
+exports.DOMNodeTransforms = DOMNodeTransforms;
+exports.TRANSITION = TRANSITION;
+exports.TRANSITION_GROUP = TRANSITION_GROUP;
+exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX;
+exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC;
+exports.V_MODEL_RADIO = V_MODEL_RADIO;
+exports.V_MODEL_SELECT = V_MODEL_SELECT;
+exports.V_MODEL_TEXT = V_MODEL_TEXT;
+exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS;
+exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS;
+exports.V_SHOW = V_SHOW;
+exports.compile = compile;
+exports.createDOMCompilerError = createDOMCompilerError;
+exports.parse = parse;
+exports.parserOptions = parserOptions;
+exports.transformStyle = transformStyle;
+Object.keys(compilerCore).forEach(function (k) {
+  if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = compilerCore[k];
+});

+ 2978 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js

xqd
@@ -0,0 +1,2978 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var compilerCore = require('@vue/compiler-core');
+var shared = require('@vue/shared');
+
+const V_MODEL_RADIO = Symbol(``);
+const V_MODEL_CHECKBOX = Symbol(``);
+const V_MODEL_TEXT = Symbol(``);
+const V_MODEL_SELECT = Symbol(``);
+const V_MODEL_DYNAMIC = Symbol(``);
+const V_ON_WITH_MODIFIERS = Symbol(``);
+const V_ON_WITH_KEYS = Symbol(``);
+const V_SHOW = Symbol(``);
+const TRANSITION = Symbol(``);
+const TRANSITION_GROUP = Symbol(``);
+compilerCore.registerRuntimeHelpers({
+  [V_MODEL_RADIO]: `vModelRadio`,
+  [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+  [V_MODEL_TEXT]: `vModelText`,
+  [V_MODEL_SELECT]: `vModelSelect`,
+  [V_MODEL_DYNAMIC]: `vModelDynamic`,
+  [V_ON_WITH_MODIFIERS]: `withModifiers`,
+  [V_ON_WITH_KEYS]: `withKeys`,
+  [V_SHOW]: `vShow`,
+  [TRANSITION]: `Transition`,
+  [TRANSITION_GROUP]: `TransitionGroup`
+});
+
+var namedCharacterReferences = {
+	GT: ">",
+	gt: ">",
+	LT: "<",
+	lt: "<",
+	"ac;": "∾",
+	"af;": "⁡",
+	AMP: "&",
+	amp: "&",
+	"ap;": "≈",
+	"DD;": "ⅅ",
+	"dd;": "ⅆ",
+	deg: "°",
+	"ee;": "ⅇ",
+	"eg;": "⪚",
+	"el;": "⪙",
+	ETH: "Ð",
+	eth: "ð",
+	"gE;": "≧",
+	"ge;": "≥",
+	"Gg;": "⋙",
+	"gg;": "≫",
+	"gl;": "≷",
+	"GT;": ">",
+	"Gt;": "≫",
+	"gt;": ">",
+	"ic;": "⁣",
+	"ii;": "ⅈ",
+	"Im;": "ℑ",
+	"in;": "∈",
+	"it;": "⁢",
+	"lE;": "≦",
+	"le;": "≤",
+	"lg;": "≶",
+	"Ll;": "⋘",
+	"ll;": "≪",
+	"LT;": "<",
+	"Lt;": "≪",
+	"lt;": "<",
+	"mp;": "∓",
+	"Mu;": "Μ",
+	"mu;": "μ",
+	"ne;": "≠",
+	"ni;": "∋",
+	not: "¬",
+	"Nu;": "Ν",
+	"nu;": "ν",
+	"Or;": "⩔",
+	"or;": "∨",
+	"oS;": "Ⓢ",
+	"Pi;": "Π",
+	"pi;": "π",
+	"pm;": "±",
+	"Pr;": "⪻",
+	"pr;": "≺",
+	"Re;": "ℜ",
+	REG: "®",
+	reg: "®",
+	"rx;": "℞",
+	"Sc;": "⪼",
+	"sc;": "≻",
+	shy: "­",
+	uml: "¨",
+	"wp;": "℘",
+	"wr;": "≀",
+	"Xi;": "Ξ",
+	"xi;": "ξ",
+	yen: "¥",
+	"acd;": "∿",
+	"acE;": "∾̳",
+	"Acy;": "А",
+	"acy;": "а",
+	"Afr;": "𝔄",
+	"afr;": "𝔞",
+	"AMP;": "&",
+	"amp;": "&",
+	"And;": "⩓",
+	"and;": "∧",
+	"ang;": "∠",
+	"apE;": "⩰",
+	"ape;": "≊",
+	"ast;": "*",
+	Auml: "Ä",
+	auml: "ä",
+	"Bcy;": "Б",
+	"bcy;": "б",
+	"Bfr;": "𝔅",
+	"bfr;": "𝔟",
+	"bne;": "=⃥",
+	"bot;": "⊥",
+	"Cap;": "⋒",
+	"cap;": "∩",
+	cent: "¢",
+	"Cfr;": "ℭ",
+	"cfr;": "𝔠",
+	"Chi;": "Χ",
+	"chi;": "χ",
+	"cir;": "○",
+	COPY: "©",
+	copy: "©",
+	"Cup;": "⋓",
+	"cup;": "∪",
+	"Dcy;": "Д",
+	"dcy;": "д",
+	"deg;": "°",
+	"Del;": "∇",
+	"Dfr;": "𝔇",
+	"dfr;": "𝔡",
+	"die;": "¨",
+	"div;": "÷",
+	"Dot;": "¨",
+	"dot;": "˙",
+	"Ecy;": "Э",
+	"ecy;": "э",
+	"Efr;": "𝔈",
+	"efr;": "𝔢",
+	"egs;": "⪖",
+	"ell;": "ℓ",
+	"els;": "⪕",
+	"ENG;": "Ŋ",
+	"eng;": "ŋ",
+	"Eta;": "Η",
+	"eta;": "η",
+	"ETH;": "Ð",
+	"eth;": "ð",
+	Euml: "Ë",
+	euml: "ë",
+	"Fcy;": "Ф",
+	"fcy;": "ф",
+	"Ffr;": "𝔉",
+	"ffr;": "𝔣",
+	"gap;": "⪆",
+	"Gcy;": "Г",
+	"gcy;": "г",
+	"gEl;": "⪌",
+	"gel;": "⋛",
+	"geq;": "≥",
+	"ges;": "⩾",
+	"Gfr;": "𝔊",
+	"gfr;": "𝔤",
+	"ggg;": "⋙",
+	"gla;": "⪥",
+	"glE;": "⪒",
+	"glj;": "⪤",
+	"gnE;": "≩",
+	"gne;": "⪈",
+	"Hat;": "^",
+	"Hfr;": "ℌ",
+	"hfr;": "𝔥",
+	"Icy;": "И",
+	"icy;": "и",
+	"iff;": "⇔",
+	"Ifr;": "ℑ",
+	"ifr;": "𝔦",
+	"Int;": "∬",
+	"int;": "∫",
+	Iuml: "Ï",
+	iuml: "ï",
+	"Jcy;": "Й",
+	"jcy;": "й",
+	"Jfr;": "𝔍",
+	"jfr;": "𝔧",
+	"Kcy;": "К",
+	"kcy;": "к",
+	"Kfr;": "𝔎",
+	"kfr;": "𝔨",
+	"lap;": "⪅",
+	"lat;": "⪫",
+	"Lcy;": "Л",
+	"lcy;": "л",
+	"lEg;": "⪋",
+	"leg;": "⋚",
+	"leq;": "≤",
+	"les;": "⩽",
+	"Lfr;": "𝔏",
+	"lfr;": "𝔩",
+	"lgE;": "⪑",
+	"lnE;": "≨",
+	"lne;": "⪇",
+	"loz;": "◊",
+	"lrm;": "‎",
+	"Lsh;": "↰",
+	"lsh;": "↰",
+	macr: "¯",
+	"Map;": "⤅",
+	"map;": "↦",
+	"Mcy;": "М",
+	"mcy;": "м",
+	"Mfr;": "𝔐",
+	"mfr;": "𝔪",
+	"mho;": "℧",
+	"mid;": "∣",
+	"nap;": "≉",
+	nbsp: " ",
+	"Ncy;": "Н",
+	"ncy;": "н",
+	"Nfr;": "𝔑",
+	"nfr;": "𝔫",
+	"ngE;": "≧̸",
+	"nge;": "≱",
+	"nGg;": "⋙̸",
+	"nGt;": "≫⃒",
+	"ngt;": "≯",
+	"nis;": "⋼",
+	"niv;": "∋",
+	"nlE;": "≦̸",
+	"nle;": "≰",
+	"nLl;": "⋘̸",
+	"nLt;": "≪⃒",
+	"nlt;": "≮",
+	"Not;": "⫬",
+	"not;": "¬",
+	"npr;": "⊀",
+	"nsc;": "⊁",
+	"num;": "#",
+	"Ocy;": "О",
+	"ocy;": "о",
+	"Ofr;": "𝔒",
+	"ofr;": "𝔬",
+	"ogt;": "⧁",
+	"ohm;": "Ω",
+	"olt;": "⧀",
+	"ord;": "⩝",
+	ordf: "ª",
+	ordm: "º",
+	"orv;": "⩛",
+	Ouml: "Ö",
+	ouml: "ö",
+	"par;": "∥",
+	para: "¶",
+	"Pcy;": "П",
+	"pcy;": "п",
+	"Pfr;": "𝔓",
+	"pfr;": "𝔭",
+	"Phi;": "Φ",
+	"phi;": "φ",
+	"piv;": "ϖ",
+	"prE;": "⪳",
+	"pre;": "⪯",
+	"Psi;": "Ψ",
+	"psi;": "ψ",
+	"Qfr;": "𝔔",
+	"qfr;": "𝔮",
+	QUOT: "\"",
+	quot: "\"",
+	"Rcy;": "Р",
+	"rcy;": "р",
+	"REG;": "®",
+	"reg;": "®",
+	"Rfr;": "ℜ",
+	"rfr;": "𝔯",
+	"Rho;": "Ρ",
+	"rho;": "ρ",
+	"rlm;": "‏",
+	"Rsh;": "↱",
+	"rsh;": "↱",
+	"scE;": "⪴",
+	"sce;": "⪰",
+	"Scy;": "С",
+	"scy;": "с",
+	sect: "§",
+	"Sfr;": "𝔖",
+	"sfr;": "𝔰",
+	"shy;": "­",
+	"sim;": "∼",
+	"smt;": "⪪",
+	"sol;": "/",
+	"squ;": "□",
+	"Sub;": "⋐",
+	"sub;": "⊂",
+	"Sum;": "∑",
+	"sum;": "∑",
+	"Sup;": "⋑",
+	"sup;": "⊃",
+	sup1: "¹",
+	sup2: "²",
+	sup3: "³",
+	"Tab;": "\t",
+	"Tau;": "Τ",
+	"tau;": "τ",
+	"Tcy;": "Т",
+	"tcy;": "т",
+	"Tfr;": "𝔗",
+	"tfr;": "𝔱",
+	"top;": "⊤",
+	"Ucy;": "У",
+	"ucy;": "у",
+	"Ufr;": "𝔘",
+	"ufr;": "𝔲",
+	"uml;": "¨",
+	Uuml: "Ü",
+	uuml: "ü",
+	"Vcy;": "В",
+	"vcy;": "в",
+	"Vee;": "⋁",
+	"vee;": "∨",
+	"Vfr;": "𝔙",
+	"vfr;": "𝔳",
+	"Wfr;": "𝔚",
+	"wfr;": "𝔴",
+	"Xfr;": "𝔛",
+	"xfr;": "𝔵",
+	"Ycy;": "Ы",
+	"ycy;": "ы",
+	"yen;": "¥",
+	"Yfr;": "𝔜",
+	"yfr;": "𝔶",
+	yuml: "ÿ",
+	"Zcy;": "З",
+	"zcy;": "з",
+	"Zfr;": "ℨ",
+	"zfr;": "𝔷",
+	"zwj;": "‍",
+	Acirc: "Â",
+	acirc: "â",
+	acute: "´",
+	AElig: "Æ",
+	aelig: "æ",
+	"andd;": "⩜",
+	"andv;": "⩚",
+	"ange;": "⦤",
+	"Aopf;": "𝔸",
+	"aopf;": "𝕒",
+	"apid;": "≋",
+	"apos;": "'",
+	Aring: "Å",
+	aring: "å",
+	"Ascr;": "𝒜",
+	"ascr;": "𝒶",
+	"Auml;": "Ä",
+	"auml;": "ä",
+	"Barv;": "⫧",
+	"bbrk;": "⎵",
+	"Beta;": "Β",
+	"beta;": "β",
+	"beth;": "ℶ",
+	"bNot;": "⫭",
+	"bnot;": "⌐",
+	"Bopf;": "𝔹",
+	"bopf;": "𝕓",
+	"boxH;": "═",
+	"boxh;": "─",
+	"boxV;": "║",
+	"boxv;": "│",
+	"Bscr;": "ℬ",
+	"bscr;": "𝒷",
+	"bsim;": "∽",
+	"bsol;": "\\",
+	"bull;": "•",
+	"bump;": "≎",
+	"caps;": "∩︀",
+	"Cdot;": "Ċ",
+	"cdot;": "ċ",
+	cedil: "¸",
+	"cent;": "¢",
+	"CHcy;": "Ч",
+	"chcy;": "ч",
+	"circ;": "ˆ",
+	"cirE;": "⧃",
+	"cire;": "≗",
+	"comp;": "∁",
+	"cong;": "≅",
+	"Copf;": "ℂ",
+	"copf;": "𝕔",
+	"COPY;": "©",
+	"copy;": "©",
+	"Cscr;": "𝒞",
+	"cscr;": "𝒸",
+	"csub;": "⫏",
+	"csup;": "⫐",
+	"cups;": "∪︀",
+	"Darr;": "↡",
+	"dArr;": "⇓",
+	"darr;": "↓",
+	"dash;": "‐",
+	"dHar;": "⥥",
+	"diam;": "⋄",
+	"DJcy;": "Ђ",
+	"djcy;": "ђ",
+	"Dopf;": "𝔻",
+	"dopf;": "𝕕",
+	"Dscr;": "𝒟",
+	"dscr;": "𝒹",
+	"DScy;": "Ѕ",
+	"dscy;": "ѕ",
+	"dsol;": "⧶",
+	"dtri;": "▿",
+	"DZcy;": "Џ",
+	"dzcy;": "џ",
+	"ecir;": "≖",
+	Ecirc: "Ê",
+	ecirc: "ê",
+	"Edot;": "Ė",
+	"eDot;": "≑",
+	"edot;": "ė",
+	"emsp;": " ",
+	"ensp;": " ",
+	"Eopf;": "𝔼",
+	"eopf;": "𝕖",
+	"epar;": "⋕",
+	"epsi;": "ε",
+	"Escr;": "ℰ",
+	"escr;": "ℯ",
+	"Esim;": "⩳",
+	"esim;": "≂",
+	"Euml;": "Ë",
+	"euml;": "ë",
+	"euro;": "€",
+	"excl;": "!",
+	"flat;": "♭",
+	"fnof;": "ƒ",
+	"Fopf;": "𝔽",
+	"fopf;": "𝕗",
+	"fork;": "⋔",
+	"Fscr;": "ℱ",
+	"fscr;": "𝒻",
+	"Gdot;": "Ġ",
+	"gdot;": "ġ",
+	"geqq;": "≧",
+	"gesl;": "⋛︀",
+	"GJcy;": "Ѓ",
+	"gjcy;": "ѓ",
+	"gnap;": "⪊",
+	"gneq;": "⪈",
+	"Gopf;": "𝔾",
+	"gopf;": "𝕘",
+	"Gscr;": "𝒢",
+	"gscr;": "ℊ",
+	"gsim;": "≳",
+	"gtcc;": "⪧",
+	"gvnE;": "≩︀",
+	"half;": "½",
+	"hArr;": "⇔",
+	"harr;": "↔",
+	"hbar;": "ℏ",
+	"Hopf;": "ℍ",
+	"hopf;": "𝕙",
+	"Hscr;": "ℋ",
+	"hscr;": "𝒽",
+	Icirc: "Î",
+	icirc: "î",
+	"Idot;": "İ",
+	"IEcy;": "Е",
+	"iecy;": "е",
+	iexcl: "¡",
+	"imof;": "⊷",
+	"IOcy;": "Ё",
+	"iocy;": "ё",
+	"Iopf;": "𝕀",
+	"iopf;": "𝕚",
+	"Iota;": "Ι",
+	"iota;": "ι",
+	"Iscr;": "ℐ",
+	"iscr;": "𝒾",
+	"isin;": "∈",
+	"Iuml;": "Ï",
+	"iuml;": "ï",
+	"Jopf;": "𝕁",
+	"jopf;": "𝕛",
+	"Jscr;": "𝒥",
+	"jscr;": "𝒿",
+	"KHcy;": "Х",
+	"khcy;": "х",
+	"KJcy;": "Ќ",
+	"kjcy;": "ќ",
+	"Kopf;": "𝕂",
+	"kopf;": "𝕜",
+	"Kscr;": "𝒦",
+	"kscr;": "𝓀",
+	"Lang;": "⟪",
+	"lang;": "⟨",
+	laquo: "«",
+	"Larr;": "↞",
+	"lArr;": "⇐",
+	"larr;": "←",
+	"late;": "⪭",
+	"lcub;": "{",
+	"ldca;": "⤶",
+	"ldsh;": "↲",
+	"leqq;": "≦",
+	"lesg;": "⋚︀",
+	"lHar;": "⥢",
+	"LJcy;": "Љ",
+	"ljcy;": "љ",
+	"lnap;": "⪉",
+	"lneq;": "⪇",
+	"Lopf;": "𝕃",
+	"lopf;": "𝕝",
+	"lozf;": "⧫",
+	"lpar;": "(",
+	"Lscr;": "ℒ",
+	"lscr;": "𝓁",
+	"lsim;": "≲",
+	"lsqb;": "[",
+	"ltcc;": "⪦",
+	"ltri;": "◃",
+	"lvnE;": "≨︀",
+	"macr;": "¯",
+	"male;": "♂",
+	"malt;": "✠",
+	micro: "µ",
+	"mlcp;": "⫛",
+	"mldr;": "…",
+	"Mopf;": "𝕄",
+	"mopf;": "𝕞",
+	"Mscr;": "ℳ",
+	"mscr;": "𝓂",
+	"nang;": "∠⃒",
+	"napE;": "⩰̸",
+	"nbsp;": " ",
+	"ncap;": "⩃",
+	"ncup;": "⩂",
+	"ngeq;": "≱",
+	"nges;": "⩾̸",
+	"ngtr;": "≯",
+	"nGtv;": "≫̸",
+	"nisd;": "⋺",
+	"NJcy;": "Њ",
+	"njcy;": "њ",
+	"nldr;": "‥",
+	"nleq;": "≰",
+	"nles;": "⩽̸",
+	"nLtv;": "≪̸",
+	"nmid;": "∤",
+	"Nopf;": "ℕ",
+	"nopf;": "𝕟",
+	"npar;": "∦",
+	"npre;": "⪯̸",
+	"nsce;": "⪰̸",
+	"Nscr;": "𝒩",
+	"nscr;": "𝓃",
+	"nsim;": "≁",
+	"nsub;": "⊄",
+	"nsup;": "⊅",
+	"ntgl;": "≹",
+	"ntlg;": "≸",
+	"nvap;": "≍⃒",
+	"nvge;": "≥⃒",
+	"nvgt;": ">⃒",
+	"nvle;": "≤⃒",
+	"nvlt;": "<⃒",
+	"oast;": "⊛",
+	"ocir;": "⊚",
+	Ocirc: "Ô",
+	ocirc: "ô",
+	"odiv;": "⨸",
+	"odot;": "⊙",
+	"ogon;": "˛",
+	"oint;": "∮",
+	"omid;": "⦶",
+	"Oopf;": "𝕆",
+	"oopf;": "𝕠",
+	"opar;": "⦷",
+	"ordf;": "ª",
+	"ordm;": "º",
+	"oror;": "⩖",
+	"Oscr;": "𝒪",
+	"oscr;": "ℴ",
+	"osol;": "⊘",
+	"Ouml;": "Ö",
+	"ouml;": "ö",
+	"para;": "¶",
+	"part;": "∂",
+	"perp;": "⊥",
+	"phiv;": "ϕ",
+	"plus;": "+",
+	"Popf;": "ℙ",
+	"popf;": "𝕡",
+	pound: "£",
+	"prap;": "⪷",
+	"prec;": "≺",
+	"prnE;": "⪵",
+	"prod;": "∏",
+	"prop;": "∝",
+	"Pscr;": "𝒫",
+	"pscr;": "𝓅",
+	"qint;": "⨌",
+	"Qopf;": "ℚ",
+	"qopf;": "𝕢",
+	"Qscr;": "𝒬",
+	"qscr;": "𝓆",
+	"QUOT;": "\"",
+	"quot;": "\"",
+	"race;": "∽̱",
+	"Rang;": "⟫",
+	"rang;": "⟩",
+	raquo: "»",
+	"Rarr;": "↠",
+	"rArr;": "⇒",
+	"rarr;": "→",
+	"rcub;": "}",
+	"rdca;": "⤷",
+	"rdsh;": "↳",
+	"real;": "ℜ",
+	"rect;": "▭",
+	"rHar;": "⥤",
+	"rhov;": "ϱ",
+	"ring;": "˚",
+	"Ropf;": "ℝ",
+	"ropf;": "𝕣",
+	"rpar;": ")",
+	"Rscr;": "ℛ",
+	"rscr;": "𝓇",
+	"rsqb;": "]",
+	"rtri;": "▹",
+	"scap;": "⪸",
+	"scnE;": "⪶",
+	"sdot;": "⋅",
+	"sect;": "§",
+	"semi;": ";",
+	"sext;": "✶",
+	"SHcy;": "Ш",
+	"shcy;": "ш",
+	"sime;": "≃",
+	"simg;": "⪞",
+	"siml;": "⪝",
+	"smid;": "∣",
+	"smte;": "⪬",
+	"solb;": "⧄",
+	"Sopf;": "𝕊",
+	"sopf;": "𝕤",
+	"spar;": "∥",
+	"Sqrt;": "√",
+	"squf;": "▪",
+	"Sscr;": "𝒮",
+	"sscr;": "𝓈",
+	"Star;": "⋆",
+	"star;": "☆",
+	"subE;": "⫅",
+	"sube;": "⊆",
+	"succ;": "≻",
+	"sung;": "♪",
+	"sup1;": "¹",
+	"sup2;": "²",
+	"sup3;": "³",
+	"supE;": "⫆",
+	"supe;": "⊇",
+	szlig: "ß",
+	"tbrk;": "⎴",
+	"tdot;": "⃛",
+	THORN: "Þ",
+	thorn: "þ",
+	times: "×",
+	"tint;": "∭",
+	"toea;": "⤨",
+	"Topf;": "𝕋",
+	"topf;": "𝕥",
+	"tosa;": "⤩",
+	"trie;": "≜",
+	"Tscr;": "𝒯",
+	"tscr;": "𝓉",
+	"TScy;": "Ц",
+	"tscy;": "ц",
+	"Uarr;": "↟",
+	"uArr;": "⇑",
+	"uarr;": "↑",
+	Ucirc: "Û",
+	ucirc: "û",
+	"uHar;": "⥣",
+	"Uopf;": "𝕌",
+	"uopf;": "𝕦",
+	"Upsi;": "ϒ",
+	"upsi;": "υ",
+	"Uscr;": "𝒰",
+	"uscr;": "𝓊",
+	"utri;": "▵",
+	"Uuml;": "Ü",
+	"uuml;": "ü",
+	"vArr;": "⇕",
+	"varr;": "↕",
+	"Vbar;": "⫫",
+	"vBar;": "⫨",
+	"Vert;": "‖",
+	"vert;": "|",
+	"Vopf;": "𝕍",
+	"vopf;": "𝕧",
+	"Vscr;": "𝒱",
+	"vscr;": "𝓋",
+	"Wopf;": "𝕎",
+	"wopf;": "𝕨",
+	"Wscr;": "𝒲",
+	"wscr;": "𝓌",
+	"xcap;": "⋂",
+	"xcup;": "⋃",
+	"xmap;": "⟼",
+	"xnis;": "⋻",
+	"Xopf;": "𝕏",
+	"xopf;": "𝕩",
+	"Xscr;": "𝒳",
+	"xscr;": "𝓍",
+	"xvee;": "⋁",
+	"YAcy;": "Я",
+	"yacy;": "я",
+	"YIcy;": "Ї",
+	"yicy;": "ї",
+	"Yopf;": "𝕐",
+	"yopf;": "𝕪",
+	"Yscr;": "𝒴",
+	"yscr;": "𝓎",
+	"YUcy;": "Ю",
+	"yucy;": "ю",
+	"Yuml;": "Ÿ",
+	"yuml;": "ÿ",
+	"Zdot;": "Ż",
+	"zdot;": "ż",
+	"Zeta;": "Ζ",
+	"zeta;": "ζ",
+	"ZHcy;": "Ж",
+	"zhcy;": "ж",
+	"Zopf;": "ℤ",
+	"zopf;": "𝕫",
+	"Zscr;": "𝒵",
+	"zscr;": "𝓏",
+	"zwnj;": "‌",
+	Aacute: "Á",
+	aacute: "á",
+	"Acirc;": "Â",
+	"acirc;": "â",
+	"acute;": "´",
+	"AElig;": "Æ",
+	"aelig;": "æ",
+	Agrave: "À",
+	agrave: "à",
+	"aleph;": "ℵ",
+	"Alpha;": "Α",
+	"alpha;": "α",
+	"Amacr;": "Ā",
+	"amacr;": "ā",
+	"amalg;": "⨿",
+	"angle;": "∠",
+	"angrt;": "∟",
+	"angst;": "Å",
+	"Aogon;": "Ą",
+	"aogon;": "ą",
+	"Aring;": "Å",
+	"aring;": "å",
+	"asymp;": "≈",
+	Atilde: "Ã",
+	atilde: "ã",
+	"awint;": "⨑",
+	"bcong;": "≌",
+	"bdquo;": "„",
+	"bepsi;": "϶",
+	"blank;": "␣",
+	"blk12;": "▒",
+	"blk14;": "░",
+	"blk34;": "▓",
+	"block;": "█",
+	"boxDL;": "╗",
+	"boxDl;": "╖",
+	"boxdL;": "╕",
+	"boxdl;": "┐",
+	"boxDR;": "╔",
+	"boxDr;": "╓",
+	"boxdR;": "╒",
+	"boxdr;": "┌",
+	"boxHD;": "╦",
+	"boxHd;": "╤",
+	"boxhD;": "╥",
+	"boxhd;": "┬",
+	"boxHU;": "╩",
+	"boxHu;": "╧",
+	"boxhU;": "╨",
+	"boxhu;": "┴",
+	"boxUL;": "╝",
+	"boxUl;": "╜",
+	"boxuL;": "╛",
+	"boxul;": "┘",
+	"boxUR;": "╚",
+	"boxUr;": "╙",
+	"boxuR;": "╘",
+	"boxur;": "└",
+	"boxVH;": "╬",
+	"boxVh;": "╫",
+	"boxvH;": "╪",
+	"boxvh;": "┼",
+	"boxVL;": "╣",
+	"boxVl;": "╢",
+	"boxvL;": "╡",
+	"boxvl;": "┤",
+	"boxVR;": "╠",
+	"boxVr;": "╟",
+	"boxvR;": "╞",
+	"boxvr;": "├",
+	"Breve;": "˘",
+	"breve;": "˘",
+	brvbar: "¦",
+	"bsemi;": "⁏",
+	"bsime;": "⋍",
+	"bsolb;": "⧅",
+	"bumpE;": "⪮",
+	"bumpe;": "≏",
+	"caret;": "⁁",
+	"caron;": "ˇ",
+	"ccaps;": "⩍",
+	Ccedil: "Ç",
+	ccedil: "ç",
+	"Ccirc;": "Ĉ",
+	"ccirc;": "ĉ",
+	"ccups;": "⩌",
+	"cedil;": "¸",
+	"check;": "✓",
+	"clubs;": "♣",
+	"Colon;": "∷",
+	"colon;": ":",
+	"comma;": ",",
+	"crarr;": "↵",
+	"Cross;": "⨯",
+	"cross;": "✗",
+	"csube;": "⫑",
+	"csupe;": "⫒",
+	"ctdot;": "⋯",
+	"cuepr;": "⋞",
+	"cuesc;": "⋟",
+	"cupor;": "⩅",
+	curren: "¤",
+	"cuvee;": "⋎",
+	"cuwed;": "⋏",
+	"cwint;": "∱",
+	"Dashv;": "⫤",
+	"dashv;": "⊣",
+	"dblac;": "˝",
+	"ddarr;": "⇊",
+	"Delta;": "Δ",
+	"delta;": "δ",
+	"dharl;": "⇃",
+	"dharr;": "⇂",
+	"diams;": "♦",
+	"disin;": "⋲",
+	divide: "÷",
+	"doteq;": "≐",
+	"dtdot;": "⋱",
+	"dtrif;": "▾",
+	"duarr;": "⇵",
+	"duhar;": "⥯",
+	Eacute: "É",
+	eacute: "é",
+	"Ecirc;": "Ê",
+	"ecirc;": "ê",
+	"eDDot;": "⩷",
+	"efDot;": "≒",
+	Egrave: "È",
+	egrave: "è",
+	"Emacr;": "Ē",
+	"emacr;": "ē",
+	"empty;": "∅",
+	"Eogon;": "Ę",
+	"eogon;": "ę",
+	"eplus;": "⩱",
+	"epsiv;": "ϵ",
+	"eqsim;": "≂",
+	"Equal;": "⩵",
+	"equiv;": "≡",
+	"erarr;": "⥱",
+	"erDot;": "≓",
+	"esdot;": "≐",
+	"exist;": "∃",
+	"fflig;": "ff",
+	"filig;": "fi",
+	"fjlig;": "fj",
+	"fllig;": "fl",
+	"fltns;": "▱",
+	"forkv;": "⫙",
+	frac12: "½",
+	frac14: "¼",
+	frac34: "¾",
+	"frasl;": "⁄",
+	"frown;": "⌢",
+	"Gamma;": "Γ",
+	"gamma;": "γ",
+	"Gcirc;": "Ĝ",
+	"gcirc;": "ĝ",
+	"gescc;": "⪩",
+	"gimel;": "ℷ",
+	"gneqq;": "≩",
+	"gnsim;": "⋧",
+	"grave;": "`",
+	"gsime;": "⪎",
+	"gsiml;": "⪐",
+	"gtcir;": "⩺",
+	"gtdot;": "⋗",
+	"Hacek;": "ˇ",
+	"harrw;": "↭",
+	"Hcirc;": "Ĥ",
+	"hcirc;": "ĥ",
+	"hoarr;": "⇿",
+	Iacute: "Í",
+	iacute: "í",
+	"Icirc;": "Î",
+	"icirc;": "î",
+	"iexcl;": "¡",
+	Igrave: "Ì",
+	igrave: "ì",
+	"iiint;": "∭",
+	"iiota;": "℩",
+	"IJlig;": "IJ",
+	"ijlig;": "ij",
+	"Imacr;": "Ī",
+	"imacr;": "ī",
+	"image;": "ℑ",
+	"imath;": "ı",
+	"imped;": "Ƶ",
+	"infin;": "∞",
+	"Iogon;": "Į",
+	"iogon;": "į",
+	"iprod;": "⨼",
+	iquest: "¿",
+	"isinE;": "⋹",
+	"isins;": "⋴",
+	"isinv;": "∈",
+	"Iukcy;": "І",
+	"iukcy;": "і",
+	"Jcirc;": "Ĵ",
+	"jcirc;": "ĵ",
+	"jmath;": "ȷ",
+	"Jukcy;": "Є",
+	"jukcy;": "є",
+	"Kappa;": "Κ",
+	"kappa;": "κ",
+	"lAarr;": "⇚",
+	"langd;": "⦑",
+	"laquo;": "«",
+	"larrb;": "⇤",
+	"lates;": "⪭︀",
+	"lBarr;": "⤎",
+	"lbarr;": "⤌",
+	"lbbrk;": "❲",
+	"lbrke;": "⦋",
+	"lceil;": "⌈",
+	"ldquo;": "“",
+	"lescc;": "⪨",
+	"lhard;": "↽",
+	"lharu;": "↼",
+	"lhblk;": "▄",
+	"llarr;": "⇇",
+	"lltri;": "◺",
+	"lneqq;": "≨",
+	"lnsim;": "⋦",
+	"loang;": "⟬",
+	"loarr;": "⇽",
+	"lobrk;": "⟦",
+	"lopar;": "⦅",
+	"lrarr;": "⇆",
+	"lrhar;": "⇋",
+	"lrtri;": "⊿",
+	"lsime;": "⪍",
+	"lsimg;": "⪏",
+	"lsquo;": "‘",
+	"ltcir;": "⩹",
+	"ltdot;": "⋖",
+	"ltrie;": "⊴",
+	"ltrif;": "◂",
+	"mdash;": "—",
+	"mDDot;": "∺",
+	"micro;": "µ",
+	middot: "·",
+	"minus;": "−",
+	"mumap;": "⊸",
+	"nabla;": "∇",
+	"napid;": "≋̸",
+	"napos;": "ʼn",
+	"natur;": "♮",
+	"nbump;": "≎̸",
+	"ncong;": "≇",
+	"ndash;": "–",
+	"neArr;": "⇗",
+	"nearr;": "↗",
+	"nedot;": "≐̸",
+	"nesim;": "≂̸",
+	"ngeqq;": "≧̸",
+	"ngsim;": "≵",
+	"nhArr;": "⇎",
+	"nharr;": "↮",
+	"nhpar;": "⫲",
+	"nlArr;": "⇍",
+	"nlarr;": "↚",
+	"nleqq;": "≦̸",
+	"nless;": "≮",
+	"nlsim;": "≴",
+	"nltri;": "⋪",
+	"notin;": "∉",
+	"notni;": "∌",
+	"npart;": "∂̸",
+	"nprec;": "⊀",
+	"nrArr;": "⇏",
+	"nrarr;": "↛",
+	"nrtri;": "⋫",
+	"nsime;": "≄",
+	"nsmid;": "∤",
+	"nspar;": "∦",
+	"nsubE;": "⫅̸",
+	"nsube;": "⊈",
+	"nsucc;": "⊁",
+	"nsupE;": "⫆̸",
+	"nsupe;": "⊉",
+	Ntilde: "Ñ",
+	ntilde: "ñ",
+	"numsp;": " ",
+	"nvsim;": "∼⃒",
+	"nwArr;": "⇖",
+	"nwarr;": "↖",
+	Oacute: "Ó",
+	oacute: "ó",
+	"Ocirc;": "Ô",
+	"ocirc;": "ô",
+	"odash;": "⊝",
+	"OElig;": "Œ",
+	"oelig;": "œ",
+	"ofcir;": "⦿",
+	Ograve: "Ò",
+	ograve: "ò",
+	"ohbar;": "⦵",
+	"olarr;": "↺",
+	"olcir;": "⦾",
+	"oline;": "‾",
+	"Omacr;": "Ō",
+	"omacr;": "ō",
+	"Omega;": "Ω",
+	"omega;": "ω",
+	"operp;": "⦹",
+	"oplus;": "⊕",
+	"orarr;": "↻",
+	"order;": "ℴ",
+	Oslash: "Ø",
+	oslash: "ø",
+	Otilde: "Õ",
+	otilde: "õ",
+	"ovbar;": "⌽",
+	"parsl;": "⫽",
+	"phone;": "☎",
+	"plusb;": "⊞",
+	"pluse;": "⩲",
+	plusmn: "±",
+	"pound;": "£",
+	"prcue;": "≼",
+	"Prime;": "″",
+	"prime;": "′",
+	"prnap;": "⪹",
+	"prsim;": "≾",
+	"quest;": "?",
+	"rAarr;": "⇛",
+	"radic;": "√",
+	"rangd;": "⦒",
+	"range;": "⦥",
+	"raquo;": "»",
+	"rarrb;": "⇥",
+	"rarrc;": "⤳",
+	"rarrw;": "↝",
+	"ratio;": "∶",
+	"RBarr;": "⤐",
+	"rBarr;": "⤏",
+	"rbarr;": "⤍",
+	"rbbrk;": "❳",
+	"rbrke;": "⦌",
+	"rceil;": "⌉",
+	"rdquo;": "”",
+	"reals;": "ℝ",
+	"rhard;": "⇁",
+	"rharu;": "⇀",
+	"rlarr;": "⇄",
+	"rlhar;": "⇌",
+	"rnmid;": "⫮",
+	"roang;": "⟭",
+	"roarr;": "⇾",
+	"robrk;": "⟧",
+	"ropar;": "⦆",
+	"rrarr;": "⇉",
+	"rsquo;": "’",
+	"rtrie;": "⊵",
+	"rtrif;": "▸",
+	"sbquo;": "‚",
+	"sccue;": "≽",
+	"Scirc;": "Ŝ",
+	"scirc;": "ŝ",
+	"scnap;": "⪺",
+	"scsim;": "≿",
+	"sdotb;": "⊡",
+	"sdote;": "⩦",
+	"seArr;": "⇘",
+	"searr;": "↘",
+	"setmn;": "∖",
+	"sharp;": "♯",
+	"Sigma;": "Σ",
+	"sigma;": "σ",
+	"simeq;": "≃",
+	"simgE;": "⪠",
+	"simlE;": "⪟",
+	"simne;": "≆",
+	"slarr;": "←",
+	"smile;": "⌣",
+	"smtes;": "⪬︀",
+	"sqcap;": "⊓",
+	"sqcup;": "⊔",
+	"sqsub;": "⊏",
+	"sqsup;": "⊐",
+	"srarr;": "→",
+	"starf;": "★",
+	"strns;": "¯",
+	"subnE;": "⫋",
+	"subne;": "⊊",
+	"supnE;": "⫌",
+	"supne;": "⊋",
+	"swArr;": "⇙",
+	"swarr;": "↙",
+	"szlig;": "ß",
+	"Theta;": "Θ",
+	"theta;": "θ",
+	"thkap;": "≈",
+	"THORN;": "Þ",
+	"thorn;": "þ",
+	"Tilde;": "∼",
+	"tilde;": "˜",
+	"times;": "×",
+	"TRADE;": "™",
+	"trade;": "™",
+	"trisb;": "⧍",
+	"TSHcy;": "Ћ",
+	"tshcy;": "ћ",
+	"twixt;": "≬",
+	Uacute: "Ú",
+	uacute: "ú",
+	"Ubrcy;": "Ў",
+	"ubrcy;": "ў",
+	"Ucirc;": "Û",
+	"ucirc;": "û",
+	"udarr;": "⇅",
+	"udhar;": "⥮",
+	Ugrave: "Ù",
+	ugrave: "ù",
+	"uharl;": "↿",
+	"uharr;": "↾",
+	"uhblk;": "▀",
+	"ultri;": "◸",
+	"Umacr;": "Ū",
+	"umacr;": "ū",
+	"Union;": "⋃",
+	"Uogon;": "Ų",
+	"uogon;": "ų",
+	"uplus;": "⊎",
+	"upsih;": "ϒ",
+	"UpTee;": "⊥",
+	"Uring;": "Ů",
+	"uring;": "ů",
+	"urtri;": "◹",
+	"utdot;": "⋰",
+	"utrif;": "▴",
+	"uuarr;": "⇈",
+	"varpi;": "ϖ",
+	"vBarv;": "⫩",
+	"VDash;": "⊫",
+	"Vdash;": "⊩",
+	"vDash;": "⊨",
+	"vdash;": "⊢",
+	"veeeq;": "≚",
+	"vltri;": "⊲",
+	"vnsub;": "⊂⃒",
+	"vnsup;": "⊃⃒",
+	"vprop;": "∝",
+	"vrtri;": "⊳",
+	"Wcirc;": "Ŵ",
+	"wcirc;": "ŵ",
+	"Wedge;": "⋀",
+	"wedge;": "∧",
+	"xcirc;": "◯",
+	"xdtri;": "▽",
+	"xhArr;": "⟺",
+	"xharr;": "⟷",
+	"xlArr;": "⟸",
+	"xlarr;": "⟵",
+	"xodot;": "⨀",
+	"xrArr;": "⟹",
+	"xrarr;": "⟶",
+	"xutri;": "△",
+	Yacute: "Ý",
+	yacute: "ý",
+	"Ycirc;": "Ŷ",
+	"ycirc;": "ŷ",
+	"Aacute;": "Á",
+	"aacute;": "á",
+	"Abreve;": "Ă",
+	"abreve;": "ă",
+	"Agrave;": "À",
+	"agrave;": "à",
+	"andand;": "⩕",
+	"angmsd;": "∡",
+	"angsph;": "∢",
+	"apacir;": "⩯",
+	"approx;": "≈",
+	"Assign;": "≔",
+	"Atilde;": "Ã",
+	"atilde;": "ã",
+	"barvee;": "⊽",
+	"Barwed;": "⌆",
+	"barwed;": "⌅",
+	"becaus;": "∵",
+	"bernou;": "ℬ",
+	"bigcap;": "⋂",
+	"bigcup;": "⋃",
+	"bigvee;": "⋁",
+	"bkarow;": "⤍",
+	"bottom;": "⊥",
+	"bowtie;": "⋈",
+	"boxbox;": "⧉",
+	"bprime;": "‵",
+	"brvbar;": "¦",
+	"bullet;": "•",
+	"Bumpeq;": "≎",
+	"bumpeq;": "≏",
+	"Cacute;": "Ć",
+	"cacute;": "ć",
+	"capand;": "⩄",
+	"capcap;": "⩋",
+	"capcup;": "⩇",
+	"capdot;": "⩀",
+	"Ccaron;": "Č",
+	"ccaron;": "č",
+	"Ccedil;": "Ç",
+	"ccedil;": "ç",
+	"circeq;": "≗",
+	"cirmid;": "⫯",
+	"Colone;": "⩴",
+	"colone;": "≔",
+	"commat;": "@",
+	"compfn;": "∘",
+	"Conint;": "∯",
+	"conint;": "∮",
+	"coprod;": "∐",
+	"copysr;": "℗",
+	"cularr;": "↶",
+	"CupCap;": "≍",
+	"cupcap;": "⩆",
+	"cupcup;": "⩊",
+	"cupdot;": "⊍",
+	"curarr;": "↷",
+	"curren;": "¤",
+	"cylcty;": "⌭",
+	"Dagger;": "‡",
+	"dagger;": "†",
+	"daleth;": "ℸ",
+	"Dcaron;": "Ď",
+	"dcaron;": "ď",
+	"dfisht;": "⥿",
+	"divide;": "÷",
+	"divonx;": "⋇",
+	"dlcorn;": "⌞",
+	"dlcrop;": "⌍",
+	"dollar;": "$",
+	"DotDot;": "⃜",
+	"drcorn;": "⌟",
+	"drcrop;": "⌌",
+	"Dstrok;": "Đ",
+	"dstrok;": "đ",
+	"Eacute;": "É",
+	"eacute;": "é",
+	"easter;": "⩮",
+	"Ecaron;": "Ě",
+	"ecaron;": "ě",
+	"ecolon;": "≕",
+	"Egrave;": "È",
+	"egrave;": "è",
+	"egsdot;": "⪘",
+	"elsdot;": "⪗",
+	"emptyv;": "∅",
+	"emsp13;": " ",
+	"emsp14;": " ",
+	"eparsl;": "⧣",
+	"eqcirc;": "≖",
+	"equals;": "=",
+	"equest;": "≟",
+	"Exists;": "∃",
+	"female;": "♀",
+	"ffilig;": "ffi",
+	"ffllig;": "ffl",
+	"ForAll;": "∀",
+	"forall;": "∀",
+	"frac12;": "½",
+	"frac13;": "⅓",
+	"frac14;": "¼",
+	"frac15;": "⅕",
+	"frac16;": "⅙",
+	"frac18;": "⅛",
+	"frac23;": "⅔",
+	"frac25;": "⅖",
+	"frac34;": "¾",
+	"frac35;": "⅗",
+	"frac38;": "⅜",
+	"frac45;": "⅘",
+	"frac56;": "⅚",
+	"frac58;": "⅝",
+	"frac78;": "⅞",
+	"gacute;": "ǵ",
+	"Gammad;": "Ϝ",
+	"gammad;": "ϝ",
+	"Gbreve;": "Ğ",
+	"gbreve;": "ğ",
+	"Gcedil;": "Ģ",
+	"gesdot;": "⪀",
+	"gesles;": "⪔",
+	"gtlPar;": "⦕",
+	"gtrarr;": "⥸",
+	"gtrdot;": "⋗",
+	"gtrsim;": "≳",
+	"hairsp;": " ",
+	"hamilt;": "ℋ",
+	"HARDcy;": "Ъ",
+	"hardcy;": "ъ",
+	"hearts;": "♥",
+	"hellip;": "…",
+	"hercon;": "⊹",
+	"homtht;": "∻",
+	"horbar;": "―",
+	"hslash;": "ℏ",
+	"Hstrok;": "Ħ",
+	"hstrok;": "ħ",
+	"hybull;": "⁃",
+	"hyphen;": "‐",
+	"Iacute;": "Í",
+	"iacute;": "í",
+	"Igrave;": "Ì",
+	"igrave;": "ì",
+	"iiiint;": "⨌",
+	"iinfin;": "⧜",
+	"incare;": "℅",
+	"inodot;": "ı",
+	"intcal;": "⊺",
+	"iquest;": "¿",
+	"isinsv;": "⋳",
+	"Itilde;": "Ĩ",
+	"itilde;": "ĩ",
+	"Jsercy;": "Ј",
+	"jsercy;": "ј",
+	"kappav;": "ϰ",
+	"Kcedil;": "Ķ",
+	"kcedil;": "ķ",
+	"kgreen;": "ĸ",
+	"Lacute;": "Ĺ",
+	"lacute;": "ĺ",
+	"lagran;": "ℒ",
+	"Lambda;": "Λ",
+	"lambda;": "λ",
+	"langle;": "⟨",
+	"larrfs;": "⤝",
+	"larrhk;": "↩",
+	"larrlp;": "↫",
+	"larrpl;": "⤹",
+	"larrtl;": "↢",
+	"lAtail;": "⤛",
+	"latail;": "⤙",
+	"lbrace;": "{",
+	"lbrack;": "[",
+	"Lcaron;": "Ľ",
+	"lcaron;": "ľ",
+	"Lcedil;": "Ļ",
+	"lcedil;": "ļ",
+	"ldquor;": "„",
+	"lesdot;": "⩿",
+	"lesges;": "⪓",
+	"lfisht;": "⥼",
+	"lfloor;": "⌊",
+	"lharul;": "⥪",
+	"llhard;": "⥫",
+	"Lmidot;": "Ŀ",
+	"lmidot;": "ŀ",
+	"lmoust;": "⎰",
+	"loplus;": "⨭",
+	"lowast;": "∗",
+	"lowbar;": "_",
+	"lparlt;": "⦓",
+	"lrhard;": "⥭",
+	"lsaquo;": "‹",
+	"lsquor;": "‚",
+	"Lstrok;": "Ł",
+	"lstrok;": "ł",
+	"lthree;": "⋋",
+	"ltimes;": "⋉",
+	"ltlarr;": "⥶",
+	"ltrPar;": "⦖",
+	"mapsto;": "↦",
+	"marker;": "▮",
+	"mcomma;": "⨩",
+	"midast;": "*",
+	"midcir;": "⫰",
+	"middot;": "·",
+	"minusb;": "⊟",
+	"minusd;": "∸",
+	"mnplus;": "∓",
+	"models;": "⊧",
+	"mstpos;": "∾",
+	"Nacute;": "Ń",
+	"nacute;": "ń",
+	"nbumpe;": "≏̸",
+	"Ncaron;": "Ň",
+	"ncaron;": "ň",
+	"Ncedil;": "Ņ",
+	"ncedil;": "ņ",
+	"nearhk;": "⤤",
+	"nequiv;": "≢",
+	"nesear;": "⤨",
+	"nexist;": "∄",
+	"nltrie;": "⋬",
+	"notinE;": "⋹̸",
+	"nparsl;": "⫽⃥",
+	"nprcue;": "⋠",
+	"nrarrc;": "⤳̸",
+	"nrarrw;": "↝̸",
+	"nrtrie;": "⋭",
+	"nsccue;": "⋡",
+	"nsimeq;": "≄",
+	"Ntilde;": "Ñ",
+	"ntilde;": "ñ",
+	"numero;": "№",
+	"nVDash;": "⊯",
+	"nVdash;": "⊮",
+	"nvDash;": "⊭",
+	"nvdash;": "⊬",
+	"nvHarr;": "⤄",
+	"nvlArr;": "⤂",
+	"nvrArr;": "⤃",
+	"nwarhk;": "⤣",
+	"nwnear;": "⤧",
+	"Oacute;": "Ó",
+	"oacute;": "ó",
+	"Odblac;": "Ő",
+	"odblac;": "ő",
+	"odsold;": "⦼",
+	"Ograve;": "Ò",
+	"ograve;": "ò",
+	"ominus;": "⊖",
+	"origof;": "⊶",
+	"Oslash;": "Ø",
+	"oslash;": "ø",
+	"Otilde;": "Õ",
+	"otilde;": "õ",
+	"Otimes;": "⨷",
+	"otimes;": "⊗",
+	"parsim;": "⫳",
+	"percnt;": "%",
+	"period;": ".",
+	"permil;": "‰",
+	"phmmat;": "ℳ",
+	"planck;": "ℏ",
+	"plankv;": "ℏ",
+	"plusdo;": "∔",
+	"plusdu;": "⨥",
+	"plusmn;": "±",
+	"preceq;": "⪯",
+	"primes;": "ℙ",
+	"prnsim;": "⋨",
+	"propto;": "∝",
+	"prurel;": "⊰",
+	"puncsp;": " ",
+	"qprime;": "⁗",
+	"Racute;": "Ŕ",
+	"racute;": "ŕ",
+	"rangle;": "⟩",
+	"rarrap;": "⥵",
+	"rarrfs;": "⤞",
+	"rarrhk;": "↪",
+	"rarrlp;": "↬",
+	"rarrpl;": "⥅",
+	"Rarrtl;": "⤖",
+	"rarrtl;": "↣",
+	"rAtail;": "⤜",
+	"ratail;": "⤚",
+	"rbrace;": "}",
+	"rbrack;": "]",
+	"Rcaron;": "Ř",
+	"rcaron;": "ř",
+	"Rcedil;": "Ŗ",
+	"rcedil;": "ŗ",
+	"rdquor;": "”",
+	"rfisht;": "⥽",
+	"rfloor;": "⌋",
+	"rharul;": "⥬",
+	"rmoust;": "⎱",
+	"roplus;": "⨮",
+	"rpargt;": "⦔",
+	"rsaquo;": "›",
+	"rsquor;": "’",
+	"rthree;": "⋌",
+	"rtimes;": "⋊",
+	"Sacute;": "Ś",
+	"sacute;": "ś",
+	"Scaron;": "Š",
+	"scaron;": "š",
+	"Scedil;": "Ş",
+	"scedil;": "ş",
+	"scnsim;": "⋩",
+	"searhk;": "⤥",
+	"seswar;": "⤩",
+	"sfrown;": "⌢",
+	"SHCHcy;": "Щ",
+	"shchcy;": "щ",
+	"sigmaf;": "ς",
+	"sigmav;": "ς",
+	"simdot;": "⩪",
+	"smashp;": "⨳",
+	"SOFTcy;": "Ь",
+	"softcy;": "ь",
+	"solbar;": "⌿",
+	"spades;": "♠",
+	"sqcaps;": "⊓︀",
+	"sqcups;": "⊔︀",
+	"sqsube;": "⊑",
+	"sqsupe;": "⊒",
+	"Square;": "□",
+	"square;": "□",
+	"squarf;": "▪",
+	"ssetmn;": "∖",
+	"ssmile;": "⌣",
+	"sstarf;": "⋆",
+	"subdot;": "⪽",
+	"Subset;": "⋐",
+	"subset;": "⊂",
+	"subsim;": "⫇",
+	"subsub;": "⫕",
+	"subsup;": "⫓",
+	"succeq;": "⪰",
+	"supdot;": "⪾",
+	"Supset;": "⋑",
+	"supset;": "⊃",
+	"supsim;": "⫈",
+	"supsub;": "⫔",
+	"supsup;": "⫖",
+	"swarhk;": "⤦",
+	"swnwar;": "⤪",
+	"target;": "⌖",
+	"Tcaron;": "Ť",
+	"tcaron;": "ť",
+	"Tcedil;": "Ţ",
+	"tcedil;": "ţ",
+	"telrec;": "⌕",
+	"there4;": "∴",
+	"thetav;": "ϑ",
+	"thinsp;": " ",
+	"thksim;": "∼",
+	"timesb;": "⊠",
+	"timesd;": "⨰",
+	"topbot;": "⌶",
+	"topcir;": "⫱",
+	"tprime;": "‴",
+	"tridot;": "◬",
+	"Tstrok;": "Ŧ",
+	"tstrok;": "ŧ",
+	"Uacute;": "Ú",
+	"uacute;": "ú",
+	"Ubreve;": "Ŭ",
+	"ubreve;": "ŭ",
+	"Udblac;": "Ű",
+	"udblac;": "ű",
+	"ufisht;": "⥾",
+	"Ugrave;": "Ù",
+	"ugrave;": "ù",
+	"ulcorn;": "⌜",
+	"ulcrop;": "⌏",
+	"urcorn;": "⌝",
+	"urcrop;": "⌎",
+	"Utilde;": "Ũ",
+	"utilde;": "ũ",
+	"vangrt;": "⦜",
+	"varphi;": "ϕ",
+	"varrho;": "ϱ",
+	"Vdashl;": "⫦",
+	"veebar;": "⊻",
+	"vellip;": "⋮",
+	"Verbar;": "‖",
+	"verbar;": "|",
+	"vsubnE;": "⫋︀",
+	"vsubne;": "⊊︀",
+	"vsupnE;": "⫌︀",
+	"vsupne;": "⊋︀",
+	"Vvdash;": "⊪",
+	"wedbar;": "⩟",
+	"wedgeq;": "≙",
+	"weierp;": "℘",
+	"wreath;": "≀",
+	"xoplus;": "⨁",
+	"xotime;": "⨂",
+	"xsqcup;": "⨆",
+	"xuplus;": "⨄",
+	"xwedge;": "⋀",
+	"Yacute;": "Ý",
+	"yacute;": "ý",
+	"Zacute;": "Ź",
+	"zacute;": "ź",
+	"Zcaron;": "Ž",
+	"zcaron;": "ž",
+	"zeetrf;": "ℨ",
+	"alefsym;": "ℵ",
+	"angrtvb;": "⊾",
+	"angzarr;": "⍼",
+	"asympeq;": "≍",
+	"backsim;": "∽",
+	"Because;": "∵",
+	"because;": "∵",
+	"bemptyv;": "⦰",
+	"between;": "≬",
+	"bigcirc;": "◯",
+	"bigodot;": "⨀",
+	"bigstar;": "★",
+	"bnequiv;": "≡⃥",
+	"boxplus;": "⊞",
+	"Cayleys;": "ℭ",
+	"Cconint;": "∰",
+	"ccupssm;": "⩐",
+	"Cedilla;": "¸",
+	"cemptyv;": "⦲",
+	"cirscir;": "⧂",
+	"coloneq;": "≔",
+	"congdot;": "⩭",
+	"cudarrl;": "⤸",
+	"cudarrr;": "⤵",
+	"cularrp;": "⤽",
+	"curarrm;": "⤼",
+	"dbkarow;": "⤏",
+	"ddagger;": "‡",
+	"ddotseq;": "⩷",
+	"demptyv;": "⦱",
+	"Diamond;": "⋄",
+	"diamond;": "⋄",
+	"digamma;": "ϝ",
+	"dotplus;": "∔",
+	"DownTee;": "⊤",
+	"dwangle;": "⦦",
+	"Element;": "∈",
+	"Epsilon;": "Ε",
+	"epsilon;": "ε",
+	"eqcolon;": "≕",
+	"equivDD;": "⩸",
+	"gesdoto;": "⪂",
+	"gtquest;": "⩼",
+	"gtrless;": "≷",
+	"harrcir;": "⥈",
+	"Implies;": "⇒",
+	"intprod;": "⨼",
+	"isindot;": "⋵",
+	"larrbfs;": "⤟",
+	"larrsim;": "⥳",
+	"lbrksld;": "⦏",
+	"lbrkslu;": "⦍",
+	"ldrdhar;": "⥧",
+	"LeftTee;": "⊣",
+	"lesdoto;": "⪁",
+	"lessdot;": "⋖",
+	"lessgtr;": "≶",
+	"lesssim;": "≲",
+	"lotimes;": "⨴",
+	"lozenge;": "◊",
+	"ltquest;": "⩻",
+	"luruhar;": "⥦",
+	"maltese;": "✠",
+	"minusdu;": "⨪",
+	"napprox;": "≉",
+	"natural;": "♮",
+	"nearrow;": "↗",
+	"NewLine;": "\n",
+	"nexists;": "∄",
+	"NoBreak;": "⁠",
+	"notinva;": "∉",
+	"notinvb;": "⋷",
+	"notinvc;": "⋶",
+	"NotLess;": "≮",
+	"notniva;": "∌",
+	"notnivb;": "⋾",
+	"notnivc;": "⋽",
+	"npolint;": "⨔",
+	"npreceq;": "⪯̸",
+	"nsqsube;": "⋢",
+	"nsqsupe;": "⋣",
+	"nsubset;": "⊂⃒",
+	"nsucceq;": "⪰̸",
+	"nsupset;": "⊃⃒",
+	"nvinfin;": "⧞",
+	"nvltrie;": "⊴⃒",
+	"nvrtrie;": "⊵⃒",
+	"nwarrow;": "↖",
+	"olcross;": "⦻",
+	"Omicron;": "Ο",
+	"omicron;": "ο",
+	"orderof;": "ℴ",
+	"orslope;": "⩗",
+	"OverBar;": "‾",
+	"pertenk;": "‱",
+	"planckh;": "ℎ",
+	"pluscir;": "⨢",
+	"plussim;": "⨦",
+	"plustwo;": "⨧",
+	"precsim;": "≾",
+	"Product;": "∏",
+	"quatint;": "⨖",
+	"questeq;": "≟",
+	"rarrbfs;": "⤠",
+	"rarrsim;": "⥴",
+	"rbrksld;": "⦎",
+	"rbrkslu;": "⦐",
+	"rdldhar;": "⥩",
+	"realine;": "ℛ",
+	"rotimes;": "⨵",
+	"ruluhar;": "⥨",
+	"searrow;": "↘",
+	"simplus;": "⨤",
+	"simrarr;": "⥲",
+	"subedot;": "⫃",
+	"submult;": "⫁",
+	"subplus;": "⪿",
+	"subrarr;": "⥹",
+	"succsim;": "≿",
+	"supdsub;": "⫘",
+	"supedot;": "⫄",
+	"suphsol;": "⟉",
+	"suphsub;": "⫗",
+	"suplarr;": "⥻",
+	"supmult;": "⫂",
+	"supplus;": "⫀",
+	"swarrow;": "↙",
+	"topfork;": "⫚",
+	"triplus;": "⨹",
+	"tritime;": "⨻",
+	"UpArrow;": "↑",
+	"Uparrow;": "⇑",
+	"uparrow;": "↑",
+	"Upsilon;": "Υ",
+	"upsilon;": "υ",
+	"uwangle;": "⦧",
+	"vzigzag;": "⦚",
+	"zigrarr;": "⇝",
+	"andslope;": "⩘",
+	"angmsdaa;": "⦨",
+	"angmsdab;": "⦩",
+	"angmsdac;": "⦪",
+	"angmsdad;": "⦫",
+	"angmsdae;": "⦬",
+	"angmsdaf;": "⦭",
+	"angmsdag;": "⦮",
+	"angmsdah;": "⦯",
+	"angrtvbd;": "⦝",
+	"approxeq;": "≊",
+	"awconint;": "∳",
+	"backcong;": "≌",
+	"barwedge;": "⌅",
+	"bbrktbrk;": "⎶",
+	"bigoplus;": "⨁",
+	"bigsqcup;": "⨆",
+	"biguplus;": "⨄",
+	"bigwedge;": "⋀",
+	"boxminus;": "⊟",
+	"boxtimes;": "⊠",
+	"bsolhsub;": "⟈",
+	"capbrcup;": "⩉",
+	"circledR;": "®",
+	"circledS;": "Ⓢ",
+	"cirfnint;": "⨐",
+	"clubsuit;": "♣",
+	"cupbrcap;": "⩈",
+	"curlyvee;": "⋎",
+	"cwconint;": "∲",
+	"DDotrahd;": "⤑",
+	"doteqdot;": "≑",
+	"DotEqual;": "≐",
+	"dotminus;": "∸",
+	"drbkarow;": "⤐",
+	"dzigrarr;": "⟿",
+	"elinters;": "⏧",
+	"emptyset;": "∅",
+	"eqvparsl;": "⧥",
+	"fpartint;": "⨍",
+	"geqslant;": "⩾",
+	"gesdotol;": "⪄",
+	"gnapprox;": "⪊",
+	"hksearow;": "⤥",
+	"hkswarow;": "⤦",
+	"imagline;": "ℐ",
+	"imagpart;": "ℑ",
+	"infintie;": "⧝",
+	"integers;": "ℤ",
+	"Integral;": "∫",
+	"intercal;": "⊺",
+	"intlarhk;": "⨗",
+	"laemptyv;": "⦴",
+	"ldrushar;": "⥋",
+	"leqslant;": "⩽",
+	"lesdotor;": "⪃",
+	"LessLess;": "⪡",
+	"llcorner;": "⌞",
+	"lnapprox;": "⪉",
+	"lrcorner;": "⌟",
+	"lurdshar;": "⥊",
+	"mapstoup;": "↥",
+	"multimap;": "⊸",
+	"naturals;": "ℕ",
+	"ncongdot;": "⩭̸",
+	"NotEqual;": "≠",
+	"notindot;": "⋵̸",
+	"NotTilde;": "≁",
+	"otimesas;": "⨶",
+	"parallel;": "∥",
+	"PartialD;": "∂",
+	"plusacir;": "⨣",
+	"pointint;": "⨕",
+	"Precedes;": "≺",
+	"precneqq;": "⪵",
+	"precnsim;": "⋨",
+	"profalar;": "⌮",
+	"profline;": "⌒",
+	"profsurf;": "⌓",
+	"raemptyv;": "⦳",
+	"realpart;": "ℜ",
+	"RightTee;": "⊢",
+	"rppolint;": "⨒",
+	"rtriltri;": "⧎",
+	"scpolint;": "⨓",
+	"setminus;": "∖",
+	"shortmid;": "∣",
+	"smeparsl;": "⧤",
+	"sqsubset;": "⊏",
+	"sqsupset;": "⊐",
+	"subseteq;": "⊆",
+	"Succeeds;": "≻",
+	"succneqq;": "⪶",
+	"succnsim;": "⋩",
+	"SuchThat;": "∋",
+	"Superset;": "⊃",
+	"supseteq;": "⊇",
+	"thetasym;": "ϑ",
+	"thicksim;": "∼",
+	"timesbar;": "⨱",
+	"triangle;": "▵",
+	"triminus;": "⨺",
+	"trpezium;": "⏢",
+	"Uarrocir;": "⥉",
+	"ulcorner;": "⌜",
+	"UnderBar;": "_",
+	"urcorner;": "⌝",
+	"varkappa;": "ϰ",
+	"varsigma;": "ς",
+	"vartheta;": "ϑ",
+	"backprime;": "‵",
+	"backsimeq;": "⋍",
+	"Backslash;": "∖",
+	"bigotimes;": "⨂",
+	"CenterDot;": "·",
+	"centerdot;": "·",
+	"checkmark;": "✓",
+	"CircleDot;": "⊙",
+	"complexes;": "ℂ",
+	"Congruent;": "≡",
+	"Coproduct;": "∐",
+	"dotsquare;": "⊡",
+	"DoubleDot;": "¨",
+	"DownArrow;": "↓",
+	"Downarrow;": "⇓",
+	"downarrow;": "↓",
+	"DownBreve;": "̑",
+	"gtrapprox;": "⪆",
+	"gtreqless;": "⋛",
+	"gvertneqq;": "≩︀",
+	"heartsuit;": "♥",
+	"HumpEqual;": "≏",
+	"LeftArrow;": "←",
+	"Leftarrow;": "⇐",
+	"leftarrow;": "←",
+	"LeftFloor;": "⌊",
+	"lesseqgtr;": "⋚",
+	"LessTilde;": "≲",
+	"lvertneqq;": "≨︀",
+	"Mellintrf;": "ℳ",
+	"MinusPlus;": "∓",
+	"ngeqslant;": "⩾̸",
+	"nleqslant;": "⩽̸",
+	"NotCupCap;": "≭",
+	"NotExists;": "∄",
+	"NotSubset;": "⊂⃒",
+	"nparallel;": "∦",
+	"nshortmid;": "∤",
+	"nsubseteq;": "⊈",
+	"nsupseteq;": "⊉",
+	"OverBrace;": "⏞",
+	"pitchfork;": "⋔",
+	"PlusMinus;": "±",
+	"rationals;": "ℚ",
+	"spadesuit;": "♠",
+	"subseteqq;": "⫅",
+	"subsetneq;": "⊊",
+	"supseteqq;": "⫆",
+	"supsetneq;": "⊋",
+	"Therefore;": "∴",
+	"therefore;": "∴",
+	"ThinSpace;": " ",
+	"triangleq;": "≜",
+	"TripleDot;": "⃛",
+	"UnionPlus;": "⊎",
+	"varpropto;": "∝",
+	"Bernoullis;": "ℬ",
+	"circledast;": "⊛",
+	"CirclePlus;": "⊕",
+	"complement;": "∁",
+	"curlywedge;": "⋏",
+	"eqslantgtr;": "⪖",
+	"EqualTilde;": "≂",
+	"Fouriertrf;": "ℱ",
+	"gtreqqless;": "⪌",
+	"ImaginaryI;": "ⅈ",
+	"Laplacetrf;": "ℒ",
+	"LeftVector;": "↼",
+	"lessapprox;": "⪅",
+	"lesseqqgtr;": "⪋",
+	"Lleftarrow;": "⇚",
+	"lmoustache;": "⎰",
+	"longmapsto;": "⟼",
+	"mapstodown;": "↧",
+	"mapstoleft;": "↤",
+	"nLeftarrow;": "⇍",
+	"nleftarrow;": "↚",
+	"NotElement;": "∉",
+	"NotGreater;": "≯",
+	"nsubseteqq;": "⫅̸",
+	"nsupseteqq;": "⫆̸",
+	"precapprox;": "⪷",
+	"Proportion;": "∷",
+	"RightArrow;": "→",
+	"Rightarrow;": "⇒",
+	"rightarrow;": "→",
+	"RightFloor;": "⌋",
+	"rmoustache;": "⎱",
+	"sqsubseteq;": "⊑",
+	"sqsupseteq;": "⊒",
+	"subsetneqq;": "⫋",
+	"succapprox;": "⪸",
+	"supsetneqq;": "⫌",
+	"ThickSpace;": "  ",
+	"TildeEqual;": "≃",
+	"TildeTilde;": "≈",
+	"UnderBrace;": "⏟",
+	"UpArrowBar;": "⤒",
+	"UpTeeArrow;": "↥",
+	"upuparrows;": "⇈",
+	"varepsilon;": "ϵ",
+	"varnothing;": "∅",
+	"backepsilon;": "϶",
+	"blacksquare;": "▪",
+	"circledcirc;": "⊚",
+	"circleddash;": "⊝",
+	"CircleMinus;": "⊖",
+	"CircleTimes;": "⊗",
+	"curlyeqprec;": "⋞",
+	"curlyeqsucc;": "⋟",
+	"diamondsuit;": "♦",
+	"eqslantless;": "⪕",
+	"Equilibrium;": "⇌",
+	"expectation;": "ℰ",
+	"GreaterLess;": "≷",
+	"LeftCeiling;": "⌈",
+	"LessGreater;": "≶",
+	"MediumSpace;": " ",
+	"NotLessLess;": "≪̸",
+	"NotPrecedes;": "⊀",
+	"NotSucceeds;": "⊁",
+	"NotSuperset;": "⊃⃒",
+	"nRightarrow;": "⇏",
+	"nrightarrow;": "↛",
+	"OverBracket;": "⎴",
+	"preccurlyeq;": "≼",
+	"precnapprox;": "⪹",
+	"quaternions;": "ℍ",
+	"RightVector;": "⇀",
+	"Rrightarrow;": "⇛",
+	"RuleDelayed;": "⧴",
+	"SmallCircle;": "∘",
+	"SquareUnion;": "⊔",
+	"straightphi;": "ϕ",
+	"SubsetEqual;": "⊆",
+	"succcurlyeq;": "≽",
+	"succnapprox;": "⪺",
+	"thickapprox;": "≈",
+	"UpDownArrow;": "↕",
+	"Updownarrow;": "⇕",
+	"updownarrow;": "↕",
+	"VerticalBar;": "∣",
+	"blacklozenge;": "⧫",
+	"DownArrowBar;": "⤓",
+	"DownTeeArrow;": "↧",
+	"ExponentialE;": "ⅇ",
+	"exponentiale;": "ⅇ",
+	"GreaterEqual;": "≥",
+	"GreaterTilde;": "≳",
+	"HilbertSpace;": "ℋ",
+	"HumpDownHump;": "≎",
+	"Intersection;": "⋂",
+	"LeftArrowBar;": "⇤",
+	"LeftTeeArrow;": "↤",
+	"LeftTriangle;": "⊲",
+	"LeftUpVector;": "↿",
+	"NotCongruent;": "≢",
+	"NotHumpEqual;": "≏̸",
+	"NotLessEqual;": "≰",
+	"NotLessTilde;": "≴",
+	"Proportional;": "∝",
+	"RightCeiling;": "⌉",
+	"risingdotseq;": "≓",
+	"RoundImplies;": "⥰",
+	"ShortUpArrow;": "↑",
+	"SquareSubset;": "⊏",
+	"triangledown;": "▿",
+	"triangleleft;": "◃",
+	"UnderBracket;": "⎵",
+	"varsubsetneq;": "⊊︀",
+	"varsupsetneq;": "⊋︀",
+	"VerticalLine;": "|",
+	"ApplyFunction;": "⁡",
+	"bigtriangleup;": "△",
+	"blacktriangle;": "▴",
+	"DifferentialD;": "ⅆ",
+	"divideontimes;": "⋇",
+	"DoubleLeftTee;": "⫤",
+	"DoubleUpArrow;": "⇑",
+	"fallingdotseq;": "≒",
+	"hookleftarrow;": "↩",
+	"leftarrowtail;": "↢",
+	"leftharpoonup;": "↼",
+	"LeftTeeVector;": "⥚",
+	"LeftVectorBar;": "⥒",
+	"LessFullEqual;": "≦",
+	"LongLeftArrow;": "⟵",
+	"Longleftarrow;": "⟸",
+	"longleftarrow;": "⟵",
+	"looparrowleft;": "↫",
+	"measuredangle;": "∡",
+	"NotEqualTilde;": "≂̸",
+	"NotTildeEqual;": "≄",
+	"NotTildeTilde;": "≉",
+	"ntriangleleft;": "⋪",
+	"Poincareplane;": "ℌ",
+	"PrecedesEqual;": "⪯",
+	"PrecedesTilde;": "≾",
+	"RightArrowBar;": "⇥",
+	"RightTeeArrow;": "↦",
+	"RightTriangle;": "⊳",
+	"RightUpVector;": "↾",
+	"shortparallel;": "∥",
+	"smallsetminus;": "∖",
+	"SucceedsEqual;": "⪰",
+	"SucceedsTilde;": "≿",
+	"SupersetEqual;": "⊇",
+	"triangleright;": "▹",
+	"UpEquilibrium;": "⥮",
+	"upharpoonleft;": "↿",
+	"varsubsetneqq;": "⫋︀",
+	"varsupsetneqq;": "⫌︀",
+	"VerticalTilde;": "≀",
+	"VeryThinSpace;": " ",
+	"curvearrowleft;": "↶",
+	"DiacriticalDot;": "˙",
+	"doublebarwedge;": "⌆",
+	"DoubleRightTee;": "⊨",
+	"downdownarrows;": "⇊",
+	"DownLeftVector;": "↽",
+	"GreaterGreater;": "⪢",
+	"hookrightarrow;": "↪",
+	"HorizontalLine;": "─",
+	"InvisibleComma;": "⁣",
+	"InvisibleTimes;": "⁢",
+	"LeftDownVector;": "⇃",
+	"leftleftarrows;": "⇇",
+	"LeftRightArrow;": "↔",
+	"Leftrightarrow;": "⇔",
+	"leftrightarrow;": "↔",
+	"leftthreetimes;": "⋋",
+	"LessSlantEqual;": "⩽",
+	"LongRightArrow;": "⟶",
+	"Longrightarrow;": "⟹",
+	"longrightarrow;": "⟶",
+	"looparrowright;": "↬",
+	"LowerLeftArrow;": "↙",
+	"NestedLessLess;": "≪",
+	"NotGreaterLess;": "≹",
+	"NotLessGreater;": "≸",
+	"NotSubsetEqual;": "⊈",
+	"NotVerticalBar;": "∤",
+	"nshortparallel;": "∦",
+	"ntriangleright;": "⋫",
+	"OpenCurlyQuote;": "‘",
+	"ReverseElement;": "∋",
+	"rightarrowtail;": "↣",
+	"rightharpoonup;": "⇀",
+	"RightTeeVector;": "⥛",
+	"RightVectorBar;": "⥓",
+	"ShortDownArrow;": "↓",
+	"ShortLeftArrow;": "←",
+	"SquareSuperset;": "⊐",
+	"TildeFullEqual;": "≅",
+	"trianglelefteq;": "⊴",
+	"upharpoonright;": "↾",
+	"UpperLeftArrow;": "↖",
+	"ZeroWidthSpace;": "​",
+	"bigtriangledown;": "▽",
+	"circlearrowleft;": "↺",
+	"CloseCurlyQuote;": "’",
+	"ContourIntegral;": "∮",
+	"curvearrowright;": "↷",
+	"DoubleDownArrow;": "⇓",
+	"DoubleLeftArrow;": "⇐",
+	"downharpoonleft;": "⇃",
+	"DownRightVector;": "⇁",
+	"leftharpoondown;": "↽",
+	"leftrightarrows;": "⇆",
+	"LeftRightVector;": "⥎",
+	"LeftTriangleBar;": "⧏",
+	"LeftUpTeeVector;": "⥠",
+	"LeftUpVectorBar;": "⥘",
+	"LowerRightArrow;": "↘",
+	"nLeftrightarrow;": "⇎",
+	"nleftrightarrow;": "↮",
+	"NotGreaterEqual;": "≱",
+	"NotGreaterTilde;": "≵",
+	"NotHumpDownHump;": "≎̸",
+	"NotLeftTriangle;": "⋪",
+	"NotSquareSubset;": "⊏̸",
+	"ntrianglelefteq;": "⋬",
+	"OverParenthesis;": "⏜",
+	"RightDownVector;": "⇂",
+	"rightleftarrows;": "⇄",
+	"rightsquigarrow;": "↝",
+	"rightthreetimes;": "⋌",
+	"ShortRightArrow;": "→",
+	"straightepsilon;": "ϵ",
+	"trianglerighteq;": "⊵",
+	"UpperRightArrow;": "↗",
+	"vartriangleleft;": "⊲",
+	"circlearrowright;": "↻",
+	"DiacriticalAcute;": "´",
+	"DiacriticalGrave;": "`",
+	"DiacriticalTilde;": "˜",
+	"DoubleRightArrow;": "⇒",
+	"DownArrowUpArrow;": "⇵",
+	"downharpoonright;": "⇂",
+	"EmptySmallSquare;": "◻",
+	"GreaterEqualLess;": "⋛",
+	"GreaterFullEqual;": "≧",
+	"LeftAngleBracket;": "⟨",
+	"LeftUpDownVector;": "⥑",
+	"LessEqualGreater;": "⋚",
+	"NonBreakingSpace;": " ",
+	"NotPrecedesEqual;": "⪯̸",
+	"NotRightTriangle;": "⋫",
+	"NotSucceedsEqual;": "⪰̸",
+	"NotSucceedsTilde;": "≿̸",
+	"NotSupersetEqual;": "⊉",
+	"ntrianglerighteq;": "⋭",
+	"rightharpoondown;": "⇁",
+	"rightrightarrows;": "⇉",
+	"RightTriangleBar;": "⧐",
+	"RightUpTeeVector;": "⥜",
+	"RightUpVectorBar;": "⥔",
+	"twoheadleftarrow;": "↞",
+	"UnderParenthesis;": "⏝",
+	"UpArrowDownArrow;": "⇅",
+	"vartriangleright;": "⊳",
+	"blacktriangledown;": "▾",
+	"blacktriangleleft;": "◂",
+	"DoubleUpDownArrow;": "⇕",
+	"DoubleVerticalBar;": "∥",
+	"DownLeftTeeVector;": "⥞",
+	"DownLeftVectorBar;": "⥖",
+	"FilledSmallSquare;": "◼",
+	"GreaterSlantEqual;": "⩾",
+	"LeftDoubleBracket;": "⟦",
+	"LeftDownTeeVector;": "⥡",
+	"LeftDownVectorBar;": "⥙",
+	"leftrightharpoons;": "⇋",
+	"LeftTriangleEqual;": "⊴",
+	"NegativeThinSpace;": "​",
+	"NotGreaterGreater;": "≫̸",
+	"NotLessSlantEqual;": "⩽̸",
+	"NotNestedLessLess;": "⪡̸",
+	"NotReverseElement;": "∌",
+	"NotSquareSuperset;": "⊐̸",
+	"NotTildeFullEqual;": "≇",
+	"RightAngleBracket;": "⟩",
+	"rightleftharpoons;": "⇌",
+	"RightUpDownVector;": "⥏",
+	"SquareSubsetEqual;": "⊑",
+	"twoheadrightarrow;": "↠",
+	"VerticalSeparator;": "❘",
+	"blacktriangleright;": "▸",
+	"DownRightTeeVector;": "⥟",
+	"DownRightVectorBar;": "⥗",
+	"LongLeftRightArrow;": "⟷",
+	"Longleftrightarrow;": "⟺",
+	"longleftrightarrow;": "⟷",
+	"NegativeThickSpace;": "​",
+	"NotLeftTriangleBar;": "⧏̸",
+	"PrecedesSlantEqual;": "≼",
+	"ReverseEquilibrium;": "⇋",
+	"RightDoubleBracket;": "⟧",
+	"RightDownTeeVector;": "⥝",
+	"RightDownVectorBar;": "⥕",
+	"RightTriangleEqual;": "⊵",
+	"SquareIntersection;": "⊓",
+	"SucceedsSlantEqual;": "≽",
+	"DoubleLongLeftArrow;": "⟸",
+	"DownLeftRightVector;": "⥐",
+	"LeftArrowRightArrow;": "⇆",
+	"leftrightsquigarrow;": "↭",
+	"NegativeMediumSpace;": "​",
+	"NotGreaterFullEqual;": "≧̸",
+	"NotRightTriangleBar;": "⧐̸",
+	"RightArrowLeftArrow;": "⇄",
+	"SquareSupersetEqual;": "⊒",
+	"CapitalDifferentialD;": "ⅅ",
+	"DoubleLeftRightArrow;": "⇔",
+	"DoubleLongRightArrow;": "⟹",
+	"EmptyVerySmallSquare;": "▫",
+	"NestedGreaterGreater;": "≫",
+	"NotDoubleVerticalBar;": "∦",
+	"NotGreaterSlantEqual;": "⩾̸",
+	"NotLeftTriangleEqual;": "⋬",
+	"NotSquareSubsetEqual;": "⋢",
+	"OpenCurlyDoubleQuote;": "“",
+	"ReverseUpEquilibrium;": "⥯",
+	"CloseCurlyDoubleQuote;": "”",
+	"DoubleContourIntegral;": "∯",
+	"FilledVerySmallSquare;": "▪",
+	"NegativeVeryThinSpace;": "​",
+	"NotPrecedesSlantEqual;": "⋠",
+	"NotRightTriangleEqual;": "⋭",
+	"NotSucceedsSlantEqual;": "⋡",
+	"DiacriticalDoubleAcute;": "˝",
+	"NotSquareSupersetEqual;": "⋣",
+	"NotNestedGreaterGreater;": "⪢̸",
+	"ClockwiseContourIntegral;": "∲",
+	"DoubleLongLeftRightArrow;": "⟺",
+	"CounterClockwiseContourIntegral;": "∳"
+};
+
+let maxCRNameLength;
+const decodeHtml = (rawText, asAttr) => {
+  let offset = 0;
+  const end = rawText.length;
+  let decodedText = "";
+  function advance(length) {
+    offset += length;
+    rawText = rawText.slice(length);
+  }
+  while (offset < end) {
+    const head = /&(?:#x?)?/i.exec(rawText);
+    if (!head || offset + head.index >= end) {
+      const remaining = end - offset;
+      decodedText += rawText.slice(0, remaining);
+      advance(remaining);
+      break;
+    }
+    decodedText += rawText.slice(0, head.index);
+    advance(head.index);
+    if (head[0] === "&") {
+      let name = "";
+      let value = void 0;
+      if (/[0-9a-z]/i.test(rawText[1])) {
+        if (!maxCRNameLength) {
+          maxCRNameLength = Object.keys(namedCharacterReferences).reduce(
+            (max, name2) => Math.max(max, name2.length),
+            0
+          );
+        }
+        for (let length = maxCRNameLength; !value && length > 0; --length) {
+          name = rawText.slice(1, 1 + length);
+          value = namedCharacterReferences[name];
+        }
+        if (value) {
+          const semi = name.endsWith(";");
+          if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) {
+            decodedText += "&" + name;
+            advance(1 + name.length);
+          } else {
+            decodedText += value;
+            advance(1 + name.length);
+          }
+        } else {
+          decodedText += "&" + name;
+          advance(1 + name.length);
+        }
+      } else {
+        decodedText += "&";
+        advance(1);
+      }
+    } else {
+      const hex = head[0] === "&#x";
+      const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/;
+      const body = pattern.exec(rawText);
+      if (!body) {
+        decodedText += head[0];
+        advance(head[0].length);
+      } else {
+        let cp = Number.parseInt(body[1], hex ? 16 : 10);
+        if (cp === 0) {
+          cp = 65533;
+        } else if (cp > 1114111) {
+          cp = 65533;
+        } else if (cp >= 55296 && cp <= 57343) {
+          cp = 65533;
+        } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) {
+          cp = CCR_REPLACEMENTS[cp] || cp;
+        }
+        decodedText += String.fromCodePoint(cp);
+        advance(body[0].length);
+      }
+    }
+  }
+  return decodedText;
+};
+const CCR_REPLACEMENTS = {
+  128: 8364,
+  130: 8218,
+  131: 402,
+  132: 8222,
+  133: 8230,
+  134: 8224,
+  135: 8225,
+  136: 710,
+  137: 8240,
+  138: 352,
+  139: 8249,
+  140: 338,
+  142: 381,
+  145: 8216,
+  146: 8217,
+  147: 8220,
+  148: 8221,
+  149: 8226,
+  150: 8211,
+  151: 8212,
+  152: 732,
+  153: 8482,
+  154: 353,
+  155: 8250,
+  156: 339,
+  158: 382,
+  159: 376
+};
+
+const isRawTextContainer = /* @__PURE__ */ shared.makeMap(
+  "style,iframe,script,noscript",
+  true
+);
+const parserOptions = {
+  isVoidTag: shared.isVoidTag,
+  isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag),
+  isPreTag: (tag) => tag === "pre",
+  decodeEntities: decodeHtml,
+  isBuiltInComponent: (tag) => {
+    if (compilerCore.isBuiltInType(tag, `Transition`)) {
+      return TRANSITION;
+    } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) {
+      return TRANSITION_GROUP;
+    }
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+  getNamespace(tag, parent) {
+    let ns = parent ? parent.ns : 0;
+    if (parent && ns === 2) {
+      if (parent.tag === "annotation-xml") {
+        if (tag === "svg") {
+          return 1;
+        }
+        if (parent.props.some(
+          (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
+        )) {
+          ns = 0;
+        }
+      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
+        ns = 0;
+      }
+    } else if (parent && ns === 1) {
+      if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
+        ns = 0;
+      }
+    }
+    if (ns === 0) {
+      if (tag === "svg") {
+        return 1;
+      }
+      if (tag === "math") {
+        return 2;
+      }
+    }
+    return ns;
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+  getTextMode({ tag, ns }) {
+    if (ns === 0) {
+      if (tag === "textarea" || tag === "title") {
+        return 1;
+      }
+      if (isRawTextContainer(tag)) {
+        return 2;
+      }
+    }
+    return 0;
+  }
+};
+
+const transformStyle = (node) => {
+  if (node.type === 1) {
+    node.props.forEach((p, i) => {
+      if (p.type === 6 && p.name === "style" && p.value) {
+        node.props[i] = {
+          type: 7,
+          name: `bind`,
+          arg: compilerCore.createSimpleExpression(`style`, true, p.loc),
+          exp: parseInlineCSS(p.value.content, p.loc),
+          modifiers: [],
+          loc: p.loc
+        };
+      }
+    });
+  }
+};
+const parseInlineCSS = (cssText, loc) => {
+  const normalized = shared.parseStringStyle(cssText);
+  return compilerCore.createSimpleExpression(
+    JSON.stringify(normalized),
+    false,
+    loc,
+    3
+  );
+};
+
+function createDOMCompilerError(code, loc) {
+  return compilerCore.createCompilerError(
+    code,
+    loc,
+    DOMErrorMessages 
+  );
+}
+const DOMErrorMessages = {
+  [53]: `v-html is missing expression.`,
+  [54]: `v-html will override element children.`,
+  [55]: `v-text is missing expression.`,
+  [56]: `v-text will override element children.`,
+  [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+  [58]: `v-model argument is not supported on plain elements.`,
+  [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+  [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+  [61]: `v-show is missing expression.`,
+  [62]: `<Transition> expects exactly one child element or component.`,
+  [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+};
+
+const transformVHtml = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(53, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(54, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      compilerCore.createObjectProperty(
+        compilerCore.createSimpleExpression(`innerHTML`, true, loc),
+        exp || compilerCore.createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformVText = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(55, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(56, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      compilerCore.createObjectProperty(
+        compilerCore.createSimpleExpression(`textContent`, true),
+        exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression(
+          context.helperString(compilerCore.TO_DISPLAY_STRING),
+          [exp],
+          loc
+        ) : compilerCore.createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformModel = (dir, node, context) => {
+  const baseResult = compilerCore.transformModel(dir, node, context);
+  if (!baseResult.props.length || node.tagType === 1) {
+    return baseResult;
+  }
+  if (dir.arg) {
+    context.onError(
+      createDOMCompilerError(
+        58,
+        dir.arg.loc
+      )
+    );
+  }
+  const { tag } = node;
+  const isCustomElement = context.isCustomElement(tag);
+  if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
+    let directiveToUse = V_MODEL_TEXT;
+    let isInvalidType = false;
+    if (tag === "input" || isCustomElement) {
+      const type = compilerCore.findProp(node, `type`);
+      if (type) {
+        if (type.type === 7) {
+          directiveToUse = V_MODEL_DYNAMIC;
+        } else if (type.value) {
+          switch (type.value.content) {
+            case "radio":
+              directiveToUse = V_MODEL_RADIO;
+              break;
+            case "checkbox":
+              directiveToUse = V_MODEL_CHECKBOX;
+              break;
+            case "file":
+              isInvalidType = true;
+              context.onError(
+                createDOMCompilerError(
+                  59,
+                  dir.loc
+                )
+              );
+              break;
+          }
+        }
+      } else if (compilerCore.hasDynamicKeyVBind(node)) {
+        directiveToUse = V_MODEL_DYNAMIC;
+      } else ;
+    } else if (tag === "select") {
+      directiveToUse = V_MODEL_SELECT;
+    } else ;
+    if (!isInvalidType) {
+      baseResult.needRuntime = context.helper(directiveToUse);
+    }
+  } else {
+    context.onError(
+      createDOMCompilerError(
+        57,
+        dir.loc
+      )
+    );
+  }
+  baseResult.props = baseResult.props.filter(
+    (p) => !(p.key.type === 4 && p.key.content === "modelValue")
+  );
+  return baseResult;
+};
+
+const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`);
+const isNonKeyModifier = /* @__PURE__ */ shared.makeMap(
+  // event propagation management
+  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
+);
+const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right");
+const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(
+  `onkeyup,onkeydown,onkeypress`,
+  true
+);
+const resolveModifiers = (key, modifiers, context, loc) => {
+  const keyModifiers = [];
+  const nonKeyModifiers = [];
+  const eventOptionModifiers = [];
+  for (let i = 0; i < modifiers.length; i++) {
+    const modifier = modifiers[i];
+    if (modifier === "native" && compilerCore.checkCompatEnabled(
+      "COMPILER_V_ON_NATIVE",
+      context,
+      loc
+    )) {
+      eventOptionModifiers.push(modifier);
+    } else if (isEventOptionModifier(modifier)) {
+      eventOptionModifiers.push(modifier);
+    } else {
+      if (maybeKeyModifier(modifier)) {
+        if (compilerCore.isStaticExp(key)) {
+          if (isKeyboardEvent(key.content)) {
+            keyModifiers.push(modifier);
+          } else {
+            nonKeyModifiers.push(modifier);
+          }
+        } else {
+          keyModifiers.push(modifier);
+          nonKeyModifiers.push(modifier);
+        }
+      } else {
+        if (isNonKeyModifier(modifier)) {
+          nonKeyModifiers.push(modifier);
+        } else {
+          keyModifiers.push(modifier);
+        }
+      }
+    }
+  }
+  return {
+    keyModifiers,
+    nonKeyModifiers,
+    eventOptionModifiers
+  };
+};
+const transformClick = (key, event) => {
+  const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick";
+  return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([
+    `(`,
+    key,
+    `) === "onClick" ? "${event}" : (`,
+    key,
+    `)`
+  ]) : key;
+};
+const transformOn = (dir, node, context) => {
+  return compilerCore.transformOn(dir, node, context, (baseResult) => {
+    const { modifiers } = dir;
+    if (!modifiers.length)
+      return baseResult;
+    let { key, value: handlerExp } = baseResult.props[0];
+    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+    if (nonKeyModifiers.includes("right")) {
+      key = transformClick(key, `onContextmenu`);
+    }
+    if (nonKeyModifiers.includes("middle")) {
+      key = transformClick(key, `onMouseup`);
+    }
+    if (nonKeyModifiers.length) {
+      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+        handlerExp,
+        JSON.stringify(nonKeyModifiers)
+      ]);
+    }
+    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
+    (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) {
+      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [
+        handlerExp,
+        JSON.stringify(keyModifiers)
+      ]);
+    }
+    if (eventOptionModifiers.length) {
+      const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join("");
+      key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+    }
+    return {
+      props: [compilerCore.createObjectProperty(key, handlerExp)]
+    };
+  });
+};
+
+const transformShow = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(61, loc)
+    );
+  }
+  return {
+    props: [],
+    needRuntime: context.helper(V_SHOW)
+  };
+};
+
+const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g;
+const stringifyStatic = (children, context, parent) => {
+  if (context.scopes.vSlot > 0) {
+    return;
+  }
+  let nc = 0;
+  let ec = 0;
+  const currentChunk = [];
+  const stringifyCurrentChunk = (currentIndex) => {
+    if (nc >= 20 || ec >= 5) {
+      const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [
+        JSON.stringify(
+          currentChunk.map((node) => stringifyNode(node, context)).join("")
+        ).replace(expReplaceRE, `" + $1 + "`),
+        // the 2nd argument indicates the number of DOM nodes this static vnode
+        // will insert / hydrate
+        String(currentChunk.length)
+      ]);
+      replaceHoist(currentChunk[0], staticCall, context);
+      if (currentChunk.length > 1) {
+        for (let i2 = 1; i2 < currentChunk.length; i2++) {
+          replaceHoist(currentChunk[i2], null, context);
+        }
+        const deleteCount = currentChunk.length - 1;
+        children.splice(currentIndex - currentChunk.length + 1, deleteCount);
+        return deleteCount;
+      }
+    }
+    return 0;
+  };
+  let i = 0;
+  for (; i < children.length; i++) {
+    const child = children[i];
+    const hoisted = getHoistedNode(child);
+    if (hoisted) {
+      const node = child;
+      const result = analyzeNode(node);
+      if (result) {
+        nc += result[0];
+        ec += result[1];
+        currentChunk.push(node);
+        continue;
+      }
+    }
+    i -= stringifyCurrentChunk(i);
+    nc = 0;
+    ec = 0;
+    currentChunk.length = 0;
+  }
+  stringifyCurrentChunk(i);
+};
+const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted;
+const dataAriaRE = /^(data|aria)-/;
+const isStringifiableAttr = (name, ns) => {
+  return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name);
+};
+const replaceHoist = (node, replacement, context) => {
+  const hoistToReplace = node.codegenNode.hoisted;
+  context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement;
+};
+const isNonStringifiable = /* @__PURE__ */ shared.makeMap(
+  `caption,thead,tr,th,tbody,td,tfoot,colgroup,col`
+);
+function analyzeNode(node) {
+  if (node.type === 1 && isNonStringifiable(node.tag)) {
+    return false;
+  }
+  if (node.type === 12) {
+    return [1, 0];
+  }
+  let nc = 1;
+  let ec = node.props.length > 0 ? 1 : 0;
+  let bailed = false;
+  const bail = () => {
+    bailed = true;
+    return false;
+  };
+  function walk(node2) {
+    for (let i = 0; i < node2.props.length; i++) {
+      const p = node2.props[i];
+      if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) {
+        return bail();
+      }
+      if (p.type === 7 && p.name === "bind") {
+        if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) {
+          return bail();
+        }
+        if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) {
+          return bail();
+        }
+      }
+    }
+    for (let i = 0; i < node2.children.length; i++) {
+      nc++;
+      const child = node2.children[i];
+      if (child.type === 1) {
+        if (child.props.length > 0) {
+          ec++;
+        }
+        walk(child);
+        if (bailed) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+  return walk(node) ? [nc, ec] : false;
+}
+function stringifyNode(node, context) {
+  if (shared.isString(node)) {
+    return node;
+  }
+  if (shared.isSymbol(node)) {
+    return ``;
+  }
+  switch (node.type) {
+    case 1:
+      return stringifyElement(node, context);
+    case 2:
+      return shared.escapeHtml(node.content);
+    case 3:
+      return `<!--${shared.escapeHtml(node.content)}-->`;
+    case 5:
+      return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content)));
+    case 8:
+      return shared.escapeHtml(evaluateConstant(node));
+    case 12:
+      return stringifyNode(node.content, context);
+    default:
+      return "";
+  }
+}
+function stringifyElement(node, context) {
+  let res = `<${node.tag}`;
+  let innerHTML = "";
+  for (let i = 0; i < node.props.length; i++) {
+    const p = node.props[i];
+    if (p.type === 6) {
+      res += ` ${p.name}`;
+      if (p.value) {
+        res += `="${shared.escapeHtml(p.value.content)}"`;
+      }
+    } else if (p.type === 7) {
+      if (p.name === "bind") {
+        const exp = p.exp;
+        if (exp.content[0] === "_") {
+          res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`;
+          continue;
+        }
+        if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") {
+          continue;
+        }
+        let evaluated = evaluateConstant(exp);
+        if (evaluated != null) {
+          const arg = p.arg && p.arg.content;
+          if (arg === "class") {
+            evaluated = shared.normalizeClass(evaluated);
+          } else if (arg === "style") {
+            evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated));
+          }
+          res += ` ${p.arg.content}="${shared.escapeHtml(
+            evaluated
+          )}"`;
+        }
+      } else if (p.name === "html") {
+        innerHTML = evaluateConstant(p.exp);
+      } else if (p.name === "text") {
+        innerHTML = shared.escapeHtml(
+          shared.toDisplayString(evaluateConstant(p.exp))
+        );
+      }
+    }
+  }
+  if (context.scopeId) {
+    res += ` ${context.scopeId}`;
+  }
+  res += `>`;
+  if (innerHTML) {
+    res += innerHTML;
+  } else {
+    for (let i = 0; i < node.children.length; i++) {
+      res += stringifyNode(node.children[i], context);
+    }
+  }
+  if (!shared.isVoidTag(node.tag)) {
+    res += `</${node.tag}>`;
+  }
+  return res;
+}
+function evaluateConstant(exp) {
+  if (exp.type === 4) {
+    return new Function(`return (${exp.content})`)();
+  } else {
+    let res = ``;
+    exp.children.forEach((c) => {
+      if (shared.isString(c) || shared.isSymbol(c)) {
+        return;
+      }
+      if (c.type === 2) {
+        res += c.content;
+      } else if (c.type === 5) {
+        res += shared.toDisplayString(evaluateConstant(c.content));
+      } else {
+        res += evaluateConstant(c);
+      }
+    });
+    return res;
+  }
+}
+
+const ignoreSideEffectTags = (node, context) => {
+  if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
+    context.removeNode();
+  }
+};
+
+const DOMNodeTransforms = [
+  transformStyle,
+  ...[]
+];
+const DOMDirectiveTransforms = {
+  cloak: compilerCore.noopDirectiveTransform,
+  html: transformVHtml,
+  text: transformVText,
+  model: transformModel,
+  // override compiler-core
+  on: transformOn,
+  // override compiler-core
+  show: transformShow
+};
+function compile(template, options = {}) {
+  return compilerCore.baseCompile(
+    template,
+    shared.extend({}, parserOptions, options, {
+      nodeTransforms: [
+        // ignore <script> and <tag>
+        // this is not put inside DOMNodeTransforms because that list is used
+        // by compiler-ssr to generate vnode fallback branches
+        ignoreSideEffectTags,
+        ...DOMNodeTransforms,
+        ...options.nodeTransforms || []
+      ],
+      directiveTransforms: shared.extend(
+        {},
+        DOMDirectiveTransforms,
+        options.directiveTransforms || {}
+      ),
+      transformHoist: stringifyStatic
+    })
+  );
+}
+function parse(template, options = {}) {
+  return compilerCore.baseParse(template, shared.extend({}, parserOptions, options));
+}
+
+exports.DOMDirectiveTransforms = DOMDirectiveTransforms;
+exports.DOMNodeTransforms = DOMNodeTransforms;
+exports.TRANSITION = TRANSITION;
+exports.TRANSITION_GROUP = TRANSITION_GROUP;
+exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX;
+exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC;
+exports.V_MODEL_RADIO = V_MODEL_RADIO;
+exports.V_MODEL_SELECT = V_MODEL_SELECT;
+exports.V_MODEL_TEXT = V_MODEL_TEXT;
+exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS;
+exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS;
+exports.V_SHOW = V_SHOW;
+exports.compile = compile;
+exports.createDOMCompilerError = createDOMCompilerError;
+exports.parse = parse;
+exports.parserOptions = parserOptions;
+exports.transformStyle = transformStyle;
+Object.keys(compilerCore).forEach(function (k) {
+  if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = compilerCore[k];
+});

+ 42 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts

xqd
@@ -0,0 +1,42 @@
+import { ParserOptions, NodeTransform, SourceLocation, CompilerError, DirectiveTransform, CompilerOptions, CodegenResult, RootNode } from '@vue/compiler-core';
+export * from '@vue/compiler-core';
+
+export declare const parserOptions: ParserOptions;
+
+export declare const V_MODEL_RADIO: unique symbol;
+export declare const V_MODEL_CHECKBOX: unique symbol;
+export declare const V_MODEL_TEXT: unique symbol;
+export declare const V_MODEL_SELECT: unique symbol;
+export declare const V_MODEL_DYNAMIC: unique symbol;
+export declare const V_ON_WITH_MODIFIERS: unique symbol;
+export declare const V_ON_WITH_KEYS: unique symbol;
+export declare const V_SHOW: unique symbol;
+export declare const TRANSITION: unique symbol;
+export declare const TRANSITION_GROUP: unique symbol;
+
+export declare const transformStyle: NodeTransform;
+
+interface DOMCompilerError extends CompilerError {
+    code: DOMErrorCodes;
+}
+export declare function createDOMCompilerError(code: DOMErrorCodes, loc?: SourceLocation): DOMCompilerError;
+export declare const enum DOMErrorCodes {
+    X_V_HTML_NO_EXPRESSION = 53,
+    X_V_HTML_WITH_CHILDREN = 54,
+    X_V_TEXT_NO_EXPRESSION = 55,
+    X_V_TEXT_WITH_CHILDREN = 56,
+    X_V_MODEL_ON_INVALID_ELEMENT = 57,
+    X_V_MODEL_ARG_ON_ELEMENT = 58,
+    X_V_MODEL_ON_FILE_INPUT_ELEMENT = 59,
+    X_V_MODEL_UNNECESSARY_VALUE = 60,
+    X_V_SHOW_NO_EXPRESSION = 61,
+    X_TRANSITION_INVALID_CHILDREN = 62,
+    X_IGNORED_SIDE_EFFECT_TAG = 63,
+    __EXTEND_POINT__ = 64
+}
+
+export declare const DOMNodeTransforms: NodeTransform[];
+export declare const DOMDirectiveTransforms: Record<string, DirectiveTransform>;
+export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
+export declare function parse(template: string, options?: ParserOptions): RootNode;
+

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 5308 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js


+ 489 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js

xqd
@@ -0,0 +1,489 @@
+import { registerRuntimeHelpers, isBuiltInType, createSimpleExpression, createCompilerError, createObjectProperty, getConstantType, createCallExpression, TO_DISPLAY_STRING, transformModel as transformModel$1, findProp, hasDynamicKeyVBind, transformOn as transformOn$1, isStaticExp, createCompoundExpression, checkCompatEnabled, noopDirectiveTransform, baseCompile, baseParse } from '@vue/compiler-core';
+export * from '@vue/compiler-core';
+import { isVoidTag, isHTMLTag, isSVGTag, makeMap, parseStringStyle, capitalize, extend } from '@vue/shared';
+
+const V_MODEL_RADIO = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelRadio` : ``);
+const V_MODEL_CHECKBOX = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelCheckbox` : ``);
+const V_MODEL_TEXT = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelText` : ``);
+const V_MODEL_SELECT = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelSelect` : ``);
+const V_MODEL_DYNAMIC = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelDynamic` : ``);
+const V_ON_WITH_MODIFIERS = Symbol(!!(process.env.NODE_ENV !== "production") ? `vOnModifiersGuard` : ``);
+const V_ON_WITH_KEYS = Symbol(!!(process.env.NODE_ENV !== "production") ? `vOnKeysGuard` : ``);
+const V_SHOW = Symbol(!!(process.env.NODE_ENV !== "production") ? `vShow` : ``);
+const TRANSITION = Symbol(!!(process.env.NODE_ENV !== "production") ? `Transition` : ``);
+const TRANSITION_GROUP = Symbol(!!(process.env.NODE_ENV !== "production") ? `TransitionGroup` : ``);
+registerRuntimeHelpers({
+  [V_MODEL_RADIO]: `vModelRadio`,
+  [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+  [V_MODEL_TEXT]: `vModelText`,
+  [V_MODEL_SELECT]: `vModelSelect`,
+  [V_MODEL_DYNAMIC]: `vModelDynamic`,
+  [V_ON_WITH_MODIFIERS]: `withModifiers`,
+  [V_ON_WITH_KEYS]: `withKeys`,
+  [V_SHOW]: `vShow`,
+  [TRANSITION]: `Transition`,
+  [TRANSITION_GROUP]: `TransitionGroup`
+});
+
+let decoder;
+function decodeHtmlBrowser(raw, asAttr = false) {
+  if (!decoder) {
+    decoder = document.createElement("div");
+  }
+  if (asAttr) {
+    decoder.innerHTML = `<div foo="${raw.replace(/"/g, "&quot;")}">`;
+    return decoder.children[0].getAttribute("foo");
+  } else {
+    decoder.innerHTML = raw;
+    return decoder.textContent;
+  }
+}
+
+const isRawTextContainer = /* @__PURE__ */ makeMap(
+  "style,iframe,script,noscript",
+  true
+);
+const parserOptions = {
+  isVoidTag,
+  isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag),
+  isPreTag: (tag) => tag === "pre",
+  decodeEntities: decodeHtmlBrowser ,
+  isBuiltInComponent: (tag) => {
+    if (isBuiltInType(tag, `Transition`)) {
+      return TRANSITION;
+    } else if (isBuiltInType(tag, `TransitionGroup`)) {
+      return TRANSITION_GROUP;
+    }
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+  getNamespace(tag, parent) {
+    let ns = parent ? parent.ns : 0;
+    if (parent && ns === 2) {
+      if (parent.tag === "annotation-xml") {
+        if (tag === "svg") {
+          return 1;
+        }
+        if (parent.props.some(
+          (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
+        )) {
+          ns = 0;
+        }
+      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
+        ns = 0;
+      }
+    } else if (parent && ns === 1) {
+      if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
+        ns = 0;
+      }
+    }
+    if (ns === 0) {
+      if (tag === "svg") {
+        return 1;
+      }
+      if (tag === "math") {
+        return 2;
+      }
+    }
+    return ns;
+  },
+  // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+  getTextMode({ tag, ns }) {
+    if (ns === 0) {
+      if (tag === "textarea" || tag === "title") {
+        return 1;
+      }
+      if (isRawTextContainer(tag)) {
+        return 2;
+      }
+    }
+    return 0;
+  }
+};
+
+const transformStyle = (node) => {
+  if (node.type === 1) {
+    node.props.forEach((p, i) => {
+      if (p.type === 6 && p.name === "style" && p.value) {
+        node.props[i] = {
+          type: 7,
+          name: `bind`,
+          arg: createSimpleExpression(`style`, true, p.loc),
+          exp: parseInlineCSS(p.value.content, p.loc),
+          modifiers: [],
+          loc: p.loc
+        };
+      }
+    });
+  }
+};
+const parseInlineCSS = (cssText, loc) => {
+  const normalized = parseStringStyle(cssText);
+  return createSimpleExpression(
+    JSON.stringify(normalized),
+    false,
+    loc,
+    3
+  );
+};
+
+function createDOMCompilerError(code, loc) {
+  return createCompilerError(
+    code,
+    loc,
+    !!(process.env.NODE_ENV !== "production") || false ? DOMErrorMessages : void 0
+  );
+}
+const DOMErrorMessages = {
+  [53]: `v-html is missing expression.`,
+  [54]: `v-html will override element children.`,
+  [55]: `v-text is missing expression.`,
+  [56]: `v-text will override element children.`,
+  [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+  [58]: `v-model argument is not supported on plain elements.`,
+  [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+  [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+  [61]: `v-show is missing expression.`,
+  [62]: `<Transition> expects exactly one child element or component.`,
+  [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+};
+
+const transformVHtml = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(53, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(54, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      createObjectProperty(
+        createSimpleExpression(`innerHTML`, true, loc),
+        exp || createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformVText = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(55, loc)
+    );
+  }
+  if (node.children.length) {
+    context.onError(
+      createDOMCompilerError(56, loc)
+    );
+    node.children.length = 0;
+  }
+  return {
+    props: [
+      createObjectProperty(
+        createSimpleExpression(`textContent`, true),
+        exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(
+          context.helperString(TO_DISPLAY_STRING),
+          [exp],
+          loc
+        ) : createSimpleExpression("", true)
+      )
+    ]
+  };
+};
+
+const transformModel = (dir, node, context) => {
+  const baseResult = transformModel$1(dir, node, context);
+  if (!baseResult.props.length || node.tagType === 1) {
+    return baseResult;
+  }
+  if (dir.arg) {
+    context.onError(
+      createDOMCompilerError(
+        58,
+        dir.arg.loc
+      )
+    );
+  }
+  function checkDuplicatedValue() {
+    const value = findProp(node, "value");
+    if (value) {
+      context.onError(
+        createDOMCompilerError(
+          60,
+          value.loc
+        )
+      );
+    }
+  }
+  const { tag } = node;
+  const isCustomElement = context.isCustomElement(tag);
+  if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
+    let directiveToUse = V_MODEL_TEXT;
+    let isInvalidType = false;
+    if (tag === "input" || isCustomElement) {
+      const type = findProp(node, `type`);
+      if (type) {
+        if (type.type === 7) {
+          directiveToUse = V_MODEL_DYNAMIC;
+        } else if (type.value) {
+          switch (type.value.content) {
+            case "radio":
+              directiveToUse = V_MODEL_RADIO;
+              break;
+            case "checkbox":
+              directiveToUse = V_MODEL_CHECKBOX;
+              break;
+            case "file":
+              isInvalidType = true;
+              context.onError(
+                createDOMCompilerError(
+                  59,
+                  dir.loc
+                )
+              );
+              break;
+            default:
+              !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
+              break;
+          }
+        }
+      } else if (hasDynamicKeyVBind(node)) {
+        directiveToUse = V_MODEL_DYNAMIC;
+      } else {
+        !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
+      }
+    } else if (tag === "select") {
+      directiveToUse = V_MODEL_SELECT;
+    } else {
+      !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
+    }
+    if (!isInvalidType) {
+      baseResult.needRuntime = context.helper(directiveToUse);
+    }
+  } else {
+    context.onError(
+      createDOMCompilerError(
+        57,
+        dir.loc
+      )
+    );
+  }
+  baseResult.props = baseResult.props.filter(
+    (p) => !(p.key.type === 4 && p.key.content === "modelValue")
+  );
+  return baseResult;
+};
+
+const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
+const isNonKeyModifier = /* @__PURE__ */ makeMap(
+  // event propagation management
+  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
+);
+const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right");
+const isKeyboardEvent = /* @__PURE__ */ makeMap(
+  `onkeyup,onkeydown,onkeypress`,
+  true
+);
+const resolveModifiers = (key, modifiers, context, loc) => {
+  const keyModifiers = [];
+  const nonKeyModifiers = [];
+  const eventOptionModifiers = [];
+  for (let i = 0; i < modifiers.length; i++) {
+    const modifier = modifiers[i];
+    if (modifier === "native" && checkCompatEnabled(
+      "COMPILER_V_ON_NATIVE",
+      context,
+      loc
+    )) {
+      eventOptionModifiers.push(modifier);
+    } else if (isEventOptionModifier(modifier)) {
+      eventOptionModifiers.push(modifier);
+    } else {
+      if (maybeKeyModifier(modifier)) {
+        if (isStaticExp(key)) {
+          if (isKeyboardEvent(key.content)) {
+            keyModifiers.push(modifier);
+          } else {
+            nonKeyModifiers.push(modifier);
+          }
+        } else {
+          keyModifiers.push(modifier);
+          nonKeyModifiers.push(modifier);
+        }
+      } else {
+        if (isNonKeyModifier(modifier)) {
+          nonKeyModifiers.push(modifier);
+        } else {
+          keyModifiers.push(modifier);
+        }
+      }
+    }
+  }
+  return {
+    keyModifiers,
+    nonKeyModifiers,
+    eventOptionModifiers
+  };
+};
+const transformClick = (key, event) => {
+  const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick";
+  return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([
+    `(`,
+    key,
+    `) === "onClick" ? "${event}" : (`,
+    key,
+    `)`
+  ]) : key;
+};
+const transformOn = (dir, node, context) => {
+  return transformOn$1(dir, node, context, (baseResult) => {
+    const { modifiers } = dir;
+    if (!modifiers.length)
+      return baseResult;
+    let { key, value: handlerExp } = baseResult.props[0];
+    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+    if (nonKeyModifiers.includes("right")) {
+      key = transformClick(key, `onContextmenu`);
+    }
+    if (nonKeyModifiers.includes("middle")) {
+      key = transformClick(key, `onMouseup`);
+    }
+    if (nonKeyModifiers.length) {
+      handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+        handlerExp,
+        JSON.stringify(nonKeyModifiers)
+      ]);
+    }
+    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
+    (!isStaticExp(key) || isKeyboardEvent(key.content))) {
+      handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
+        handlerExp,
+        JSON.stringify(keyModifiers)
+      ]);
+    }
+    if (eventOptionModifiers.length) {
+      const modifierPostfix = eventOptionModifiers.map(capitalize).join("");
+      key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+    }
+    return {
+      props: [createObjectProperty(key, handlerExp)]
+    };
+  });
+};
+
+const transformShow = (dir, node, context) => {
+  const { exp, loc } = dir;
+  if (!exp) {
+    context.onError(
+      createDOMCompilerError(61, loc)
+    );
+  }
+  return {
+    props: [],
+    needRuntime: context.helper(V_SHOW)
+  };
+};
+
+const transformTransition = (node, context) => {
+  if (node.type === 1 && node.tagType === 1) {
+    const component = context.isBuiltInComponent(node.tag);
+    if (component === TRANSITION) {
+      return () => {
+        if (!node.children.length) {
+          return;
+        }
+        if (hasMultipleChildren(node)) {
+          context.onError(
+            createDOMCompilerError(
+              62,
+              {
+                start: node.children[0].loc.start,
+                end: node.children[node.children.length - 1].loc.end,
+                source: ""
+              }
+            )
+          );
+        }
+        const child = node.children[0];
+        if (child.type === 1) {
+          for (const p of child.props) {
+            if (p.type === 7 && p.name === "show") {
+              node.props.push({
+                type: 6,
+                name: "persisted",
+                value: void 0,
+                loc: node.loc
+              });
+            }
+          }
+        }
+      };
+    }
+  }
+};
+function hasMultipleChildren(node) {
+  const children = node.children = node.children.filter(
+    (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
+  );
+  const child = children[0];
+  return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
+}
+
+const ignoreSideEffectTags = (node, context) => {
+  if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
+    !!(process.env.NODE_ENV !== "production") && context.onError(
+      createDOMCompilerError(
+        63,
+        node.loc
+      )
+    );
+    context.removeNode();
+  }
+};
+
+const DOMNodeTransforms = [
+  transformStyle,
+  ...!!(process.env.NODE_ENV !== "production") ? [transformTransition] : []
+];
+const DOMDirectiveTransforms = {
+  cloak: noopDirectiveTransform,
+  html: transformVHtml,
+  text: transformVText,
+  model: transformModel,
+  // override compiler-core
+  on: transformOn,
+  // override compiler-core
+  show: transformShow
+};
+function compile(template, options = {}) {
+  return baseCompile(
+    template,
+    extend({}, parserOptions, options, {
+      nodeTransforms: [
+        // ignore <script> and <tag>
+        // this is not put inside DOMNodeTransforms because that list is used
+        // by compiler-ssr to generate vnode fallback branches
+        ignoreSideEffectTags,
+        ...DOMNodeTransforms,
+        ...options.nodeTransforms || []
+      ],
+      directiveTransforms: extend(
+        {},
+        DOMDirectiveTransforms,
+        options.directiveTransforms || {}
+      ),
+      transformHoist: null 
+    })
+  );
+}
+function parse(template, options = {}) {
+  return baseParse(template, extend({}, parserOptions, options));
+}
+
+export { DOMDirectiveTransforms, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle };

+ 5459 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.global.js

xqd
@@ -0,0 +1,5459 @@
+var VueCompilerDOM = (function (exports) {
+  'use strict';
+
+  function makeMap(str, expectsLowerCase) {
+    const map = /* @__PURE__ */ Object.create(null);
+    const list = str.split(",");
+    for (let i = 0; i < list.length; i++) {
+      map[list[i]] = true;
+    }
+    return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
+  }
+
+  const EMPTY_OBJ = Object.freeze({}) ;
+  const NOOP = () => {
+  };
+  const NO = () => false;
+  const onRE = /^on[^a-z]/;
+  const isOn = (key) => onRE.test(key);
+  const extend = Object.assign;
+  const isArray = Array.isArray;
+  const isString = (val) => typeof val === "string";
+  const isSymbol = (val) => typeof val === "symbol";
+  const isObject = (val) => val !== null && typeof val === "object";
+  const isReservedProp = /* @__PURE__ */ makeMap(
+    // the leading comma is intentional so empty string "" is also included
+    ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
+  );
+  const isBuiltInDirective = /* @__PURE__ */ makeMap(
+    "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
+  );
+  const cacheStringFunction = (fn) => {
+    const cache = /* @__PURE__ */ Object.create(null);
+    return (str) => {
+      const hit = cache[str];
+      return hit || (cache[str] = fn(str));
+    };
+  };
+  const camelizeRE = /-(\w)/g;
+  const camelize = cacheStringFunction((str) => {
+    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
+  });
+  const hyphenateRE = /\B([A-Z])/g;
+  const hyphenate = cacheStringFunction(
+    (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
+  );
+  const capitalize = cacheStringFunction(
+    (str) => str.charAt(0).toUpperCase() + str.slice(1)
+  );
+  const toHandlerKey = cacheStringFunction(
+    (str) => str ? `on${capitalize(str)}` : ``
+  );
+
+  const PatchFlagNames = {
+    [1]: `TEXT`,
+    [2]: `CLASS`,
+    [4]: `STYLE`,
+    [8]: `PROPS`,
+    [16]: `FULL_PROPS`,
+    [32]: `HYDRATE_EVENTS`,
+    [64]: `STABLE_FRAGMENT`,
+    [128]: `KEYED_FRAGMENT`,
+    [256]: `UNKEYED_FRAGMENT`,
+    [512]: `NEED_PATCH`,
+    [1024]: `DYNAMIC_SLOTS`,
+    [2048]: `DEV_ROOT_FRAGMENT`,
+    [-1]: `HOISTED`,
+    [-2]: `BAIL`
+  };
+
+  const slotFlagsText = {
+    [1]: "STABLE",
+    [2]: "DYNAMIC",
+    [3]: "FORWARDED"
+  };
+
+  const range = 2;
+  function generateCodeFrame(source, start = 0, end = source.length) {
+    let lines = source.split(/(\r?\n)/);
+    const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
+    lines = lines.filter((_, idx) => idx % 2 === 0);
+    let count = 0;
+    const res = [];
+    for (let i = 0; i < lines.length; i++) {
+      count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
+      if (count >= start) {
+        for (let j = i - range; j <= i + range || end > count; j++) {
+          if (j < 0 || j >= lines.length)
+            continue;
+          const line = j + 1;
+          res.push(
+            `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`
+          );
+          const lineLength = lines[j].length;
+          const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
+          if (j === i) {
+            const pad = start - (count - (lineLength + newLineSeqLength));
+            const length = Math.max(
+              1,
+              end > count ? lineLength - pad : end - start
+            );
+            res.push(`   |  ` + " ".repeat(pad) + "^".repeat(length));
+          } else if (j > i) {
+            if (end > count) {
+              const length = Math.max(Math.min(end - count, lineLength), 1);
+              res.push(`   |  ` + "^".repeat(length));
+            }
+            count += lineLength + newLineSeqLength;
+          }
+        }
+        break;
+      }
+    }
+    return res.join("\n");
+  }
+
+  const listDelimiterRE = /;(?![^(]*\))/g;
+  const propertyDelimiterRE = /:([^]+)/;
+  const styleCommentRE = /\/\*[^]*?\*\//g;
+  function parseStringStyle(cssText) {
+    const ret = {};
+    cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
+      if (item) {
+        const tmp = item.split(propertyDelimiterRE);
+        tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
+      }
+    });
+    return ret;
+  }
+
+  const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
+  const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
+  const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
+  const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
+  const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
+  const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
+
+  function defaultOnError(error) {
+    throw error;
+  }
+  function defaultOnWarn(msg) {
+    console.warn(`[Vue warn] ${msg.message}`);
+  }
+  function createCompilerError(code, loc, messages, additionalMessage) {
+    const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ;
+    const error = new SyntaxError(String(msg));
+    error.code = code;
+    error.loc = loc;
+    return error;
+  }
+  const errorMessages = {
+    // parse errors
+    [0]: "Illegal comment.",
+    [1]: "CDATA section is allowed only in XML context.",
+    [2]: "Duplicate attribute.",
+    [3]: "End tag cannot have attributes.",
+    [4]: "Illegal '/' in tags.",
+    [5]: "Unexpected EOF in tag.",
+    [6]: "Unexpected EOF in CDATA section.",
+    [7]: "Unexpected EOF in comment.",
+    [8]: "Unexpected EOF in script.",
+    [9]: "Unexpected EOF in tag.",
+    [10]: "Incorrectly closed comment.",
+    [11]: "Incorrectly opened comment.",
+    [12]: "Illegal tag name. Use '&lt;' to print '<'.",
+    [13]: "Attribute value was expected.",
+    [14]: "End tag name was expected.",
+    [15]: "Whitespace was expected.",
+    [16]: "Unexpected '<!--' in comment.",
+    [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`,
+    [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",
+    [19]: "Attribute name cannot start with '='.",
+    [21]: "'<?' is allowed only in XML context.",
+    [20]: `Unexpected null character.`,
+    [22]: "Illegal '/' in tags.",
+    // Vue-specific parse errors
+    [23]: "Invalid end tag.",
+    [24]: "Element is missing end tag.",
+    [25]: "Interpolation end sign was not found.",
+    [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",
+    [26]: "Legal directive name was expected.",
+    // transform errors
+    [28]: `v-if/v-else-if is missing expression.`,
+    [29]: `v-if/else branches must use unique keys.`,
+    [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,
+    [31]: `v-for is missing expression.`,
+    [32]: `v-for has invalid expression.`,
+    [33]: `<template v-for> key should be placed on the <template> tag.`,
+    [34]: `v-bind is missing expression.`,
+    [35]: `v-on is missing expression.`,
+    [36]: `Unexpected custom directive on <slot> outlet.`,
+    [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
+    [38]: `Duplicate slot names found. `,
+    [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,
+    [40]: `v-slot can only be used on components or <template> tags.`,
+    [41]: `v-model is missing expression.`,
+    [42]: `v-model value must be a valid JavaScript member expression.`,
+    [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+    [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
+Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
+    [45]: `Error parsing JavaScript expression: `,
+    [46]: `<KeepAlive> expects exactly one child component.`,
+    // generic errors
+    [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
+    [48]: `ES module mode is not supported in this build of compiler.`,
+    [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
+    [50]: `"scopeId" option is only supported in module mode.`,
+    // deprecations
+    [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`,
+    [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`,
+    // just to fulfill types
+    [53]: ``
+  };
+
+  const FRAGMENT = Symbol(`Fragment` );
+  const TELEPORT = Symbol(`Teleport` );
+  const SUSPENSE = Symbol(`Suspense` );
+  const KEEP_ALIVE = Symbol(`KeepAlive` );
+  const BASE_TRANSITION = Symbol(`BaseTransition` );
+  const OPEN_BLOCK = Symbol(`openBlock` );
+  const CREATE_BLOCK = Symbol(`createBlock` );
+  const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` );
+  const CREATE_VNODE = Symbol(`createVNode` );
+  const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` );
+  const CREATE_COMMENT = Symbol(`createCommentVNode` );
+  const CREATE_TEXT = Symbol(`createTextVNode` );
+  const CREATE_STATIC = Symbol(`createStaticVNode` );
+  const RESOLVE_COMPONENT = Symbol(`resolveComponent` );
+  const RESOLVE_DYNAMIC_COMPONENT = Symbol(
+    `resolveDynamicComponent` 
+  );
+  const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` );
+  const RESOLVE_FILTER = Symbol(`resolveFilter` );
+  const WITH_DIRECTIVES = Symbol(`withDirectives` );
+  const RENDER_LIST = Symbol(`renderList` );
+  const RENDER_SLOT = Symbol(`renderSlot` );
+  const CREATE_SLOTS = Symbol(`createSlots` );
+  const TO_DISPLAY_STRING = Symbol(`toDisplayString` );
+  const MERGE_PROPS = Symbol(`mergeProps` );
+  const NORMALIZE_CLASS = Symbol(`normalizeClass` );
+  const NORMALIZE_STYLE = Symbol(`normalizeStyle` );
+  const NORMALIZE_PROPS = Symbol(`normalizeProps` );
+  const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` );
+  const TO_HANDLERS = Symbol(`toHandlers` );
+  const CAMELIZE = Symbol(`camelize` );
+  const CAPITALIZE = Symbol(`capitalize` );
+  const TO_HANDLER_KEY = Symbol(`toHandlerKey` );
+  const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` );
+  const PUSH_SCOPE_ID = Symbol(`pushScopeId` );
+  const POP_SCOPE_ID = Symbol(`popScopeId` );
+  const WITH_CTX = Symbol(`withCtx` );
+  const UNREF = Symbol(`unref` );
+  const IS_REF = Symbol(`isRef` );
+  const WITH_MEMO = Symbol(`withMemo` );
+  const IS_MEMO_SAME = Symbol(`isMemoSame` );
+  const helperNameMap = {
+    [FRAGMENT]: `Fragment`,
+    [TELEPORT]: `Teleport`,
+    [SUSPENSE]: `Suspense`,
+    [KEEP_ALIVE]: `KeepAlive`,
+    [BASE_TRANSITION]: `BaseTransition`,
+    [OPEN_BLOCK]: `openBlock`,
+    [CREATE_BLOCK]: `createBlock`,
+    [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+    [CREATE_VNODE]: `createVNode`,
+    [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+    [CREATE_COMMENT]: `createCommentVNode`,
+    [CREATE_TEXT]: `createTextVNode`,
+    [CREATE_STATIC]: `createStaticVNode`,
+    [RESOLVE_COMPONENT]: `resolveComponent`,
+    [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+    [RESOLVE_DIRECTIVE]: `resolveDirective`,
+    [RESOLVE_FILTER]: `resolveFilter`,
+    [WITH_DIRECTIVES]: `withDirectives`,
+    [RENDER_LIST]: `renderList`,
+    [RENDER_SLOT]: `renderSlot`,
+    [CREATE_SLOTS]: `createSlots`,
+    [TO_DISPLAY_STRING]: `toDisplayString`,
+    [MERGE_PROPS]: `mergeProps`,
+    [NORMALIZE_CLASS]: `normalizeClass`,
+    [NORMALIZE_STYLE]: `normalizeStyle`,
+    [NORMALIZE_PROPS]: `normalizeProps`,
+    [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+    [TO_HANDLERS]: `toHandlers`,
+    [CAMELIZE]: `camelize`,
+    [CAPITALIZE]: `capitalize`,
+    [TO_HANDLER_KEY]: `toHandlerKey`,
+    [SET_BLOCK_TRACKING]: `setBlockTracking`,
+    [PUSH_SCOPE_ID]: `pushScopeId`,
+    [POP_SCOPE_ID]: `popScopeId`,
+    [WITH_CTX]: `withCtx`,
+    [UNREF]: `unref`,
+    [IS_REF]: `isRef`,
+    [WITH_MEMO]: `withMemo`,
+    [IS_MEMO_SAME]: `isMemoSame`
+  };
+  function registerRuntimeHelpers(helpers) {
+    Object.getOwnPropertySymbols(helpers).forEach((s) => {
+      helperNameMap[s] = helpers[s];
+    });
+  }
+
+  const locStub = {
+    source: "",
+    start: { line: 1, column: 1, offset: 0 },
+    end: { line: 1, column: 1, offset: 0 }
+  };
+  function createRoot(children, loc = locStub) {
+    return {
+      type: 0,
+      children,
+      helpers: /* @__PURE__ */ new Set(),
+      components: [],
+      directives: [],
+      hoists: [],
+      imports: [],
+      cached: 0,
+      temps: 0,
+      codegenNode: void 0,
+      loc
+    };
+  }
+  function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+    if (context) {
+      if (isBlock) {
+        context.helper(OPEN_BLOCK);
+        context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+      } else {
+        context.helper(getVNodeHelper(context.inSSR, isComponent));
+      }
+      if (directives) {
+        context.helper(WITH_DIRECTIVES);
+      }
+    }
+    return {
+      type: 13,
+      tag,
+      props,
+      children,
+      patchFlag,
+      dynamicProps,
+      directives,
+      isBlock,
+      disableTracking,
+      isComponent,
+      loc
+    };
+  }
+  function createArrayExpression(elements, loc = locStub) {
+    return {
+      type: 17,
+      loc,
+      elements
+    };
+  }
+  function createObjectExpression(properties, loc = locStub) {
+    return {
+      type: 15,
+      loc,
+      properties
+    };
+  }
+  function createObjectProperty(key, value) {
+    return {
+      type: 16,
+      loc: locStub,
+      key: isString(key) ? createSimpleExpression(key, true) : key,
+      value
+    };
+  }
+  function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
+    return {
+      type: 4,
+      loc,
+      content,
+      isStatic,
+      constType: isStatic ? 3 : constType
+    };
+  }
+  function createInterpolation(content, loc) {
+    return {
+      type: 5,
+      loc,
+      content: isString(content) ? createSimpleExpression(content, false, loc) : content
+    };
+  }
+  function createCompoundExpression(children, loc = locStub) {
+    return {
+      type: 8,
+      loc,
+      children
+    };
+  }
+  function createCallExpression(callee, args = [], loc = locStub) {
+    return {
+      type: 14,
+      loc,
+      callee,
+      arguments: args
+    };
+  }
+  function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
+    return {
+      type: 18,
+      params,
+      returns,
+      newline,
+      isSlot,
+      loc
+    };
+  }
+  function createConditionalExpression(test, consequent, alternate, newline = true) {
+    return {
+      type: 19,
+      test,
+      consequent,
+      alternate,
+      newline,
+      loc: locStub
+    };
+  }
+  function createCacheExpression(index, value, isVNode = false) {
+    return {
+      type: 20,
+      index,
+      value,
+      isVNode,
+      loc: locStub
+    };
+  }
+  function createBlockStatement(body) {
+    return {
+      type: 21,
+      body,
+      loc: locStub
+    };
+  }
+  function createTemplateLiteral(elements) {
+    return {
+      type: 22,
+      elements,
+      loc: locStub
+    };
+  }
+  function createIfStatement(test, consequent, alternate) {
+    return {
+      type: 23,
+      test,
+      consequent,
+      alternate,
+      loc: locStub
+    };
+  }
+  function createAssignmentExpression(left, right) {
+    return {
+      type: 24,
+      left,
+      right,
+      loc: locStub
+    };
+  }
+  function createSequenceExpression(expressions) {
+    return {
+      type: 25,
+      expressions,
+      loc: locStub
+    };
+  }
+  function createReturnStatement(returns) {
+    return {
+      type: 26,
+      returns,
+      loc: locStub
+    };
+  }
+  function getVNodeHelper(ssr, isComponent) {
+    return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+  }
+  function getVNodeBlockHelper(ssr, isComponent) {
+    return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+  }
+  function convertToBlock(node, { helper, removeHelper, inSSR }) {
+    if (!node.isBlock) {
+      node.isBlock = true;
+      removeHelper(getVNodeHelper(inSSR, node.isComponent));
+      helper(OPEN_BLOCK);
+      helper(getVNodeBlockHelper(inSSR, node.isComponent));
+    }
+  }
+
+  const isStaticExp = (p) => p.type === 4 && p.isStatic;
+  const isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected);
+  function isCoreComponent(tag) {
+    if (isBuiltInType(tag, "Teleport")) {
+      return TELEPORT;
+    } else if (isBuiltInType(tag, "Suspense")) {
+      return SUSPENSE;
+    } else if (isBuiltInType(tag, "KeepAlive")) {
+      return KEEP_ALIVE;
+    } else if (isBuiltInType(tag, "BaseTransition")) {
+      return BASE_TRANSITION;
+    }
+  }
+  const nonIdentifierRE = /^\d|[^\$\w]/;
+  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
+  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
+  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
+  const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
+  const isMemberExpressionBrowser = (path) => {
+    path = path.trim().replace(whitespaceRE, (s) => s.trim());
+    let state = 0 /* inMemberExp */;
+    let stateStack = [];
+    let currentOpenBracketCount = 0;
+    let currentOpenParensCount = 0;
+    let currentStringType = null;
+    for (let i = 0; i < path.length; i++) {
+      const char = path.charAt(i);
+      switch (state) {
+        case 0 /* inMemberExp */:
+          if (char === "[") {
+            stateStack.push(state);
+            state = 1 /* inBrackets */;
+            currentOpenBracketCount++;
+          } else if (char === "(") {
+            stateStack.push(state);
+            state = 2 /* inParens */;
+            currentOpenParensCount++;
+          } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
+            return false;
+          }
+          break;
+        case 1 /* inBrackets */:
+          if (char === `'` || char === `"` || char === "`") {
+            stateStack.push(state);
+            state = 3 /* inString */;
+            currentStringType = char;
+          } else if (char === `[`) {
+            currentOpenBracketCount++;
+          } else if (char === `]`) {
+            if (!--currentOpenBracketCount) {
+              state = stateStack.pop();
+            }
+          }
+          break;
+        case 2 /* inParens */:
+          if (char === `'` || char === `"` || char === "`") {
+            stateStack.push(state);
+            state = 3 /* inString */;
+            currentStringType = char;
+          } else if (char === `(`) {
+            currentOpenParensCount++;
+          } else if (char === `)`) {
+            if (i === path.length - 1) {
+              return false;
+            }
+            if (!--currentOpenParensCount) {
+              state = stateStack.pop();
+            }
+          }
+          break;
+        case 3 /* inString */:
+          if (char === currentStringType) {
+            state = stateStack.pop();
+            currentStringType = null;
+          }
+          break;
+      }
+    }
+    return !currentOpenBracketCount && !currentOpenParensCount;
+  };
+  const isMemberExpressionNode = NOOP ;
+  const isMemberExpression = isMemberExpressionBrowser ;
+  function getInnerRange(loc, offset, length) {
+    const source = loc.source.slice(offset, offset + length);
+    const newLoc = {
+      source,
+      start: advancePositionWithClone(loc.start, loc.source, offset),
+      end: loc.end
+    };
+    if (length != null) {
+      newLoc.end = advancePositionWithClone(
+        loc.start,
+        loc.source,
+        offset + length
+      );
+    }
+    return newLoc;
+  }
+  function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
+    return advancePositionWithMutation(
+      extend({}, pos),
+      source,
+      numberOfCharacters
+    );
+  }
+  function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {
+    let linesCount = 0;
+    let lastNewLinePos = -1;
+    for (let i = 0; i < numberOfCharacters; i++) {
+      if (source.charCodeAt(i) === 10) {
+        linesCount++;
+        lastNewLinePos = i;
+      }
+    }
+    pos.offset += numberOfCharacters;
+    pos.line += linesCount;
+    pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;
+    return pos;
+  }
+  function assert(condition, msg) {
+    if (!condition) {
+      throw new Error(msg || `unexpected compiler condition`);
+    }
+  }
+  function findDir(node, name, allowEmpty = false) {
+    for (let i = 0; i < node.props.length; i++) {
+      const p = node.props[i];
+      if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) {
+        return p;
+      }
+    }
+  }
+  function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
+    for (let i = 0; i < node.props.length; i++) {
+      const p = node.props[i];
+      if (p.type === 6) {
+        if (dynamicOnly)
+          continue;
+        if (p.name === name && (p.value || allowEmpty)) {
+          return p;
+        }
+      } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {
+        return p;
+      }
+    }
+  }
+  function isStaticArgOf(arg, name) {
+    return !!(arg && isStaticExp(arg) && arg.content === name);
+  }
+  function hasDynamicKeyVBind(node) {
+    return node.props.some(
+      (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj"
+      p.arg.type !== 4 || // v-bind:[_ctx.foo]
+      !p.arg.isStatic)
+      // v-bind:[foo]
+    );
+  }
+  function isText$1(node) {
+    return node.type === 5 || node.type === 2;
+  }
+  function isVSlot(p) {
+    return p.type === 7 && p.name === "slot";
+  }
+  function isTemplateNode(node) {
+    return node.type === 1 && node.tagType === 3;
+  }
+  function isSlotOutlet(node) {
+    return node.type === 1 && node.tagType === 2;
+  }
+  const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);
+  function getUnnormalizedProps(props, callPath = []) {
+    if (props && !isString(props) && props.type === 14) {
+      const callee = props.callee;
+      if (!isString(callee) && propsHelperSet.has(callee)) {
+        return getUnnormalizedProps(
+          props.arguments[0],
+          callPath.concat(props)
+        );
+      }
+    }
+    return [props, callPath];
+  }
+  function injectProp(node, prop, context) {
+    let propsWithInjection;
+    let props = node.type === 13 ? node.props : node.arguments[2];
+    let callPath = [];
+    let parentCall;
+    if (props && !isString(props) && props.type === 14) {
+      const ret = getUnnormalizedProps(props);
+      props = ret[0];
+      callPath = ret[1];
+      parentCall = callPath[callPath.length - 1];
+    }
+    if (props == null || isString(props)) {
+      propsWithInjection = createObjectExpression([prop]);
+    } else if (props.type === 14) {
+      const first = props.arguments[0];
+      if (!isString(first) && first.type === 15) {
+        if (!hasProp(prop, first)) {
+          first.properties.unshift(prop);
+        }
+      } else {
+        if (props.callee === TO_HANDLERS) {
+          propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+            createObjectExpression([prop]),
+            props
+          ]);
+        } else {
+          props.arguments.unshift(createObjectExpression([prop]));
+        }
+      }
+      !propsWithInjection && (propsWithInjection = props);
+    } else if (props.type === 15) {
+      if (!hasProp(prop, props)) {
+        props.properties.unshift(prop);
+      }
+      propsWithInjection = props;
+    } else {
+      propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+        createObjectExpression([prop]),
+        props
+      ]);
+      if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
+        parentCall = callPath[callPath.length - 2];
+      }
+    }
+    if (node.type === 13) {
+      if (parentCall) {
+        parentCall.arguments[0] = propsWithInjection;
+      } else {
+        node.props = propsWithInjection;
+      }
+    } else {
+      if (parentCall) {
+        parentCall.arguments[0] = propsWithInjection;
+      } else {
+        node.arguments[2] = propsWithInjection;
+      }
+    }
+  }
+  function hasProp(prop, props) {
+    let result = false;
+    if (prop.key.type === 4) {
+      const propKeyName = prop.key.content;
+      result = props.properties.some(
+        (p) => p.key.type === 4 && p.key.content === propKeyName
+      );
+    }
+    return result;
+  }
+  function toValidAssetId(name, type) {
+    return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
+    return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString();
+  })}`;
+  }
+  function hasScopeRef(node, ids) {
+    if (!node || Object.keys(ids).length === 0) {
+      return false;
+    }
+    switch (node.type) {
+      case 1:
+        for (let i = 0; i < node.props.length; i++) {
+          const p = node.props[i];
+          if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {
+            return true;
+          }
+        }
+        return node.children.some((c) => hasScopeRef(c, ids));
+      case 11:
+        if (hasScopeRef(node.source, ids)) {
+          return true;
+        }
+        return node.children.some((c) => hasScopeRef(c, ids));
+      case 9:
+        return node.branches.some((b) => hasScopeRef(b, ids));
+      case 10:
+        if (hasScopeRef(node.condition, ids)) {
+          return true;
+        }
+        return node.children.some((c) => hasScopeRef(c, ids));
+      case 4:
+        return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content];
+      case 8:
+        return node.children.some((c) => isObject(c) && hasScopeRef(c, ids));
+      case 5:
+      case 12:
+        return hasScopeRef(node.content, ids);
+      case 2:
+      case 3:
+        return false;
+      default:
+        return false;
+    }
+  }
+  function getMemoedVNodeCall(node) {
+    if (node.type === 14 && node.callee === WITH_MEMO) {
+      return node.arguments[1].returns;
+    } else {
+      return node;
+    }
+  }
+
+  const deprecationData = {
+    ["COMPILER_IS_ON_ELEMENT"]: {
+      message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
+    },
+    ["COMPILER_V_BIND_SYNC"]: {
+      message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
+    },
+    ["COMPILER_V_BIND_PROP"]: {
+      message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.`
+    },
+    ["COMPILER_V_BIND_OBJECT_ORDER"]: {
+      message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
+    },
+    ["COMPILER_V_ON_NATIVE"]: {
+      message: `.native modifier for v-on has been removed as is no longer necessary.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
+    },
+    ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: {
+      message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
+    },
+    ["COMPILER_NATIVE_TEMPLATE"]: {
+      message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`
+    },
+    ["COMPILER_INLINE_TEMPLATE"]: {
+      message: `"inline-template" has been removed in Vue 3.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
+    },
+    ["COMPILER_FILTER"]: {
+      message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,
+      link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
+    }
+  };
+  function getCompatValue(key, context) {
+    const config = context.options ? context.options.compatConfig : context.compatConfig;
+    const value = config && config[key];
+    if (key === "MODE") {
+      return value || 3;
+    } else {
+      return value;
+    }
+  }
+  function isCompatEnabled(key, context) {
+    const mode = getCompatValue("MODE", context);
+    const value = getCompatValue(key, context);
+    return mode === 3 ? value === true : value !== false;
+  }
+  function checkCompatEnabled(key, context, loc, ...args) {
+    const enabled = isCompatEnabled(key, context);
+    if (enabled) {
+      warnDeprecation(key, context, loc, ...args);
+    }
+    return enabled;
+  }
+  function warnDeprecation(key, context, loc, ...args) {
+    const val = getCompatValue(key, context);
+    if (val === "suppress-warning") {
+      return;
+    }
+    const { message, link } = deprecationData[key];
+    const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? `
+  Details: ${link}` : ``}`;
+    const err = new SyntaxError(msg);
+    err.code = key;
+    if (loc)
+      err.loc = loc;
+    context.onWarn(err);
+  }
+
+  const decodeRE = /&(gt|lt|amp|apos|quot);/g;
+  const decodeMap = {
+    gt: ">",
+    lt: "<",
+    amp: "&",
+    apos: "'",
+    quot: '"'
+  };
+  const defaultParserOptions = {
+    delimiters: [`{{`, `}}`],
+    getNamespace: () => 0,
+    getTextMode: () => 0,
+    isVoidTag: NO,
+    isPreTag: NO,
+    isCustomElement: NO,
+    decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
+    onError: defaultOnError,
+    onWarn: defaultOnWarn,
+    comments: true
+  };
+  function baseParse(content, options = {}) {
+    const context = createParserContext(content, options);
+    const start = getCursor(context);
+    return createRoot(
+      parseChildren(context, 0, []),
+      getSelection(context, start)
+    );
+  }
+  function createParserContext(content, rawOptions) {
+    const options = extend({}, defaultParserOptions);
+    let key;
+    for (key in rawOptions) {
+      options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key];
+    }
+    return {
+      options,
+      column: 1,
+      line: 1,
+      offset: 0,
+      originalSource: content,
+      source: content,
+      inPre: false,
+      inVPre: false,
+      onWarn: options.onWarn
+    };
+  }
+  function parseChildren(context, mode, ancestors) {
+    const parent = last(ancestors);
+    const ns = parent ? parent.ns : 0;
+    const nodes = [];
+    while (!isEnd(context, mode, ancestors)) {
+      const s = context.source;
+      let node = void 0;
+      if (mode === 0 || mode === 1) {
+        if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {
+          node = parseInterpolation(context, mode);
+        } else if (mode === 0 && s[0] === "<") {
+          if (s.length === 1) {
+            emitError(context, 5, 1);
+          } else if (s[1] === "!") {
+            if (startsWith(s, "<!--")) {
+              node = parseComment(context);
+            } else if (startsWith(s, "<!DOCTYPE")) {
+              node = parseBogusComment(context);
+            } else if (startsWith(s, "<![CDATA[")) {
+              if (ns !== 0) {
+                node = parseCDATA(context, ancestors);
+              } else {
+                emitError(context, 1);
+                node = parseBogusComment(context);
+              }
+            } else {
+              emitError(context, 11);
+              node = parseBogusComment(context);
+            }
+          } else if (s[1] === "/") {
+            if (s.length === 2) {
+              emitError(context, 5, 2);
+            } else if (s[2] === ">") {
+              emitError(context, 14, 2);
+              advanceBy(context, 3);
+              continue;
+            } else if (/[a-z]/i.test(s[2])) {
+              emitError(context, 23);
+              parseTag(context, TagType.End, parent);
+              continue;
+            } else {
+              emitError(
+                context,
+                12,
+                2
+              );
+              node = parseBogusComment(context);
+            }
+          } else if (/[a-z]/i.test(s[1])) {
+            node = parseElement(context, ancestors);
+            if (isCompatEnabled(
+              "COMPILER_NATIVE_TEMPLATE",
+              context
+            ) && node && node.tag === "template" && !node.props.some(
+              (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+            )) {
+              warnDeprecation(
+                "COMPILER_NATIVE_TEMPLATE",
+                context,
+                node.loc
+              );
+              node = node.children;
+            }
+          } else if (s[1] === "?") {
+            emitError(
+              context,
+              21,
+              1
+            );
+            node = parseBogusComment(context);
+          } else {
+            emitError(context, 12, 1);
+          }
+        }
+      }
+      if (!node) {
+        node = parseText(context, mode);
+      }
+      if (isArray(node)) {
+        for (let i = 0; i < node.length; i++) {
+          pushNode(nodes, node[i]);
+        }
+      } else {
+        pushNode(nodes, node);
+      }
+    }
+    let removedWhitespace = false;
+    if (mode !== 2 && mode !== 1) {
+      const shouldCondense = context.options.whitespace !== "preserve";
+      for (let i = 0; i < nodes.length; i++) {
+        const node = nodes[i];
+        if (node.type === 2) {
+          if (!context.inPre) {
+            if (!/[^\t\r\n\f ]/.test(node.content)) {
+              const prev = nodes[i - 1];
+              const next = nodes[i + 1];
+              if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) {
+                removedWhitespace = true;
+                nodes[i] = null;
+              } else {
+                node.content = " ";
+              }
+            } else if (shouldCondense) {
+              node.content = node.content.replace(/[\t\r\n\f ]+/g, " ");
+            }
+          } else {
+            node.content = node.content.replace(/\r\n/g, "\n");
+          }
+        } else if (node.type === 3 && !context.options.comments) {
+          removedWhitespace = true;
+          nodes[i] = null;
+        }
+      }
+      if (context.inPre && parent && context.options.isPreTag(parent.tag)) {
+        const first = nodes[0];
+        if (first && first.type === 2) {
+          first.content = first.content.replace(/^\r?\n/, "");
+        }
+      }
+    }
+    return removedWhitespace ? nodes.filter(Boolean) : nodes;
+  }
+  function pushNode(nodes, node) {
+    if (node.type === 2) {
+      const prev = last(nodes);
+      if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) {
+        prev.content += node.content;
+        prev.loc.end = node.loc.end;
+        prev.loc.source += node.loc.source;
+        return;
+      }
+    }
+    nodes.push(node);
+  }
+  function parseCDATA(context, ancestors) {
+    advanceBy(context, 9);
+    const nodes = parseChildren(context, 3, ancestors);
+    if (context.source.length === 0) {
+      emitError(context, 6);
+    } else {
+      advanceBy(context, 3);
+    }
+    return nodes;
+  }
+  function parseComment(context) {
+    const start = getCursor(context);
+    let content;
+    const match = /--(\!)?>/.exec(context.source);
+    if (!match) {
+      content = context.source.slice(4);
+      advanceBy(context, context.source.length);
+      emitError(context, 7);
+    } else {
+      if (match.index <= 3) {
+        emitError(context, 0);
+      }
+      if (match[1]) {
+        emitError(context, 10);
+      }
+      content = context.source.slice(4, match.index);
+      const s = context.source.slice(0, match.index);
+      let prevIndex = 1, nestedIndex = 0;
+      while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) {
+        advanceBy(context, nestedIndex - prevIndex + 1);
+        if (nestedIndex + 4 < s.length) {
+          emitError(context, 16);
+        }
+        prevIndex = nestedIndex + 1;
+      }
+      advanceBy(context, match.index + match[0].length - prevIndex + 1);
+    }
+    return {
+      type: 3,
+      content,
+      loc: getSelection(context, start)
+    };
+  }
+  function parseBogusComment(context) {
+    const start = getCursor(context);
+    const contentStart = context.source[1] === "?" ? 1 : 2;
+    let content;
+    const closeIndex = context.source.indexOf(">");
+    if (closeIndex === -1) {
+      content = context.source.slice(contentStart);
+      advanceBy(context, context.source.length);
+    } else {
+      content = context.source.slice(contentStart, closeIndex);
+      advanceBy(context, closeIndex + 1);
+    }
+    return {
+      type: 3,
+      content,
+      loc: getSelection(context, start)
+    };
+  }
+  function parseElement(context, ancestors) {
+    const wasInPre = context.inPre;
+    const wasInVPre = context.inVPre;
+    const parent = last(ancestors);
+    const element = parseTag(context, TagType.Start, parent);
+    const isPreBoundary = context.inPre && !wasInPre;
+    const isVPreBoundary = context.inVPre && !wasInVPre;
+    if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
+      if (isPreBoundary) {
+        context.inPre = false;
+      }
+      if (isVPreBoundary) {
+        context.inVPre = false;
+      }
+      return element;
+    }
+    ancestors.push(element);
+    const mode = context.options.getTextMode(element, parent);
+    const children = parseChildren(context, mode, ancestors);
+    ancestors.pop();
+    {
+      const inlineTemplateProp = element.props.find(
+        (p) => p.type === 6 && p.name === "inline-template"
+      );
+      if (inlineTemplateProp && checkCompatEnabled(
+        "COMPILER_INLINE_TEMPLATE",
+        context,
+        inlineTemplateProp.loc
+      )) {
+        const loc = getSelection(context, element.loc.end);
+        inlineTemplateProp.value = {
+          type: 2,
+          content: loc.source,
+          loc
+        };
+      }
+    }
+    element.children = children;
+    if (startsWithEndTagOpen(context.source, element.tag)) {
+      parseTag(context, TagType.End, parent);
+    } else {
+      emitError(context, 24, 0, element.loc.start);
+      if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
+        const first = children[0];
+        if (first && startsWith(first.loc.source, "<!--")) {
+          emitError(context, 8);
+        }
+      }
+    }
+    element.loc = getSelection(context, element.loc.start);
+    if (isPreBoundary) {
+      context.inPre = false;
+    }
+    if (isVPreBoundary) {
+      context.inVPre = false;
+    }
+    return element;
+  }
+  var TagType = /* @__PURE__ */ ((TagType2) => {
+    TagType2[TagType2["Start"] = 0] = "Start";
+    TagType2[TagType2["End"] = 1] = "End";
+    return TagType2;
+  })(TagType || {});
+  const isSpecialTemplateDirective = /* @__PURE__ */ makeMap(
+    `if,else,else-if,for,slot`
+  );
+  function parseTag(context, type, parent) {
+    const start = getCursor(context);
+    const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);
+    const tag = match[1];
+    const ns = context.options.getNamespace(tag, parent);
+    advanceBy(context, match[0].length);
+    advanceSpaces(context);
+    const cursor = getCursor(context);
+    const currentSource = context.source;
+    if (context.options.isPreTag(tag)) {
+      context.inPre = true;
+    }
+    let props = parseAttributes(context, type);
+    if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) {
+      context.inVPre = true;
+      extend(context, cursor);
+      context.source = currentSource;
+      props = parseAttributes(context, type).filter((p) => p.name !== "v-pre");
+    }
+    let isSelfClosing = false;
+    if (context.source.length === 0) {
+      emitError(context, 9);
+    } else {
+      isSelfClosing = startsWith(context.source, "/>");
+      if (type === 1 /* End */ && isSelfClosing) {
+        emitError(context, 4);
+      }
+      advanceBy(context, isSelfClosing ? 2 : 1);
+    }
+    if (type === 1 /* End */) {
+      return;
+    }
+    if (isCompatEnabled(
+      "COMPILER_V_IF_V_FOR_PRECEDENCE",
+      context
+    )) {
+      let hasIf = false;
+      let hasFor = false;
+      for (let i = 0; i < props.length; i++) {
+        const p = props[i];
+        if (p.type === 7) {
+          if (p.name === "if") {
+            hasIf = true;
+          } else if (p.name === "for") {
+            hasFor = true;
+          }
+        }
+        if (hasIf && hasFor) {
+          warnDeprecation(
+            "COMPILER_V_IF_V_FOR_PRECEDENCE",
+            context,
+            getSelection(context, start)
+          );
+          break;
+        }
+      }
+    }
+    let tagType = 0;
+    if (!context.inVPre) {
+      if (tag === "slot") {
+        tagType = 2;
+      } else if (tag === "template") {
+        if (props.some(
+          (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+        )) {
+          tagType = 3;
+        }
+      } else if (isComponent(tag, props, context)) {
+        tagType = 1;
+      }
+    }
+    return {
+      type: 1,
+      ns,
+      tag,
+      tagType,
+      props,
+      isSelfClosing,
+      children: [],
+      loc: getSelection(context, start),
+      codegenNode: void 0
+      // to be created during transform phase
+    };
+  }
+  function isComponent(tag, props, context) {
+    const options = context.options;
+    if (options.isCustomElement(tag)) {
+      return false;
+    }
+    if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) {
+      return true;
+    }
+    for (let i = 0; i < props.length; i++) {
+      const p = props[i];
+      if (p.type === 6) {
+        if (p.name === "is" && p.value) {
+          if (p.value.content.startsWith("vue:")) {
+            return true;
+          } else if (checkCompatEnabled(
+            "COMPILER_IS_ON_ELEMENT",
+            context,
+            p.loc
+          )) {
+            return true;
+          }
+        }
+      } else {
+        if (p.name === "is") {
+          return true;
+        } else if (
+          // :is on plain element - only treat as component in compat mode
+          p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled(
+            "COMPILER_IS_ON_ELEMENT",
+            context,
+            p.loc
+          )
+        ) {
+          return true;
+        }
+      }
+    }
+  }
+  function parseAttributes(context, type) {
+    const props = [];
+    const attributeNames = /* @__PURE__ */ new Set();
+    while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) {
+      if (startsWith(context.source, "/")) {
+        emitError(context, 22);
+        advanceBy(context, 1);
+        advanceSpaces(context);
+        continue;
+      }
+      if (type === 1 /* End */) {
+        emitError(context, 3);
+      }
+      const attr = parseAttribute(context, attributeNames);
+      if (attr.type === 6 && attr.value && attr.name === "class") {
+        attr.value.content = attr.value.content.replace(/\s+/g, " ").trim();
+      }
+      if (type === 0 /* Start */) {
+        props.push(attr);
+      }
+      if (/^[^\t\r\n\f />]/.test(context.source)) {
+        emitError(context, 15);
+      }
+      advanceSpaces(context);
+    }
+    return props;
+  }
+  function parseAttribute(context, nameSet) {
+    var _a;
+    const start = getCursor(context);
+    const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);
+    const name = match[0];
+    if (nameSet.has(name)) {
+      emitError(context, 2);
+    }
+    nameSet.add(name);
+    if (name[0] === "=") {
+      emitError(context, 19);
+    }
+    {
+      const pattern = /["'<]/g;
+      let m;
+      while (m = pattern.exec(name)) {
+        emitError(
+          context,
+          17,
+          m.index
+        );
+      }
+    }
+    advanceBy(context, name.length);
+    let value = void 0;
+    if (/^[\t\r\n\f ]*=/.test(context.source)) {
+      advanceSpaces(context);
+      advanceBy(context, 1);
+      advanceSpaces(context);
+      value = parseAttributeValue(context);
+      if (!value) {
+        emitError(context, 13);
+      }
+    }
+    const loc = getSelection(context, start);
+    if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {
+      const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(
+        name
+      );
+      let isPropShorthand = startsWith(name, ".");
+      let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot");
+      let arg;
+      if (match2[2]) {
+        const isSlot = dirName === "slot";
+        const startOffset = name.lastIndexOf(
+          match2[2],
+          name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0)
+        );
+        const loc2 = getSelection(
+          context,
+          getNewPosition(context, start, startOffset),
+          getNewPosition(
+            context,
+            start,
+            startOffset + match2[2].length + (isSlot && match2[3] || "").length
+          )
+        );
+        let content = match2[2];
+        let isStatic = true;
+        if (content.startsWith("[")) {
+          isStatic = false;
+          if (!content.endsWith("]")) {
+            emitError(
+              context,
+              27
+            );
+            content = content.slice(1);
+          } else {
+            content = content.slice(1, content.length - 1);
+          }
+        } else if (isSlot) {
+          content += match2[3] || "";
+        }
+        arg = {
+          type: 4,
+          content,
+          isStatic,
+          constType: isStatic ? 3 : 0,
+          loc: loc2
+        };
+      }
+      if (value && value.isQuoted) {
+        const valueLoc = value.loc;
+        valueLoc.start.offset++;
+        valueLoc.start.column++;
+        valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);
+        valueLoc.source = valueLoc.source.slice(1, -1);
+      }
+      const modifiers = match2[3] ? match2[3].slice(1).split(".") : [];
+      if (isPropShorthand)
+        modifiers.push("prop");
+      if (dirName === "bind" && arg) {
+        if (modifiers.includes("sync") && checkCompatEnabled(
+          "COMPILER_V_BIND_SYNC",
+          context,
+          loc,
+          arg.loc.source
+        )) {
+          dirName = "model";
+          modifiers.splice(modifiers.indexOf("sync"), 1);
+        }
+        if (modifiers.includes("prop")) {
+          checkCompatEnabled(
+            "COMPILER_V_BIND_PROP",
+            context,
+            loc
+          );
+        }
+      }
+      return {
+        type: 7,
+        name: dirName,
+        exp: value && {
+          type: 4,
+          content: value.content,
+          isStatic: false,
+          // Treat as non-constant by default. This can be potentially set to
+          // other values by `transformExpression` to make it eligible for hoisting.
+          constType: 0,
+          loc: value.loc
+        },
+        arg,
+        modifiers,
+        loc
+      };
+    }
+    if (!context.inVPre && startsWith(name, "v-")) {
+      emitError(context, 26);
+    }
+    return {
+      type: 6,
+      name,
+      value: value && {
+        type: 2,
+        content: value.content,
+        loc: value.loc
+      },
+      loc
+    };
+  }
+  function parseAttributeValue(context) {
+    const start = getCursor(context);
+    let content;
+    const quote = context.source[0];
+    const isQuoted = quote === `"` || quote === `'`;
+    if (isQuoted) {
+      advanceBy(context, 1);
+      const endIndex = context.source.indexOf(quote);
+      if (endIndex === -1) {
+        content = parseTextData(
+          context,
+          context.source.length,
+          4
+        );
+      } else {
+        content = parseTextData(context, endIndex, 4);
+        advanceBy(context, 1);
+      }
+    } else {
+      const match = /^[^\t\r\n\f >]+/.exec(context.source);
+      if (!match) {
+        return void 0;
+      }
+      const unexpectedChars = /["'<=`]/g;
+      let m;
+      while (m = unexpectedChars.exec(match[0])) {
+        emitError(
+          context,
+          18,
+          m.index
+        );
+      }
+      content = parseTextData(context, match[0].length, 4);
+    }
+    return { content, isQuoted, loc: getSelection(context, start) };
+  }
+  function parseInterpolation(context, mode) {
+    const [open, close] = context.options.delimiters;
+    const closeIndex = context.source.indexOf(close, open.length);
+    if (closeIndex === -1) {
+      emitError(context, 25);
+      return void 0;
+    }
+    const start = getCursor(context);
+    advanceBy(context, open.length);
+    const innerStart = getCursor(context);
+    const innerEnd = getCursor(context);
+    const rawContentLength = closeIndex - open.length;
+    const rawContent = context.source.slice(0, rawContentLength);
+    const preTrimContent = parseTextData(context, rawContentLength, mode);
+    const content = preTrimContent.trim();
+    const startOffset = preTrimContent.indexOf(content);
+    if (startOffset > 0) {
+      advancePositionWithMutation(innerStart, rawContent, startOffset);
+    }
+    const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);
+    advancePositionWithMutation(innerEnd, rawContent, endOffset);
+    advanceBy(context, close.length);
+    return {
+      type: 5,
+      content: {
+        type: 4,
+        isStatic: false,
+        // Set `isConstant` to false by default and will decide in transformExpression
+        constType: 0,
+        content,
+        loc: getSelection(context, innerStart, innerEnd)
+      },
+      loc: getSelection(context, start)
+    };
+  }
+  function parseText(context, mode) {
+    const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]];
+    let endIndex = context.source.length;
+    for (let i = 0; i < endTokens.length; i++) {
+      const index = context.source.indexOf(endTokens[i], 1);
+      if (index !== -1 && endIndex > index) {
+        endIndex = index;
+      }
+    }
+    const start = getCursor(context);
+    const content = parseTextData(context, endIndex, mode);
+    return {
+      type: 2,
+      content,
+      loc: getSelection(context, start)
+    };
+  }
+  function parseTextData(context, length, mode) {
+    const rawText = context.source.slice(0, length);
+    advanceBy(context, length);
+    if (mode === 2 || mode === 3 || !rawText.includes("&")) {
+      return rawText;
+    } else {
+      return context.options.decodeEntities(
+        rawText,
+        mode === 4
+      );
+    }
+  }
+  function getCursor(context) {
+    const { column, line, offset } = context;
+    return { column, line, offset };
+  }
+  function getSelection(context, start, end) {
+    end = end || getCursor(context);
+    return {
+      start,
+      end,
+      source: context.originalSource.slice(start.offset, end.offset)
+    };
+  }
+  function last(xs) {
+    return xs[xs.length - 1];
+  }
+  function startsWith(source, searchString) {
+    return source.startsWith(searchString);
+  }
+  function advanceBy(context, numberOfCharacters) {
+    const { source } = context;
+    advancePositionWithMutation(context, source, numberOfCharacters);
+    context.source = source.slice(numberOfCharacters);
+  }
+  function advanceSpaces(context) {
+    const match = /^[\t\r\n\f ]+/.exec(context.source);
+    if (match) {
+      advanceBy(context, match[0].length);
+    }
+  }
+  function getNewPosition(context, start, numberOfCharacters) {
+    return advancePositionWithClone(
+      start,
+      context.originalSource.slice(start.offset, numberOfCharacters),
+      numberOfCharacters
+    );
+  }
+  function emitError(context, code, offset, loc = getCursor(context)) {
+    if (offset) {
+      loc.offset += offset;
+      loc.column += offset;
+    }
+    context.options.onError(
+      createCompilerError(code, {
+        start: loc,
+        end: loc,
+        source: ""
+      })
+    );
+  }
+  function isEnd(context, mode, ancestors) {
+    const s = context.source;
+    switch (mode) {
+      case 0:
+        if (startsWith(s, "</")) {
+          for (let i = ancestors.length - 1; i >= 0; --i) {
+            if (startsWithEndTagOpen(s, ancestors[i].tag)) {
+              return true;
+            }
+          }
+        }
+        break;
+      case 1:
+      case 2: {
+        const parent = last(ancestors);
+        if (parent && startsWithEndTagOpen(s, parent.tag)) {
+          return true;
+        }
+        break;
+      }
+      case 3:
+        if (startsWith(s, "]]>")) {
+          return true;
+        }
+        break;
+    }
+    return !s;
+  }
+  function startsWithEndTagOpen(source, tag) {
+    return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">");
+  }
+
+  function hoistStatic(root, context) {
+    walk(
+      root,
+      context,
+      // Root node is unfortunately non-hoistable due to potential parent
+      // fallthrough attributes.
+      isSingleElementRoot(root, root.children[0])
+    );
+  }
+  function isSingleElementRoot(root, child) {
+    const { children } = root;
+    return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
+  }
+  function walk(node, context, doNotHoistNode = false) {
+    const { children } = node;
+    const originalCount = children.length;
+    let hoistedCount = 0;
+    for (let i = 0; i < children.length; i++) {
+      const child = children[i];
+      if (child.type === 1 && child.tagType === 0) {
+        const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
+        if (constantType > 0) {
+          if (constantType >= 2) {
+            child.codegenNode.patchFlag = -1 + (` /* HOISTED */` );
+            child.codegenNode = context.hoist(child.codegenNode);
+            hoistedCount++;
+            continue;
+          }
+        } else {
+          const codegenNode = child.codegenNode;
+          if (codegenNode.type === 13) {
+            const flag = getPatchFlag(codegenNode);
+            if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {
+              const props = getNodeProps(child);
+              if (props) {
+                codegenNode.props = context.hoist(props);
+              }
+            }
+            if (codegenNode.dynamicProps) {
+              codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
+            }
+          }
+        }
+      }
+      if (child.type === 1) {
+        const isComponent = child.tagType === 1;
+        if (isComponent) {
+          context.scopes.vSlot++;
+        }
+        walk(child, context);
+        if (isComponent) {
+          context.scopes.vSlot--;
+        }
+      } else if (child.type === 11) {
+        walk(child, context, child.children.length === 1);
+      } else if (child.type === 9) {
+        for (let i2 = 0; i2 < child.branches.length; i2++) {
+          walk(
+            child.branches[i2],
+            context,
+            child.branches[i2].children.length === 1
+          );
+        }
+      }
+    }
+    if (hoistedCount && context.transformHoist) {
+      context.transformHoist(children, context, node);
+    }
+    if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {
+      node.codegenNode.children = context.hoist(
+        createArrayExpression(node.codegenNode.children)
+      );
+    }
+  }
+  function getConstantType(node, context) {
+    const { constantCache } = context;
+    switch (node.type) {
+      case 1:
+        if (node.tagType !== 0) {
+          return 0;
+        }
+        const cached = constantCache.get(node);
+        if (cached !== void 0) {
+          return cached;
+        }
+        const codegenNode = node.codegenNode;
+        if (codegenNode.type !== 13) {
+          return 0;
+        }
+        if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") {
+          return 0;
+        }
+        const flag = getPatchFlag(codegenNode);
+        if (!flag) {
+          let returnType2 = 3;
+          const generatedPropsType = getGeneratedPropsConstantType(node, context);
+          if (generatedPropsType === 0) {
+            constantCache.set(node, 0);
+            return 0;
+          }
+          if (generatedPropsType < returnType2) {
+            returnType2 = generatedPropsType;
+          }
+          for (let i = 0; i < node.children.length; i++) {
+            const childType = getConstantType(node.children[i], context);
+            if (childType === 0) {
+              constantCache.set(node, 0);
+              return 0;
+            }
+            if (childType < returnType2) {
+              returnType2 = childType;
+            }
+          }
+          if (returnType2 > 1) {
+            for (let i = 0; i < node.props.length; i++) {
+              const p = node.props[i];
+              if (p.type === 7 && p.name === "bind" && p.exp) {
+                const expType = getConstantType(p.exp, context);
+                if (expType === 0) {
+                  constantCache.set(node, 0);
+                  return 0;
+                }
+                if (expType < returnType2) {
+                  returnType2 = expType;
+                }
+              }
+            }
+          }
+          if (codegenNode.isBlock) {
+            for (let i = 0; i < node.props.length; i++) {
+              const p = node.props[i];
+              if (p.type === 7) {
+                constantCache.set(node, 0);
+                return 0;
+              }
+            }
+            context.removeHelper(OPEN_BLOCK);
+            context.removeHelper(
+              getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)
+            );
+            codegenNode.isBlock = false;
+            context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
+          }
+          constantCache.set(node, returnType2);
+          return returnType2;
+        } else {
+          constantCache.set(node, 0);
+          return 0;
+        }
+      case 2:
+      case 3:
+        return 3;
+      case 9:
+      case 11:
+      case 10:
+        return 0;
+      case 5:
+      case 12:
+        return getConstantType(node.content, context);
+      case 4:
+        return node.constType;
+      case 8:
+        let returnType = 3;
+        for (let i = 0; i < node.children.length; i++) {
+          const child = node.children[i];
+          if (isString(child) || isSymbol(child)) {
+            continue;
+          }
+          const childType = getConstantType(child, context);
+          if (childType === 0) {
+            return 0;
+          } else if (childType < returnType) {
+            returnType = childType;
+          }
+        }
+        return returnType;
+      default:
+        return 0;
+    }
+  }
+  const allowHoistedHelperSet = /* @__PURE__ */ new Set([
+    NORMALIZE_CLASS,
+    NORMALIZE_STYLE,
+    NORMALIZE_PROPS,
+    GUARD_REACTIVE_PROPS
+  ]);
+  function getConstantTypeOfHelperCall(value, context) {
+    if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {
+      const arg = value.arguments[0];
+      if (arg.type === 4) {
+        return getConstantType(arg, context);
+      } else if (arg.type === 14) {
+        return getConstantTypeOfHelperCall(arg, context);
+      }
+    }
+    return 0;
+  }
+  function getGeneratedPropsConstantType(node, context) {
+    let returnType = 3;
+    const props = getNodeProps(node);
+    if (props && props.type === 15) {
+      const { properties } = props;
+      for (let i = 0; i < properties.length; i++) {
+        const { key, value } = properties[i];
+        const keyType = getConstantType(key, context);
+        if (keyType === 0) {
+          return keyType;
+        }
+        if (keyType < returnType) {
+          returnType = keyType;
+        }
+        let valueType;
+        if (value.type === 4) {
+          valueType = getConstantType(value, context);
+        } else if (value.type === 14) {
+          valueType = getConstantTypeOfHelperCall(value, context);
+        } else {
+          valueType = 0;
+        }
+        if (valueType === 0) {
+          return valueType;
+        }
+        if (valueType < returnType) {
+          returnType = valueType;
+        }
+      }
+    }
+    return returnType;
+  }
+  function getNodeProps(node) {
+    const codegenNode = node.codegenNode;
+    if (codegenNode.type === 13) {
+      return codegenNode.props;
+    }
+  }
+  function getPatchFlag(node) {
+    const flag = node.patchFlag;
+    return flag ? parseInt(flag, 10) : void 0;
+  }
+
+  function createTransformContext(root, {
+    filename = "",
+    prefixIdentifiers = false,
+    hoistStatic: hoistStatic2 = false,
+    cacheHandlers = false,
+    nodeTransforms = [],
+    directiveTransforms = {},
+    transformHoist = null,
+    isBuiltInComponent = NOOP,
+    isCustomElement = NOOP,
+    expressionPlugins = [],
+    scopeId = null,
+    slotted = true,
+    ssr = false,
+    inSSR = false,
+    ssrCssVars = ``,
+    bindingMetadata = EMPTY_OBJ,
+    inline = false,
+    isTS = false,
+    onError = defaultOnError,
+    onWarn = defaultOnWarn,
+    compatConfig
+  }) {
+    const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/);
+    const context = {
+      // options
+      selfName: nameMatch && capitalize(camelize(nameMatch[1])),
+      prefixIdentifiers,
+      hoistStatic: hoistStatic2,
+      cacheHandlers,
+      nodeTransforms,
+      directiveTransforms,
+      transformHoist,
+      isBuiltInComponent,
+      isCustomElement,
+      expressionPlugins,
+      scopeId,
+      slotted,
+      ssr,
+      inSSR,
+      ssrCssVars,
+      bindingMetadata,
+      inline,
+      isTS,
+      onError,
+      onWarn,
+      compatConfig,
+      // state
+      root,
+      helpers: /* @__PURE__ */ new Map(),
+      components: /* @__PURE__ */ new Set(),
+      directives: /* @__PURE__ */ new Set(),
+      hoists: [],
+      imports: [],
+      constantCache: /* @__PURE__ */ new Map(),
+      temps: 0,
+      cached: 0,
+      identifiers: /* @__PURE__ */ Object.create(null),
+      scopes: {
+        vFor: 0,
+        vSlot: 0,
+        vPre: 0,
+        vOnce: 0
+      },
+      parent: null,
+      currentNode: root,
+      childIndex: 0,
+      inVOnce: false,
+      // methods
+      helper(name) {
+        const count = context.helpers.get(name) || 0;
+        context.helpers.set(name, count + 1);
+        return name;
+      },
+      removeHelper(name) {
+        const count = context.helpers.get(name);
+        if (count) {
+          const currentCount = count - 1;
+          if (!currentCount) {
+            context.helpers.delete(name);
+          } else {
+            context.helpers.set(name, currentCount);
+          }
+        }
+      },
+      helperString(name) {
+        return `_${helperNameMap[context.helper(name)]}`;
+      },
+      replaceNode(node) {
+        {
+          if (!context.currentNode) {
+            throw new Error(`Node being replaced is already removed.`);
+          }
+          if (!context.parent) {
+            throw new Error(`Cannot replace root node.`);
+          }
+        }
+        context.parent.children[context.childIndex] = context.currentNode = node;
+      },
+      removeNode(node) {
+        if (!context.parent) {
+          throw new Error(`Cannot remove root node.`);
+        }
+        const list = context.parent.children;
+        const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;
+        if (removalIndex < 0) {
+          throw new Error(`node being removed is not a child of current parent`);
+        }
+        if (!node || node === context.currentNode) {
+          context.currentNode = null;
+          context.onNodeRemoved();
+        } else {
+          if (context.childIndex > removalIndex) {
+            context.childIndex--;
+            context.onNodeRemoved();
+          }
+        }
+        context.parent.children.splice(removalIndex, 1);
+      },
+      onNodeRemoved: () => {
+      },
+      addIdentifiers(exp) {
+      },
+      removeIdentifiers(exp) {
+      },
+      hoist(exp) {
+        if (isString(exp))
+          exp = createSimpleExpression(exp);
+        context.hoists.push(exp);
+        const identifier = createSimpleExpression(
+          `_hoisted_${context.hoists.length}`,
+          false,
+          exp.loc,
+          2
+        );
+        identifier.hoisted = exp;
+        return identifier;
+      },
+      cache(exp, isVNode = false) {
+        return createCacheExpression(context.cached++, exp, isVNode);
+      }
+    };
+    {
+      context.filters = /* @__PURE__ */ new Set();
+    }
+    return context;
+  }
+  function transform(root, options) {
+    const context = createTransformContext(root, options);
+    traverseNode(root, context);
+    if (options.hoistStatic) {
+      hoistStatic(root, context);
+    }
+    if (!options.ssr) {
+      createRootCodegen(root, context);
+    }
+    root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);
+    root.components = [...context.components];
+    root.directives = [...context.directives];
+    root.imports = context.imports;
+    root.hoists = context.hoists;
+    root.temps = context.temps;
+    root.cached = context.cached;
+    {
+      root.filters = [...context.filters];
+    }
+  }
+  function createRootCodegen(root, context) {
+    const { helper } = context;
+    const { children } = root;
+    if (children.length === 1) {
+      const child = children[0];
+      if (isSingleElementRoot(root, child) && child.codegenNode) {
+        const codegenNode = child.codegenNode;
+        if (codegenNode.type === 13) {
+          convertToBlock(codegenNode, context);
+        }
+        root.codegenNode = codegenNode;
+      } else {
+        root.codegenNode = child;
+      }
+    } else if (children.length > 1) {
+      let patchFlag = 64;
+      let patchFlagText = PatchFlagNames[64];
+      if (children.filter((c) => c.type !== 3).length === 1) {
+        patchFlag |= 2048;
+        patchFlagText += `, ${PatchFlagNames[2048]}`;
+      }
+      root.codegenNode = createVNodeCall(
+        context,
+        helper(FRAGMENT),
+        void 0,
+        root.children,
+        patchFlag + (` /* ${patchFlagText} */` ),
+        void 0,
+        void 0,
+        true,
+        void 0,
+        false
+        /* isComponent */
+      );
+    } else ;
+  }
+  function traverseChildren(parent, context) {
+    let i = 0;
+    const nodeRemoved = () => {
+      i--;
+    };
+    for (; i < parent.children.length; i++) {
+      const child = parent.children[i];
+      if (isString(child))
+        continue;
+      context.parent = parent;
+      context.childIndex = i;
+      context.onNodeRemoved = nodeRemoved;
+      traverseNode(child, context);
+    }
+  }
+  function traverseNode(node, context) {
+    context.currentNode = node;
+    const { nodeTransforms } = context;
+    const exitFns = [];
+    for (let i2 = 0; i2 < nodeTransforms.length; i2++) {
+      const onExit = nodeTransforms[i2](node, context);
+      if (onExit) {
+        if (isArray(onExit)) {
+          exitFns.push(...onExit);
+        } else {
+          exitFns.push(onExit);
+        }
+      }
+      if (!context.currentNode) {
+        return;
+      } else {
+        node = context.currentNode;
+      }
+    }
+    switch (node.type) {
+      case 3:
+        if (!context.ssr) {
+          context.helper(CREATE_COMMENT);
+        }
+        break;
+      case 5:
+        if (!context.ssr) {
+          context.helper(TO_DISPLAY_STRING);
+        }
+        break;
+      case 9:
+        for (let i2 = 0; i2 < node.branches.length; i2++) {
+          traverseNode(node.branches[i2], context);
+        }
+        break;
+      case 10:
+      case 11:
+      case 1:
+      case 0:
+        traverseChildren(node, context);
+        break;
+    }
+    context.currentNode = node;
+    let i = exitFns.length;
+    while (i--) {
+      exitFns[i]();
+    }
+  }
+  function createStructuralDirectiveTransform(name, fn) {
+    const matches = isString(name) ? (n) => n === name : (n) => name.test(n);
+    return (node, context) => {
+      if (node.type === 1) {
+        const { props } = node;
+        if (node.tagType === 3 && props.some(isVSlot)) {
+          return;
+        }
+        const exitFns = [];
+        for (let i = 0; i < props.length; i++) {
+          const prop = props[i];
+          if (prop.type === 7 && matches(prop.name)) {
+            props.splice(i, 1);
+            i--;
+            const onExit = fn(node, prop, context);
+            if (onExit)
+              exitFns.push(onExit);
+          }
+        }
+        return exitFns;
+      }
+    };
+  }
+
+  const PURE_ANNOTATION = `/*#__PURE__*/`;
+  const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
+  function createCodegenContext(ast, {
+    mode = "function",
+    prefixIdentifiers = mode === "module",
+    sourceMap = false,
+    filename = `template.vue.html`,
+    scopeId = null,
+    optimizeImports = false,
+    runtimeGlobalName = `Vue`,
+    runtimeModuleName = `vue`,
+    ssrRuntimeModuleName = "vue/server-renderer",
+    ssr = false,
+    isTS = false,
+    inSSR = false
+  }) {
+    const context = {
+      mode,
+      prefixIdentifiers,
+      sourceMap,
+      filename,
+      scopeId,
+      optimizeImports,
+      runtimeGlobalName,
+      runtimeModuleName,
+      ssrRuntimeModuleName,
+      ssr,
+      isTS,
+      inSSR,
+      source: ast.loc.source,
+      code: ``,
+      column: 1,
+      line: 1,
+      offset: 0,
+      indentLevel: 0,
+      pure: false,
+      map: void 0,
+      helper(key) {
+        return `_${helperNameMap[key]}`;
+      },
+      push(code, node) {
+        context.code += code;
+      },
+      indent() {
+        newline(++context.indentLevel);
+      },
+      deindent(withoutNewLine = false) {
+        if (withoutNewLine) {
+          --context.indentLevel;
+        } else {
+          newline(--context.indentLevel);
+        }
+      },
+      newline() {
+        newline(context.indentLevel);
+      }
+    };
+    function newline(n) {
+      context.push("\n" + `  `.repeat(n));
+    }
+    return context;
+  }
+  function generate(ast, options = {}) {
+    const context = createCodegenContext(ast, options);
+    if (options.onContextCreated)
+      options.onContextCreated(context);
+    const {
+      mode,
+      push,
+      prefixIdentifiers,
+      indent,
+      deindent,
+      newline,
+      scopeId,
+      ssr
+    } = context;
+    const helpers = Array.from(ast.helpers);
+    const hasHelpers = helpers.length > 0;
+    const useWithBlock = !prefixIdentifiers && mode !== "module";
+    const isSetupInlined = false;
+    const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;
+    {
+      genFunctionPreamble(ast, preambleContext);
+    }
+    const functionName = ssr ? `ssrRender` : `render`;
+    const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"];
+    const signature = args.join(", ");
+    {
+      push(`function ${functionName}(${signature}) {`);
+    }
+    indent();
+    if (useWithBlock) {
+      push(`with (_ctx) {`);
+      indent();
+      if (hasHelpers) {
+        push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`);
+        push(`
+`);
+        newline();
+      }
+    }
+    if (ast.components.length) {
+      genAssets(ast.components, "component", context);
+      if (ast.directives.length || ast.temps > 0) {
+        newline();
+      }
+    }
+    if (ast.directives.length) {
+      genAssets(ast.directives, "directive", context);
+      if (ast.temps > 0) {
+        newline();
+      }
+    }
+    if (ast.filters && ast.filters.length) {
+      newline();
+      genAssets(ast.filters, "filter", context);
+      newline();
+    }
+    if (ast.temps > 0) {
+      push(`let `);
+      for (let i = 0; i < ast.temps; i++) {
+        push(`${i > 0 ? `, ` : ``}_temp${i}`);
+      }
+    }
+    if (ast.components.length || ast.directives.length || ast.temps) {
+      push(`
+`);
+      newline();
+    }
+    if (!ssr) {
+      push(`return `);
+    }
+    if (ast.codegenNode) {
+      genNode(ast.codegenNode, context);
+    } else {
+      push(`null`);
+    }
+    if (useWithBlock) {
+      deindent();
+      push(`}`);
+    }
+    deindent();
+    push(`}`);
+    return {
+      ast,
+      code: context.code,
+      preamble: isSetupInlined ? preambleContext.code : ``,
+      // SourceMapGenerator does have toJSON() method but it's not in the types
+      map: context.map ? context.map.toJSON() : void 0
+    };
+  }
+  function genFunctionPreamble(ast, context) {
+    const {
+      ssr,
+      prefixIdentifiers,
+      push,
+      newline,
+      runtimeModuleName,
+      runtimeGlobalName,
+      ssrRuntimeModuleName
+    } = context;
+    const VueBinding = runtimeGlobalName;
+    const helpers = Array.from(ast.helpers);
+    if (helpers.length > 0) {
+      {
+        push(`const _Vue = ${VueBinding}
+`);
+        if (ast.hoists.length) {
+          const staticHelpers = [
+            CREATE_VNODE,
+            CREATE_ELEMENT_VNODE,
+            CREATE_COMMENT,
+            CREATE_TEXT,
+            CREATE_STATIC
+          ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", ");
+          push(`const { ${staticHelpers} } = _Vue
+`);
+        }
+      }
+    }
+    genHoists(ast.hoists, context);
+    newline();
+    push(`return `);
+  }
+  function genAssets(assets, type, { helper, push, newline, isTS }) {
+    const resolver = helper(
+      type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE
+    );
+    for (let i = 0; i < assets.length; i++) {
+      let id = assets[i];
+      const maybeSelfReference = id.endsWith("__self");
+      if (maybeSelfReference) {
+        id = id.slice(0, -6);
+      }
+      push(
+        `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`
+      );
+      if (i < assets.length - 1) {
+        newline();
+      }
+    }
+  }
+  function genHoists(hoists, context) {
+    if (!hoists.length) {
+      return;
+    }
+    context.pure = true;
+    const { push, newline, helper, scopeId, mode } = context;
+    newline();
+    for (let i = 0; i < hoists.length; i++) {
+      const exp = hoists[i];
+      if (exp) {
+        push(
+          `const _hoisted_${i + 1} = ${``}`
+        );
+        genNode(exp, context);
+        newline();
+      }
+    }
+    context.pure = false;
+  }
+  function isText(n) {
+    return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;
+  }
+  function genNodeListAsArray(nodes, context) {
+    const multilines = nodes.length > 3 || nodes.some((n) => isArray(n) || !isText(n));
+    context.push(`[`);
+    multilines && context.indent();
+    genNodeList(nodes, context, multilines);
+    multilines && context.deindent();
+    context.push(`]`);
+  }
+  function genNodeList(nodes, context, multilines = false, comma = true) {
+    const { push, newline } = context;
+    for (let i = 0; i < nodes.length; i++) {
+      const node = nodes[i];
+      if (isString(node)) {
+        push(node);
+      } else if (isArray(node)) {
+        genNodeListAsArray(node, context);
+      } else {
+        genNode(node, context);
+      }
+      if (i < nodes.length - 1) {
+        if (multilines) {
+          comma && push(",");
+          newline();
+        } else {
+          comma && push(", ");
+        }
+      }
+    }
+  }
+  function genNode(node, context) {
+    if (isString(node)) {
+      context.push(node);
+      return;
+    }
+    if (isSymbol(node)) {
+      context.push(context.helper(node));
+      return;
+    }
+    switch (node.type) {
+      case 1:
+      case 9:
+      case 11:
+        assert(
+          node.codegenNode != null,
+          `Codegen node is missing for element/if/for node. Apply appropriate transforms first.`
+        );
+        genNode(node.codegenNode, context);
+        break;
+      case 2:
+        genText(node, context);
+        break;
+      case 4:
+        genExpression(node, context);
+        break;
+      case 5:
+        genInterpolation(node, context);
+        break;
+      case 12:
+        genNode(node.codegenNode, context);
+        break;
+      case 8:
+        genCompoundExpression(node, context);
+        break;
+      case 3:
+        genComment(node, context);
+        break;
+      case 13:
+        genVNodeCall(node, context);
+        break;
+      case 14:
+        genCallExpression(node, context);
+        break;
+      case 15:
+        genObjectExpression(node, context);
+        break;
+      case 17:
+        genArrayExpression(node, context);
+        break;
+      case 18:
+        genFunctionExpression(node, context);
+        break;
+      case 19:
+        genConditionalExpression(node, context);
+        break;
+      case 20:
+        genCacheExpression(node, context);
+        break;
+      case 21:
+        genNodeList(node.body, context, true, false);
+        break;
+      case 22:
+        break;
+      case 23:
+        break;
+      case 24:
+        break;
+      case 25:
+        break;
+      case 26:
+        break;
+      case 10:
+        break;
+      default:
+        {
+          assert(false, `unhandled codegen node type: ${node.type}`);
+          const exhaustiveCheck = node;
+          return exhaustiveCheck;
+        }
+    }
+  }
+  function genText(node, context) {
+    context.push(JSON.stringify(node.content), node);
+  }
+  function genExpression(node, context) {
+    const { content, isStatic } = node;
+    context.push(isStatic ? JSON.stringify(content) : content, node);
+  }
+  function genInterpolation(node, context) {
+    const { push, helper, pure } = context;
+    if (pure)
+      push(PURE_ANNOTATION);
+    push(`${helper(TO_DISPLAY_STRING)}(`);
+    genNode(node.content, context);
+    push(`)`);
+  }
+  function genCompoundExpression(node, context) {
+    for (let i = 0; i < node.children.length; i++) {
+      const child = node.children[i];
+      if (isString(child)) {
+        context.push(child);
+      } else {
+        genNode(child, context);
+      }
+    }
+  }
+  function genExpressionAsPropertyKey(node, context) {
+    const { push } = context;
+    if (node.type === 8) {
+      push(`[`);
+      genCompoundExpression(node, context);
+      push(`]`);
+    } else if (node.isStatic) {
+      const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);
+      push(text, node);
+    } else {
+      push(`[${node.content}]`, node);
+    }
+  }
+  function genComment(node, context) {
+    const { push, helper, pure } = context;
+    if (pure) {
+      push(PURE_ANNOTATION);
+    }
+    push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);
+  }
+  function genVNodeCall(node, context) {
+    const { push, helper, pure } = context;
+    const {
+      tag,
+      props,
+      children,
+      patchFlag,
+      dynamicProps,
+      directives,
+      isBlock,
+      disableTracking,
+      isComponent
+    } = node;
+    if (directives) {
+      push(helper(WITH_DIRECTIVES) + `(`);
+    }
+    if (isBlock) {
+      push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
+    }
+    if (pure) {
+      push(PURE_ANNOTATION);
+    }
+    const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);
+    push(helper(callHelper) + `(`, node);
+    genNodeList(
+      genNullableArgs([tag, props, children, patchFlag, dynamicProps]),
+      context
+    );
+    push(`)`);
+    if (isBlock) {
+      push(`)`);
+    }
+    if (directives) {
+      push(`, `);
+      genNode(directives, context);
+      push(`)`);
+    }
+  }
+  function genNullableArgs(args) {
+    let i = args.length;
+    while (i--) {
+      if (args[i] != null)
+        break;
+    }
+    return args.slice(0, i + 1).map((arg) => arg || `null`);
+  }
+  function genCallExpression(node, context) {
+    const { push, helper, pure } = context;
+    const callee = isString(node.callee) ? node.callee : helper(node.callee);
+    if (pure) {
+      push(PURE_ANNOTATION);
+    }
+    push(callee + `(`, node);
+    genNodeList(node.arguments, context);
+    push(`)`);
+  }
+  function genObjectExpression(node, context) {
+    const { push, indent, deindent, newline } = context;
+    const { properties } = node;
+    if (!properties.length) {
+      push(`{}`, node);
+      return;
+    }
+    const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4);
+    push(multilines ? `{` : `{ `);
+    multilines && indent();
+    for (let i = 0; i < properties.length; i++) {
+      const { key, value } = properties[i];
+      genExpressionAsPropertyKey(key, context);
+      push(`: `);
+      genNode(value, context);
+      if (i < properties.length - 1) {
+        push(`,`);
+        newline();
+      }
+    }
+    multilines && deindent();
+    push(multilines ? `}` : ` }`);
+  }
+  function genArrayExpression(node, context) {
+    genNodeListAsArray(node.elements, context);
+  }
+  function genFunctionExpression(node, context) {
+    const { push, indent, deindent } = context;
+    const { params, returns, body, newline, isSlot } = node;
+    if (isSlot) {
+      push(`_${helperNameMap[WITH_CTX]}(`);
+    }
+    push(`(`, node);
+    if (isArray(params)) {
+      genNodeList(params, context);
+    } else if (params) {
+      genNode(params, context);
+    }
+    push(`) => `);
+    if (newline || body) {
+      push(`{`);
+      indent();
+    }
+    if (returns) {
+      if (newline) {
+        push(`return `);
+      }
+      if (isArray(returns)) {
+        genNodeListAsArray(returns, context);
+      } else {
+        genNode(returns, context);
+      }
+    } else if (body) {
+      genNode(body, context);
+    }
+    if (newline || body) {
+      deindent();
+      push(`}`);
+    }
+    if (isSlot) {
+      if (node.isNonScopedSlot) {
+        push(`, undefined, true`);
+      }
+      push(`)`);
+    }
+  }
+  function genConditionalExpression(node, context) {
+    const { test, consequent, alternate, newline: needNewline } = node;
+    const { push, indent, deindent, newline } = context;
+    if (test.type === 4) {
+      const needsParens = !isSimpleIdentifier(test.content);
+      needsParens && push(`(`);
+      genExpression(test, context);
+      needsParens && push(`)`);
+    } else {
+      push(`(`);
+      genNode(test, context);
+      push(`)`);
+    }
+    needNewline && indent();
+    context.indentLevel++;
+    needNewline || push(` `);
+    push(`? `);
+    genNode(consequent, context);
+    context.indentLevel--;
+    needNewline && newline();
+    needNewline || push(` `);
+    push(`: `);
+    const isNested = alternate.type === 19;
+    if (!isNested) {
+      context.indentLevel++;
+    }
+    genNode(alternate, context);
+    if (!isNested) {
+      context.indentLevel--;
+    }
+    needNewline && deindent(
+      true
+      /* without newline */
+    );
+  }
+  function genCacheExpression(node, context) {
+    const { push, helper, indent, deindent, newline } = context;
+    push(`_cache[${node.index}] || (`);
+    if (node.isVNode) {
+      indent();
+      push(`${helper(SET_BLOCK_TRACKING)}(-1),`);
+      newline();
+    }
+    push(`_cache[${node.index}] = `);
+    genNode(node.value, context);
+    if (node.isVNode) {
+      push(`,`);
+      newline();
+      push(`${helper(SET_BLOCK_TRACKING)}(1),`);
+      newline();
+      push(`_cache[${node.index}]`);
+      deindent();
+    }
+    push(`)`);
+  }
+
+  function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) {
+    {
+      return;
+    }
+  }
+  function isReferencedIdentifier(id, parent, parentStack) {
+    {
+      return false;
+    }
+  }
+  function isInDestructureAssignment(parent, parentStack) {
+    if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) {
+      let i = parentStack.length;
+      while (i--) {
+        const p = parentStack[i];
+        if (p.type === "AssignmentExpression") {
+          return true;
+        } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) {
+          break;
+        }
+      }
+    }
+    return false;
+  }
+  function walkFunctionParams(node, onIdent) {
+    for (const p of node.params) {
+      for (const id of extractIdentifiers(p)) {
+        onIdent(id);
+      }
+    }
+  }
+  function walkBlockDeclarations(block, onIdent) {
+    for (const stmt of block.body) {
+      if (stmt.type === "VariableDeclaration") {
+        if (stmt.declare)
+          continue;
+        for (const decl of stmt.declarations) {
+          for (const id of extractIdentifiers(decl.id)) {
+            onIdent(id);
+          }
+        }
+      } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") {
+        if (stmt.declare || !stmt.id)
+          continue;
+        onIdent(stmt.id);
+      }
+    }
+  }
+  function extractIdentifiers(param, nodes = []) {
+    switch (param.type) {
+      case "Identifier":
+        nodes.push(param);
+        break;
+      case "MemberExpression":
+        let object = param;
+        while (object.type === "MemberExpression") {
+          object = object.object;
+        }
+        nodes.push(object);
+        break;
+      case "ObjectPattern":
+        for (const prop of param.properties) {
+          if (prop.type === "RestElement") {
+            extractIdentifiers(prop.argument, nodes);
+          } else {
+            extractIdentifiers(prop.value, nodes);
+          }
+        }
+        break;
+      case "ArrayPattern":
+        param.elements.forEach((element) => {
+          if (element)
+            extractIdentifiers(element, nodes);
+        });
+        break;
+      case "RestElement":
+        extractIdentifiers(param.argument, nodes);
+        break;
+      case "AssignmentPattern":
+        extractIdentifiers(param.left, nodes);
+        break;
+    }
+    return nodes;
+  }
+  const isFunctionType = (node) => {
+    return /Function(?:Expression|Declaration)$|Method$/.test(node.type);
+  };
+  const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed;
+  const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;
+  const TS_NODE_TYPES = [
+    "TSAsExpression",
+    // foo as number
+    "TSTypeAssertion",
+    // (<number>foo)
+    "TSNonNullExpression",
+    // foo!
+    "TSInstantiationExpression",
+    // foo<string>
+    "TSSatisfiesExpression"
+    // foo satisfies T
+  ];
+
+  const prohibitedKeywordRE = new RegExp(
+    "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b"
+  );
+  const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
+  function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {
+    const exp = node.content;
+    if (!exp.trim()) {
+      return;
+    }
+    try {
+      new Function(
+        asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`
+      );
+    } catch (e) {
+      let message = e.message;
+      const keywordMatch = exp.replace(stripStringRE, "").match(prohibitedKeywordRE);
+      if (keywordMatch) {
+        message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`;
+      }
+      context.onError(
+        createCompilerError(
+          45,
+          node.loc,
+          void 0,
+          message
+        )
+      );
+    }
+  }
+
+  const transformExpression = (node, context) => {
+    if (node.type === 5) {
+      node.content = processExpression(
+        node.content,
+        context
+      );
+    } else if (node.type === 1) {
+      for (let i = 0; i < node.props.length; i++) {
+        const dir = node.props[i];
+        if (dir.type === 7 && dir.name !== "for") {
+          const exp = dir.exp;
+          const arg = dir.arg;
+          if (exp && exp.type === 4 && !(dir.name === "on" && arg)) {
+            dir.exp = processExpression(
+              exp,
+              context,
+              // slot args must be processed as function params
+              dir.name === "slot"
+            );
+          }
+          if (arg && arg.type === 4 && !arg.isStatic) {
+            dir.arg = processExpression(arg, context);
+          }
+        }
+      }
+    }
+  };
+  function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {
+    {
+      {
+        validateBrowserExpression(node, context, asParams, asRawStatements);
+      }
+      return node;
+    }
+  }
+  function stringifyExpression(exp) {
+    if (isString(exp)) {
+      return exp;
+    } else if (exp.type === 4) {
+      return exp.content;
+    } else {
+      return exp.children.map(stringifyExpression).join("");
+    }
+  }
+
+  const transformIf = createStructuralDirectiveTransform(
+    /^(if|else|else-if)$/,
+    (node, dir, context) => {
+      return processIf(node, dir, context, (ifNode, branch, isRoot) => {
+        const siblings = context.parent.children;
+        let i = siblings.indexOf(ifNode);
+        let key = 0;
+        while (i-- >= 0) {
+          const sibling = siblings[i];
+          if (sibling && sibling.type === 9) {
+            key += sibling.branches.length;
+          }
+        }
+        return () => {
+          if (isRoot) {
+            ifNode.codegenNode = createCodegenNodeForBranch(
+              branch,
+              key,
+              context
+            );
+          } else {
+            const parentCondition = getParentCondition(ifNode.codegenNode);
+            parentCondition.alternate = createCodegenNodeForBranch(
+              branch,
+              key + ifNode.branches.length - 1,
+              context
+            );
+          }
+        };
+      });
+    }
+  );
+  function processIf(node, dir, context, processCodegen) {
+    if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) {
+      const loc = dir.exp ? dir.exp.loc : node.loc;
+      context.onError(
+        createCompilerError(28, dir.loc)
+      );
+      dir.exp = createSimpleExpression(`true`, false, loc);
+    }
+    if (dir.exp) {
+      validateBrowserExpression(dir.exp, context);
+    }
+    if (dir.name === "if") {
+      const branch = createIfBranch(node, dir);
+      const ifNode = {
+        type: 9,
+        loc: node.loc,
+        branches: [branch]
+      };
+      context.replaceNode(ifNode);
+      if (processCodegen) {
+        return processCodegen(ifNode, branch, true);
+      }
+    } else {
+      const siblings = context.parent.children;
+      const comments = [];
+      let i = siblings.indexOf(node);
+      while (i-- >= -1) {
+        const sibling = siblings[i];
+        if (sibling && sibling.type === 3) {
+          context.removeNode(sibling);
+          comments.unshift(sibling);
+          continue;
+        }
+        if (sibling && sibling.type === 2 && !sibling.content.trim().length) {
+          context.removeNode(sibling);
+          continue;
+        }
+        if (sibling && sibling.type === 9) {
+          if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
+            context.onError(
+              createCompilerError(30, node.loc)
+            );
+          }
+          context.removeNode();
+          const branch = createIfBranch(node, dir);
+          if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition>
+          !(context.parent && context.parent.type === 1 && isBuiltInType(context.parent.tag, "transition"))) {
+            branch.children = [...comments, ...branch.children];
+          }
+          {
+            const key = branch.userKey;
+            if (key) {
+              sibling.branches.forEach(({ userKey }) => {
+                if (isSameKey(userKey, key)) {
+                  context.onError(
+                    createCompilerError(
+                      29,
+                      branch.userKey.loc
+                    )
+                  );
+                }
+              });
+            }
+          }
+          sibling.branches.push(branch);
+          const onExit = processCodegen && processCodegen(sibling, branch, false);
+          traverseNode(branch, context);
+          if (onExit)
+            onExit();
+          context.currentNode = null;
+        } else {
+          context.onError(
+            createCompilerError(30, node.loc)
+          );
+        }
+        break;
+      }
+    }
+  }
+  function createIfBranch(node, dir) {
+    const isTemplateIf = node.tagType === 3;
+    return {
+      type: 10,
+      loc: node.loc,
+      condition: dir.name === "else" ? void 0 : dir.exp,
+      children: isTemplateIf && !findDir(node, "for") ? node.children : [node],
+      userKey: findProp(node, `key`),
+      isTemplateIf
+    };
+  }
+  function createCodegenNodeForBranch(branch, keyIndex, context) {
+    if (branch.condition) {
+      return createConditionalExpression(
+        branch.condition,
+        createChildrenCodegenNode(branch, keyIndex, context),
+        // make sure to pass in asBlock: true so that the comment node call
+        // closes the current block.
+        createCallExpression(context.helper(CREATE_COMMENT), [
+          '"v-if"' ,
+          "true"
+        ])
+      );
+    } else {
+      return createChildrenCodegenNode(branch, keyIndex, context);
+    }
+  }
+  function createChildrenCodegenNode(branch, keyIndex, context) {
+    const { helper } = context;
+    const keyProperty = createObjectProperty(
+      `key`,
+      createSimpleExpression(
+        `${keyIndex}`,
+        false,
+        locStub,
+        2
+      )
+    );
+    const { children } = branch;
+    const firstChild = children[0];
+    const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;
+    if (needFragmentWrapper) {
+      if (children.length === 1 && firstChild.type === 11) {
+        const vnodeCall = firstChild.codegenNode;
+        injectProp(vnodeCall, keyProperty, context);
+        return vnodeCall;
+      } else {
+        let patchFlag = 64;
+        let patchFlagText = PatchFlagNames[64];
+        if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) {
+          patchFlag |= 2048;
+          patchFlagText += `, ${PatchFlagNames[2048]}`;
+        }
+        return createVNodeCall(
+          context,
+          helper(FRAGMENT),
+          createObjectExpression([keyProperty]),
+          children,
+          patchFlag + (` /* ${patchFlagText} */` ),
+          void 0,
+          void 0,
+          true,
+          false,
+          false,
+          branch.loc
+        );
+      }
+    } else {
+      const ret = firstChild.codegenNode;
+      const vnodeCall = getMemoedVNodeCall(ret);
+      if (vnodeCall.type === 13) {
+        convertToBlock(vnodeCall, context);
+      }
+      injectProp(vnodeCall, keyProperty, context);
+      return ret;
+    }
+  }
+  function isSameKey(a, b) {
+    if (!a || a.type !== b.type) {
+      return false;
+    }
+    if (a.type === 6) {
+      if (a.value.content !== b.value.content) {
+        return false;
+      }
+    } else {
+      const exp = a.exp;
+      const branchExp = b.exp;
+      if (exp.type !== branchExp.type) {
+        return false;
+      }
+      if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {
+        return false;
+      }
+    }
+    return true;
+  }
+  function getParentCondition(node) {
+    while (true) {
+      if (node.type === 19) {
+        if (node.alternate.type === 19) {
+          node = node.alternate;
+        } else {
+          return node;
+        }
+      } else if (node.type === 20) {
+        node = node.value;
+      }
+    }
+  }
+
+  const transformFor = createStructuralDirectiveTransform(
+    "for",
+    (node, dir, context) => {
+      const { helper, removeHelper } = context;
+      return processFor(node, dir, context, (forNode) => {
+        const renderExp = createCallExpression(helper(RENDER_LIST), [
+          forNode.source
+        ]);
+        const isTemplate = isTemplateNode(node);
+        const memo = findDir(node, "memo");
+        const keyProp = findProp(node, `key`);
+        const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);
+        const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;
+        const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
+        const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
+        forNode.codegenNode = createVNodeCall(
+          context,
+          helper(FRAGMENT),
+          void 0,
+          renderExp,
+          fragmentFlag + (` /* ${PatchFlagNames[fragmentFlag]} */` ),
+          void 0,
+          void 0,
+          true,
+          !isStableFragment,
+          false,
+          node.loc
+        );
+        return () => {
+          let childBlock;
+          const { children } = forNode;
+          if (isTemplate) {
+            node.children.some((c) => {
+              if (c.type === 1) {
+                const key = findProp(c, "key");
+                if (key) {
+                  context.onError(
+                    createCompilerError(
+                      33,
+                      key.loc
+                    )
+                  );
+                  return true;
+                }
+              }
+            });
+          }
+          const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;
+          const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;
+          if (slotOutlet) {
+            childBlock = slotOutlet.codegenNode;
+            if (isTemplate && keyProperty) {
+              injectProp(childBlock, keyProperty, context);
+            }
+          } else if (needFragmentWrapper) {
+            childBlock = createVNodeCall(
+              context,
+              helper(FRAGMENT),
+              keyProperty ? createObjectExpression([keyProperty]) : void 0,
+              node.children,
+              64 + (` /* ${PatchFlagNames[64]} */` ),
+              void 0,
+              void 0,
+              true,
+              void 0,
+              false
+              /* isComponent */
+            );
+          } else {
+            childBlock = children[0].codegenNode;
+            if (isTemplate && keyProperty) {
+              injectProp(childBlock, keyProperty, context);
+            }
+            if (childBlock.isBlock !== !isStableFragment) {
+              if (childBlock.isBlock) {
+                removeHelper(OPEN_BLOCK);
+                removeHelper(
+                  getVNodeBlockHelper(context.inSSR, childBlock.isComponent)
+                );
+              } else {
+                removeHelper(
+                  getVNodeHelper(context.inSSR, childBlock.isComponent)
+                );
+              }
+            }
+            childBlock.isBlock = !isStableFragment;
+            if (childBlock.isBlock) {
+              helper(OPEN_BLOCK);
+              helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+            } else {
+              helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+            }
+          }
+          if (memo) {
+            const loop = createFunctionExpression(
+              createForLoopParams(forNode.parseResult, [
+                createSimpleExpression(`_cached`)
+              ])
+            );
+            loop.body = createBlockStatement([
+              createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
+              createCompoundExpression([
+                `if (_cached`,
+                ...keyExp ? [` && _cached.key === `, keyExp] : [],
+                ` && ${context.helperString(
+                IS_MEMO_SAME
+              )}(_cached, _memo)) return _cached`
+              ]),
+              createCompoundExpression([`const _item = `, childBlock]),
+              createSimpleExpression(`_item.memo = _memo`),
+              createSimpleExpression(`return _item`)
+            ]);
+            renderExp.arguments.push(
+              loop,
+              createSimpleExpression(`_cache`),
+              createSimpleExpression(String(context.cached++))
+            );
+          } else {
+            renderExp.arguments.push(
+              createFunctionExpression(
+                createForLoopParams(forNode.parseResult),
+                childBlock,
+                true
+                /* force newline */
+              )
+            );
+          }
+        };
+      });
+    }
+  );
+  function processFor(node, dir, context, processCodegen) {
+    if (!dir.exp) {
+      context.onError(
+        createCompilerError(31, dir.loc)
+      );
+      return;
+    }
+    const parseResult = parseForExpression(
+      // can only be simple expression because vFor transform is applied
+      // before expression transform.
+      dir.exp,
+      context
+    );
+    if (!parseResult) {
+      context.onError(
+        createCompilerError(32, dir.loc)
+      );
+      return;
+    }
+    const { addIdentifiers, removeIdentifiers, scopes } = context;
+    const { source, value, key, index } = parseResult;
+    const forNode = {
+      type: 11,
+      loc: dir.loc,
+      source,
+      valueAlias: value,
+      keyAlias: key,
+      objectIndexAlias: index,
+      parseResult,
+      children: isTemplateNode(node) ? node.children : [node]
+    };
+    context.replaceNode(forNode);
+    scopes.vFor++;
+    const onExit = processCodegen && processCodegen(forNode);
+    return () => {
+      scopes.vFor--;
+      if (onExit)
+        onExit();
+    };
+  }
+  const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+  const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+  const stripParensRE = /^\(|\)$/g;
+  function parseForExpression(input, context) {
+    const loc = input.loc;
+    const exp = input.content;
+    const inMatch = exp.match(forAliasRE);
+    if (!inMatch)
+      return;
+    const [, LHS, RHS] = inMatch;
+    const result = {
+      source: createAliasExpression(
+        loc,
+        RHS.trim(),
+        exp.indexOf(RHS, LHS.length)
+      ),
+      value: void 0,
+      key: void 0,
+      index: void 0
+    };
+    {
+      validateBrowserExpression(result.source, context);
+    }
+    let valueContent = LHS.trim().replace(stripParensRE, "").trim();
+    const trimmedOffset = LHS.indexOf(valueContent);
+    const iteratorMatch = valueContent.match(forIteratorRE);
+    if (iteratorMatch) {
+      valueContent = valueContent.replace(forIteratorRE, "").trim();
+      const keyContent = iteratorMatch[1].trim();
+      let keyOffset;
+      if (keyContent) {
+        keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
+        result.key = createAliasExpression(loc, keyContent, keyOffset);
+        {
+          validateBrowserExpression(
+            result.key,
+            context,
+            true
+          );
+        }
+      }
+      if (iteratorMatch[2]) {
+        const indexContent = iteratorMatch[2].trim();
+        if (indexContent) {
+          result.index = createAliasExpression(
+            loc,
+            indexContent,
+            exp.indexOf(
+              indexContent,
+              result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length
+            )
+          );
+          {
+            validateBrowserExpression(
+              result.index,
+              context,
+              true
+            );
+          }
+        }
+      }
+    }
+    if (valueContent) {
+      result.value = createAliasExpression(loc, valueContent, trimmedOffset);
+      {
+        validateBrowserExpression(
+          result.value,
+          context,
+          true
+        );
+      }
+    }
+    return result;
+  }
+  function createAliasExpression(range, content, offset) {
+    return createSimpleExpression(
+      content,
+      false,
+      getInnerRange(range, offset, content.length)
+    );
+  }
+  function createForLoopParams({ value, key, index }, memoArgs = []) {
+    return createParamsList([value, key, index, ...memoArgs]);
+  }
+  function createParamsList(args) {
+    let i = args.length;
+    while (i--) {
+      if (args[i])
+        break;
+    }
+    return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));
+  }
+
+  const defaultFallback = createSimpleExpression(`undefined`, false);
+  const trackSlotScopes = (node, context) => {
+    if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {
+      const vSlot = findDir(node, "slot");
+      if (vSlot) {
+        vSlot.exp;
+        context.scopes.vSlot++;
+        return () => {
+          context.scopes.vSlot--;
+        };
+      }
+    }
+  };
+  const trackVForSlotScopes = (node, context) => {
+    let vFor;
+    if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) {
+      const result = vFor.parseResult = parseForExpression(
+        vFor.exp,
+        context
+      );
+      if (result) {
+        const { value, key, index } = result;
+        const { addIdentifiers, removeIdentifiers } = context;
+        value && addIdentifiers(value);
+        key && addIdentifiers(key);
+        index && addIdentifiers(index);
+        return () => {
+          value && removeIdentifiers(value);
+          key && removeIdentifiers(key);
+          index && removeIdentifiers(index);
+        };
+      }
+    }
+  };
+  const buildClientSlotFn = (props, children, loc) => createFunctionExpression(
+    props,
+    children,
+    false,
+    true,
+    children.length ? children[0].loc : loc
+  );
+  function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
+    context.helper(WITH_CTX);
+    const { children, loc } = node;
+    const slotsProperties = [];
+    const dynamicSlots = [];
+    let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
+    const onComponentSlot = findDir(node, "slot", true);
+    if (onComponentSlot) {
+      const { arg, exp } = onComponentSlot;
+      if (arg && !isStaticExp(arg)) {
+        hasDynamicSlots = true;
+      }
+      slotsProperties.push(
+        createObjectProperty(
+          arg || createSimpleExpression("default", true),
+          buildSlotFn(exp, children, loc)
+        )
+      );
+    }
+    let hasTemplateSlots = false;
+    let hasNamedDefaultSlot = false;
+    const implicitDefaultChildren = [];
+    const seenSlotNames = /* @__PURE__ */ new Set();
+    let conditionalBranchIndex = 0;
+    for (let i = 0; i < children.length; i++) {
+      const slotElement = children[i];
+      let slotDir;
+      if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) {
+        if (slotElement.type !== 3) {
+          implicitDefaultChildren.push(slotElement);
+        }
+        continue;
+      }
+      if (onComponentSlot) {
+        context.onError(
+          createCompilerError(37, slotDir.loc)
+        );
+        break;
+      }
+      hasTemplateSlots = true;
+      const { children: slotChildren, loc: slotLoc } = slotElement;
+      const {
+        arg: slotName = createSimpleExpression(`default`, true),
+        exp: slotProps,
+        loc: dirLoc
+      } = slotDir;
+      let staticSlotName;
+      if (isStaticExp(slotName)) {
+        staticSlotName = slotName ? slotName.content : `default`;
+      } else {
+        hasDynamicSlots = true;
+      }
+      const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);
+      let vIf;
+      let vElse;
+      let vFor;
+      if (vIf = findDir(slotElement, "if")) {
+        hasDynamicSlots = true;
+        dynamicSlots.push(
+          createConditionalExpression(
+            vIf.exp,
+            buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),
+            defaultFallback
+          )
+        );
+      } else if (vElse = findDir(
+        slotElement,
+        /^else(-if)?$/,
+        true
+        /* allowEmpty */
+      )) {
+        let j = i;
+        let prev;
+        while (j--) {
+          prev = children[j];
+          if (prev.type !== 3) {
+            break;
+          }
+        }
+        if (prev && isTemplateNode(prev) && findDir(prev, "if")) {
+          children.splice(i, 1);
+          i--;
+          let conditional = dynamicSlots[dynamicSlots.length - 1];
+          while (conditional.alternate.type === 19) {
+            conditional = conditional.alternate;
+          }
+          conditional.alternate = vElse.exp ? createConditionalExpression(
+            vElse.exp,
+            buildDynamicSlot(
+              slotName,
+              slotFunction,
+              conditionalBranchIndex++
+            ),
+            defaultFallback
+          ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);
+        } else {
+          context.onError(
+            createCompilerError(30, vElse.loc)
+          );
+        }
+      } else if (vFor = findDir(slotElement, "for")) {
+        hasDynamicSlots = true;
+        const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
+        if (parseResult) {
+          dynamicSlots.push(
+            createCallExpression(context.helper(RENDER_LIST), [
+              parseResult.source,
+              createFunctionExpression(
+                createForLoopParams(parseResult),
+                buildDynamicSlot(slotName, slotFunction),
+                true
+                /* force newline */
+              )
+            ])
+          );
+        } else {
+          context.onError(
+            createCompilerError(32, vFor.loc)
+          );
+        }
+      } else {
+        if (staticSlotName) {
+          if (seenSlotNames.has(staticSlotName)) {
+            context.onError(
+              createCompilerError(
+                38,
+                dirLoc
+              )
+            );
+            continue;
+          }
+          seenSlotNames.add(staticSlotName);
+          if (staticSlotName === "default") {
+            hasNamedDefaultSlot = true;
+          }
+        }
+        slotsProperties.push(createObjectProperty(slotName, slotFunction));
+      }
+    }
+    if (!onComponentSlot) {
+      const buildDefaultSlotProperty = (props, children2) => {
+        const fn = buildSlotFn(props, children2, loc);
+        if (context.compatConfig) {
+          fn.isNonScopedSlot = true;
+        }
+        return createObjectProperty(`default`, fn);
+      };
+      if (!hasTemplateSlots) {
+        slotsProperties.push(buildDefaultSlotProperty(void 0, children));
+      } else if (implicitDefaultChildren.length && // #3766
+      // with whitespace: 'preserve', whitespaces between slots will end up in
+      // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
+      implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {
+        if (hasNamedDefaultSlot) {
+          context.onError(
+            createCompilerError(
+              39,
+              implicitDefaultChildren[0].loc
+            )
+          );
+        } else {
+          slotsProperties.push(
+            buildDefaultSlotProperty(void 0, implicitDefaultChildren)
+          );
+        }
+      }
+    }
+    const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;
+    let slots = createObjectExpression(
+      slotsProperties.concat(
+        createObjectProperty(
+          `_`,
+          // 2 = compiled but dynamic = can skip normalization, but must run diff
+          // 1 = compiled and static = can skip normalization AND diff as optimized
+          createSimpleExpression(
+            slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ),
+            false
+          )
+        )
+      ),
+      loc
+    );
+    if (dynamicSlots.length) {
+      slots = createCallExpression(context.helper(CREATE_SLOTS), [
+        slots,
+        createArrayExpression(dynamicSlots)
+      ]);
+    }
+    return {
+      slots,
+      hasDynamicSlots
+    };
+  }
+  function buildDynamicSlot(name, fn, index) {
+    const props = [
+      createObjectProperty(`name`, name),
+      createObjectProperty(`fn`, fn)
+    ];
+    if (index != null) {
+      props.push(
+        createObjectProperty(`key`, createSimpleExpression(String(index), true))
+      );
+    }
+    return createObjectExpression(props);
+  }
+  function hasForwardedSlots(children) {
+    for (let i = 0; i < children.length; i++) {
+      const child = children[i];
+      switch (child.type) {
+        case 1:
+          if (child.tagType === 2 || hasForwardedSlots(child.children)) {
+            return true;
+          }
+          break;
+        case 9:
+          if (hasForwardedSlots(child.branches))
+            return true;
+          break;
+        case 10:
+        case 11:
+          if (hasForwardedSlots(child.children))
+            return true;
+          break;
+      }
+    }
+    return false;
+  }
+  function isNonWhitespaceContent(node) {
+    if (node.type !== 2 && node.type !== 12)
+      return true;
+    return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);
+  }
+
+  const directiveImportMap = /* @__PURE__ */ new WeakMap();
+  const transformElement = (node, context) => {
+    return function postTransformElement() {
+      node = context.currentNode;
+      if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {
+        return;
+      }
+      const { tag, props } = node;
+      const isComponent = node.tagType === 1;
+      let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`;
+      const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
+      let vnodeProps;
+      let vnodeChildren;
+      let vnodePatchFlag;
+      let patchFlag = 0;
+      let vnodeDynamicProps;
+      let dynamicPropNames;
+      let vnodeDirectives;
+      let shouldUseBlock = (
+        // dynamic component may resolve to plain elements
+        isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block
+        // updates inside get proper isSVG flag at runtime. (#639, #643)
+        // This is technically web-specific, but splitting the logic out of core
+        // leads to too much unnecessary complexity.
+        (tag === "svg" || tag === "foreignObject")
+      );
+      if (props.length > 0) {
+        const propsBuildResult = buildProps(
+          node,
+          context,
+          void 0,
+          isComponent,
+          isDynamicComponent
+        );
+        vnodeProps = propsBuildResult.props;
+        patchFlag = propsBuildResult.patchFlag;
+        dynamicPropNames = propsBuildResult.dynamicPropNames;
+        const directives = propsBuildResult.directives;
+        vnodeDirectives = directives && directives.length ? createArrayExpression(
+          directives.map((dir) => buildDirectiveArgs(dir, context))
+        ) : void 0;
+        if (propsBuildResult.shouldUseBlock) {
+          shouldUseBlock = true;
+        }
+      }
+      if (node.children.length > 0) {
+        if (vnodeTag === KEEP_ALIVE) {
+          shouldUseBlock = true;
+          patchFlag |= 1024;
+          if (node.children.length > 1) {
+            context.onError(
+              createCompilerError(46, {
+                start: node.children[0].loc.start,
+                end: node.children[node.children.length - 1].loc.end,
+                source: ""
+              })
+            );
+          }
+        }
+        const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling
+        vnodeTag !== TELEPORT && // explained above.
+        vnodeTag !== KEEP_ALIVE;
+        if (shouldBuildAsSlots) {
+          const { slots, hasDynamicSlots } = buildSlots(node, context);
+          vnodeChildren = slots;
+          if (hasDynamicSlots) {
+            patchFlag |= 1024;
+          }
+        } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
+          const child = node.children[0];
+          const type = child.type;
+          const hasDynamicTextChild = type === 5 || type === 8;
+          if (hasDynamicTextChild && getConstantType(child, context) === 0) {
+            patchFlag |= 1;
+          }
+          if (hasDynamicTextChild || type === 2) {
+            vnodeChildren = child;
+          } else {
+            vnodeChildren = node.children;
+          }
+        } else {
+          vnodeChildren = node.children;
+        }
+      }
+      if (patchFlag !== 0) {
+        {
+          if (patchFlag < 0) {
+            vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;
+          } else {
+            const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `);
+            vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;
+          }
+        }
+        if (dynamicPropNames && dynamicPropNames.length) {
+          vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
+        }
+      }
+      node.codegenNode = createVNodeCall(
+        context,
+        vnodeTag,
+        vnodeProps,
+        vnodeChildren,
+        vnodePatchFlag,
+        vnodeDynamicProps,
+        vnodeDirectives,
+        !!shouldUseBlock,
+        false,
+        isComponent,
+        node.loc
+      );
+    };
+  };
+  function resolveComponentType(node, context, ssr = false) {
+    let { tag } = node;
+    const isExplicitDynamic = isComponentTag(tag);
+    const isProp = findProp(node, "is");
+    if (isProp) {
+      if (isExplicitDynamic || isCompatEnabled(
+        "COMPILER_IS_ON_ELEMENT",
+        context
+      )) {
+        const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;
+        if (exp) {
+          return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+            exp
+          ]);
+        }
+      } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) {
+        tag = isProp.value.content.slice(4);
+      }
+    }
+    const isDir = !isExplicitDynamic && findDir(node, "is");
+    if (isDir && isDir.exp) {
+      {
+        context.onWarn(
+          createCompilerError(52, isDir.loc)
+        );
+      }
+      return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+        isDir.exp
+      ]);
+    }
+    const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
+    if (builtIn) {
+      if (!ssr)
+        context.helper(builtIn);
+      return builtIn;
+    }
+    context.helper(RESOLVE_COMPONENT);
+    context.components.add(tag);
+    return toValidAssetId(tag, `component`);
+  }
+  function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {
+    const { tag, loc: elementLoc, children } = node;
+    let properties = [];
+    const mergeArgs = [];
+    const runtimeDirectives = [];
+    const hasChildren = children.length > 0;
+    let shouldUseBlock = false;
+    let patchFlag = 0;
+    let hasRef = false;
+    let hasClassBinding = false;
+    let hasStyleBinding = false;
+    let hasHydrationEventBinding = false;
+    let hasDynamicKeys = false;
+    let hasVnodeHook = false;
+    const dynamicPropNames = [];
+    const pushMergeArg = (arg) => {
+      if (properties.length) {
+        mergeArgs.push(
+          createObjectExpression(dedupeProperties(properties), elementLoc)
+        );
+        properties = [];
+      }
+      if (arg)
+        mergeArgs.push(arg);
+    };
+    const analyzePatchFlag = ({ key, value }) => {
+      if (isStaticExp(key)) {
+        const name = key.content;
+        const isEventHandler = isOn(name);
+        if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click
+        // dedicated fast path.
+        name.toLowerCase() !== "onclick" && // omit v-model handlers
+        name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks
+        !isReservedProp(name)) {
+          hasHydrationEventBinding = true;
+        }
+        if (isEventHandler && isReservedProp(name)) {
+          hasVnodeHook = true;
+        }
+        if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {
+          return;
+        }
+        if (name === "ref") {
+          hasRef = true;
+        } else if (name === "class") {
+          hasClassBinding = true;
+        } else if (name === "style") {
+          hasStyleBinding = true;
+        } else if (name !== "key" && !dynamicPropNames.includes(name)) {
+          dynamicPropNames.push(name);
+        }
+        if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) {
+          dynamicPropNames.push(name);
+        }
+      } else {
+        hasDynamicKeys = true;
+      }
+    };
+    for (let i = 0; i < props.length; i++) {
+      const prop = props[i];
+      if (prop.type === 6) {
+        const { loc, name, value } = prop;
+        let isStatic = true;
+        if (name === "ref") {
+          hasRef = true;
+          if (context.scopes.vFor > 0) {
+            properties.push(
+              createObjectProperty(
+                createSimpleExpression("ref_for", true),
+                createSimpleExpression("true")
+              )
+            );
+          }
+        }
+        if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context
+        ))) {
+          continue;
+        }
+        properties.push(
+          createObjectProperty(
+            createSimpleExpression(
+              name,
+              true,
+              getInnerRange(loc, 0, name.length)
+            ),
+            createSimpleExpression(
+              value ? value.content : "",
+              isStatic,
+              value ? value.loc : loc
+            )
+          )
+        );
+      } else {
+        const { name, arg, exp, loc } = prop;
+        const isVBind = name === "bind";
+        const isVOn = name === "on";
+        if (name === "slot") {
+          if (!isComponent) {
+            context.onError(
+              createCompilerError(40, loc)
+            );
+          }
+          continue;
+        }
+        if (name === "once" || name === "memo") {
+          continue;
+        }
+        if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled(
+          "COMPILER_IS_ON_ELEMENT",
+          context
+        ))) {
+          continue;
+        }
+        if (isVOn && ssr) {
+          continue;
+        }
+        if (
+          // #938: elements with dynamic keys should be forced into blocks
+          isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked
+          // before children
+          isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update")
+        ) {
+          shouldUseBlock = true;
+        }
+        if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
+          properties.push(
+            createObjectProperty(
+              createSimpleExpression("ref_for", true),
+              createSimpleExpression("true")
+            )
+          );
+        }
+        if (!arg && (isVBind || isVOn)) {
+          hasDynamicKeys = true;
+          if (exp) {
+            if (isVBind) {
+              pushMergeArg();
+              {
+                {
+                  const hasOverridableKeys = mergeArgs.some((arg2) => {
+                    if (arg2.type === 15) {
+                      return arg2.properties.some(({ key }) => {
+                        if (key.type !== 4 || !key.isStatic) {
+                          return true;
+                        }
+                        return key.content !== "class" && key.content !== "style" && !isOn(key.content);
+                      });
+                    } else {
+                      return true;
+                    }
+                  });
+                  if (hasOverridableKeys) {
+                    checkCompatEnabled(
+                      "COMPILER_V_BIND_OBJECT_ORDER",
+                      context,
+                      loc
+                    );
+                  }
+                }
+                if (isCompatEnabled(
+                  "COMPILER_V_BIND_OBJECT_ORDER",
+                  context
+                )) {
+                  mergeArgs.unshift(exp);
+                  continue;
+                }
+              }
+              mergeArgs.push(exp);
+            } else {
+              pushMergeArg({
+                type: 14,
+                loc,
+                callee: context.helper(TO_HANDLERS),
+                arguments: isComponent ? [exp] : [exp, `true`]
+              });
+            }
+          } else {
+            context.onError(
+              createCompilerError(
+                isVBind ? 34 : 35,
+                loc
+              )
+            );
+          }
+          continue;
+        }
+        const directiveTransform = context.directiveTransforms[name];
+        if (directiveTransform) {
+          const { props: props2, needRuntime } = directiveTransform(prop, node, context);
+          !ssr && props2.forEach(analyzePatchFlag);
+          if (isVOn && arg && !isStaticExp(arg)) {
+            pushMergeArg(createObjectExpression(props2, elementLoc));
+          } else {
+            properties.push(...props2);
+          }
+          if (needRuntime) {
+            runtimeDirectives.push(prop);
+            if (isSymbol(needRuntime)) {
+              directiveImportMap.set(prop, needRuntime);
+            }
+          }
+        } else if (!isBuiltInDirective(name)) {
+          runtimeDirectives.push(prop);
+          if (hasChildren) {
+            shouldUseBlock = true;
+          }
+        }
+      }
+    }
+    let propsExpression = void 0;
+    if (mergeArgs.length) {
+      pushMergeArg();
+      if (mergeArgs.length > 1) {
+        propsExpression = createCallExpression(
+          context.helper(MERGE_PROPS),
+          mergeArgs,
+          elementLoc
+        );
+      } else {
+        propsExpression = mergeArgs[0];
+      }
+    } else if (properties.length) {
+      propsExpression = createObjectExpression(
+        dedupeProperties(properties),
+        elementLoc
+      );
+    }
+    if (hasDynamicKeys) {
+      patchFlag |= 16;
+    } else {
+      if (hasClassBinding && !isComponent) {
+        patchFlag |= 2;
+      }
+      if (hasStyleBinding && !isComponent) {
+        patchFlag |= 4;
+      }
+      if (dynamicPropNames.length) {
+        patchFlag |= 8;
+      }
+      if (hasHydrationEventBinding) {
+        patchFlag |= 32;
+      }
+    }
+    if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
+      patchFlag |= 512;
+    }
+    if (!context.inSSR && propsExpression) {
+      switch (propsExpression.type) {
+        case 15:
+          let classKeyIndex = -1;
+          let styleKeyIndex = -1;
+          let hasDynamicKey = false;
+          for (let i = 0; i < propsExpression.properties.length; i++) {
+            const key = propsExpression.properties[i].key;
+            if (isStaticExp(key)) {
+              if (key.content === "class") {
+                classKeyIndex = i;
+              } else if (key.content === "style") {
+                styleKeyIndex = i;
+              }
+            } else if (!key.isHandlerKey) {
+              hasDynamicKey = true;
+            }
+          }
+          const classProp = propsExpression.properties[classKeyIndex];
+          const styleProp = propsExpression.properties[styleKeyIndex];
+          if (!hasDynamicKey) {
+            if (classProp && !isStaticExp(classProp.value)) {
+              classProp.value = createCallExpression(
+                context.helper(NORMALIZE_CLASS),
+                [classProp.value]
+              );
+            }
+            if (styleProp && // the static style is compiled into an object,
+            // so use `hasStyleBinding` to ensure that it is a dynamic style binding
+            (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,
+            // v-bind:style with static literal object
+            styleProp.value.type === 17)) {
+              styleProp.value = createCallExpression(
+                context.helper(NORMALIZE_STYLE),
+                [styleProp.value]
+              );
+            }
+          } else {
+            propsExpression = createCallExpression(
+              context.helper(NORMALIZE_PROPS),
+              [propsExpression]
+            );
+          }
+          break;
+        case 14:
+          break;
+        default:
+          propsExpression = createCallExpression(
+            context.helper(NORMALIZE_PROPS),
+            [
+              createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
+                propsExpression
+              ])
+            ]
+          );
+          break;
+      }
+    }
+    return {
+      props: propsExpression,
+      directives: runtimeDirectives,
+      patchFlag,
+      dynamicPropNames,
+      shouldUseBlock
+    };
+  }
+  function dedupeProperties(properties) {
+    const knownProps = /* @__PURE__ */ new Map();
+    const deduped = [];
+    for (let i = 0; i < properties.length; i++) {
+      const prop = properties[i];
+      if (prop.key.type === 8 || !prop.key.isStatic) {
+        deduped.push(prop);
+        continue;
+      }
+      const name = prop.key.content;
+      const existing = knownProps.get(name);
+      if (existing) {
+        if (name === "style" || name === "class" || isOn(name)) {
+          mergeAsArray(existing, prop);
+        }
+      } else {
+        knownProps.set(name, prop);
+        deduped.push(prop);
+      }
+    }
+    return deduped;
+  }
+  function mergeAsArray(existing, incoming) {
+    if (existing.value.type === 17) {
+      existing.value.elements.push(incoming.value);
+    } else {
+      existing.value = createArrayExpression(
+        [existing.value, incoming.value],
+        existing.loc
+      );
+    }
+  }
+  function buildDirectiveArgs(dir, context) {
+    const dirArgs = [];
+    const runtime = directiveImportMap.get(dir);
+    if (runtime) {
+      dirArgs.push(context.helperString(runtime));
+    } else {
+      {
+        context.helper(RESOLVE_DIRECTIVE);
+        context.directives.add(dir.name);
+        dirArgs.push(toValidAssetId(dir.name, `directive`));
+      }
+    }
+    const { loc } = dir;
+    if (dir.exp)
+      dirArgs.push(dir.exp);
+    if (dir.arg) {
+      if (!dir.exp) {
+        dirArgs.push(`void 0`);
+      }
+      dirArgs.push(dir.arg);
+    }
+    if (Object.keys(dir.modifiers).length) {
+      if (!dir.arg) {
+        if (!dir.exp) {
+          dirArgs.push(`void 0`);
+        }
+        dirArgs.push(`void 0`);
+      }
+      const trueExpression = createSimpleExpression(`true`, false, loc);
+      dirArgs.push(
+        createObjectExpression(
+          dir.modifiers.map(
+            (modifier) => createObjectProperty(modifier, trueExpression)
+          ),
+          loc
+        )
+      );
+    }
+    return createArrayExpression(dirArgs, dir.loc);
+  }
+  function stringifyDynamicPropNames(props) {
+    let propsNamesString = `[`;
+    for (let i = 0, l = props.length; i < l; i++) {
+      propsNamesString += JSON.stringify(props[i]);
+      if (i < l - 1)
+        propsNamesString += ", ";
+    }
+    return propsNamesString + `]`;
+  }
+  function isComponentTag(tag) {
+    return tag === "component" || tag === "Component";
+  }
+
+  const transformSlotOutlet = (node, context) => {
+    if (isSlotOutlet(node)) {
+      const { children, loc } = node;
+      const { slotName, slotProps } = processSlotOutlet(node, context);
+      const slotArgs = [
+        context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
+        slotName,
+        "{}",
+        "undefined",
+        "true"
+      ];
+      let expectedLen = 2;
+      if (slotProps) {
+        slotArgs[2] = slotProps;
+        expectedLen = 3;
+      }
+      if (children.length) {
+        slotArgs[3] = createFunctionExpression([], children, false, false, loc);
+        expectedLen = 4;
+      }
+      if (context.scopeId && !context.slotted) {
+        expectedLen = 5;
+      }
+      slotArgs.splice(expectedLen);
+      node.codegenNode = createCallExpression(
+        context.helper(RENDER_SLOT),
+        slotArgs,
+        loc
+      );
+    }
+  };
+  function processSlotOutlet(node, context) {
+    let slotName = `"default"`;
+    let slotProps = void 0;
+    const nonNameProps = [];
+    for (let i = 0; i < node.props.length; i++) {
+      const p = node.props[i];
+      if (p.type === 6) {
+        if (p.value) {
+          if (p.name === "name") {
+            slotName = JSON.stringify(p.value.content);
+          } else {
+            p.name = camelize(p.name);
+            nonNameProps.push(p);
+          }
+        }
+      } else {
+        if (p.name === "bind" && isStaticArgOf(p.arg, "name")) {
+          if (p.exp)
+            slotName = p.exp;
+        } else {
+          if (p.name === "bind" && p.arg && isStaticExp(p.arg)) {
+            p.arg.content = camelize(p.arg.content);
+          }
+          nonNameProps.push(p);
+        }
+      }
+    }
+    if (nonNameProps.length > 0) {
+      const { props, directives } = buildProps(
+        node,
+        context,
+        nonNameProps,
+        false,
+        false
+      );
+      slotProps = props;
+      if (directives.length) {
+        context.onError(
+          createCompilerError(
+            36,
+            directives[0].loc
+          )
+        );
+      }
+    }
+    return {
+      slotName,
+      slotProps
+    };
+  }
+
+  const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
+  const transformOn$1 = (dir, node, context, augmentor) => {
+    const { loc, modifiers, arg } = dir;
+    if (!dir.exp && !modifiers.length) {
+      context.onError(createCompilerError(35, loc));
+    }
+    let eventName;
+    if (arg.type === 4) {
+      if (arg.isStatic) {
+        let rawName = arg.content;
+        if (rawName.startsWith("vnode")) {
+          context.onWarn(
+            createCompilerError(51, arg.loc)
+          );
+        }
+        if (rawName.startsWith("vue:")) {
+          rawName = `vnode-${rawName.slice(4)}`;
+        }
+        const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? (
+          // for non-element and vnode lifecycle event listeners, auto convert
+          // it to camelCase. See issue #2249
+          toHandlerKey(camelize(rawName))
+        ) : (
+          // preserve case for plain element listeners that have uppercase
+          // letters, as these may be custom elements' custom events
+          `on:${rawName}`
+        );
+        eventName = createSimpleExpression(eventString, true, arg.loc);
+      } else {
+        eventName = createCompoundExpression([
+          `${context.helperString(TO_HANDLER_KEY)}(`,
+          arg,
+          `)`
+        ]);
+      }
+    } else {
+      eventName = arg;
+      eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
+      eventName.children.push(`)`);
+    }
+    let exp = dir.exp;
+    if (exp && !exp.content.trim()) {
+      exp = void 0;
+    }
+    let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
+    if (exp) {
+      const isMemberExp = isMemberExpression(exp.content);
+      const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
+      const hasMultipleStatements = exp.content.includes(`;`);
+      {
+        validateBrowserExpression(
+          exp,
+          context,
+          false,
+          hasMultipleStatements
+        );
+      }
+      if (isInlineStatement || shouldCache && isMemberExp) {
+        exp = createCompoundExpression([
+          `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
+          exp,
+          hasMultipleStatements ? `}` : `)`
+        ]);
+      }
+    }
+    let ret = {
+      props: [
+        createObjectProperty(
+          eventName,
+          exp || createSimpleExpression(`() => {}`, false, loc)
+        )
+      ]
+    };
+    if (augmentor) {
+      ret = augmentor(ret);
+    }
+    if (shouldCache) {
+      ret.props[0].value = context.cache(ret.props[0].value);
+    }
+    ret.props.forEach((p) => p.key.isHandlerKey = true);
+    return ret;
+  };
+
+  const transformBind = (dir, _node, context) => {
+    const { exp, modifiers, loc } = dir;
+    const arg = dir.arg;
+    if (arg.type !== 4) {
+      arg.children.unshift(`(`);
+      arg.children.push(`) || ""`);
+    } else if (!arg.isStatic) {
+      arg.content = `${arg.content} || ""`;
+    }
+    if (modifiers.includes("camel")) {
+      if (arg.type === 4) {
+        if (arg.isStatic) {
+          arg.content = camelize(arg.content);
+        } else {
+          arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
+        }
+      } else {
+        arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
+        arg.children.push(`)`);
+      }
+    }
+    if (!context.inSSR) {
+      if (modifiers.includes("prop")) {
+        injectPrefix(arg, ".");
+      }
+      if (modifiers.includes("attr")) {
+        injectPrefix(arg, "^");
+      }
+    }
+    if (!exp || exp.type === 4 && !exp.content.trim()) {
+      context.onError(createCompilerError(34, loc));
+      return {
+        props: [createObjectProperty(arg, createSimpleExpression("", true, loc))]
+      };
+    }
+    return {
+      props: [createObjectProperty(arg, exp)]
+    };
+  };
+  const injectPrefix = (arg, prefix) => {
+    if (arg.type === 4) {
+      if (arg.isStatic) {
+        arg.content = prefix + arg.content;
+      } else {
+        arg.content = `\`${prefix}\${${arg.content}}\``;
+      }
+    } else {
+      arg.children.unshift(`'${prefix}' + (`);
+      arg.children.push(`)`);
+    }
+  };
+
+  const transformText = (node, context) => {
+    if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
+      return () => {
+        const children = node.children;
+        let currentContainer = void 0;
+        let hasText = false;
+        for (let i = 0; i < children.length; i++) {
+          const child = children[i];
+          if (isText$1(child)) {
+            hasText = true;
+            for (let j = i + 1; j < children.length; j++) {
+              const next = children[j];
+              if (isText$1(next)) {
+                if (!currentContainer) {
+                  currentContainer = children[i] = createCompoundExpression(
+                    [child],
+                    child.loc
+                  );
+                }
+                currentContainer.children.push(` + `, next);
+                children.splice(j, 1);
+                j--;
+              } else {
+                currentContainer = void 0;
+                break;
+              }
+            }
+          }
+        }
+        if (!hasText || // if this is a plain element with a single text child, leave it
+        // as-is since the runtime has dedicated fast path for this by directly
+        // setting textContent of the element.
+        // for component root it's always normalized anyway.
+        children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756
+        // custom directives can potentially add DOM elements arbitrarily,
+        // we need to avoid setting textContent of the element at runtime
+        // to avoid accidentally overwriting the DOM elements added
+        // by the user through custom directives.
+        !node.props.find(
+          (p) => p.type === 7 && !context.directiveTransforms[p.name]
+        ) && // in compat mode, <template> tags with no special directives
+        // will be rendered as a fragment so its children must be
+        // converted into vnodes.
+        !(node.tag === "template"))) {
+          return;
+        }
+        for (let i = 0; i < children.length; i++) {
+          const child = children[i];
+          if (isText$1(child) || child.type === 8) {
+            const callArgs = [];
+            if (child.type !== 2 || child.content !== " ") {
+              callArgs.push(child);
+            }
+            if (!context.ssr && getConstantType(child, context) === 0) {
+              callArgs.push(
+                1 + (` /* ${PatchFlagNames[1]} */` )
+              );
+            }
+            children[i] = {
+              type: 12,
+              content: child,
+              loc: child.loc,
+              codegenNode: createCallExpression(
+                context.helper(CREATE_TEXT),
+                callArgs
+              )
+            };
+          }
+        }
+      };
+    }
+  };
+
+  const seen$1 = /* @__PURE__ */ new WeakSet();
+  const transformOnce = (node, context) => {
+    if (node.type === 1 && findDir(node, "once", true)) {
+      if (seen$1.has(node) || context.inVOnce || context.inSSR) {
+        return;
+      }
+      seen$1.add(node);
+      context.inVOnce = true;
+      context.helper(SET_BLOCK_TRACKING);
+      return () => {
+        context.inVOnce = false;
+        const cur = context.currentNode;
+        if (cur.codegenNode) {
+          cur.codegenNode = context.cache(
+            cur.codegenNode,
+            true
+            /* isVNode */
+          );
+        }
+      };
+    }
+  };
+
+  const transformModel$1 = (dir, node, context) => {
+    const { exp, arg } = dir;
+    if (!exp) {
+      context.onError(
+        createCompilerError(41, dir.loc)
+      );
+      return createTransformProps();
+    }
+    const rawExp = exp.loc.source;
+    const expString = exp.type === 4 ? exp.content : rawExp;
+    const bindingType = context.bindingMetadata[rawExp];
+    if (bindingType === "props" || bindingType === "props-aliased") {
+      context.onError(createCompilerError(44, exp.loc));
+      return createTransformProps();
+    }
+    const maybeRef = false;
+    if (!expString.trim() || !isMemberExpression(expString) && !maybeRef) {
+      context.onError(
+        createCompilerError(42, exp.loc)
+      );
+      return createTransformProps();
+    }
+    const propName = arg ? arg : createSimpleExpression("modelValue", true);
+    const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`;
+    let assignmentExp;
+    const eventArg = context.isTS ? `($event: any)` : `$event`;
+    {
+      assignmentExp = createCompoundExpression([
+        `${eventArg} => ((`,
+        exp,
+        `) = $event)`
+      ]);
+    }
+    const props = [
+      // modelValue: foo
+      createObjectProperty(propName, dir.exp),
+      // "onUpdate:modelValue": $event => (foo = $event)
+      createObjectProperty(eventName, assignmentExp)
+    ];
+    if (dir.modifiers.length && node.tagType === 1) {
+      const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
+      const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
+      props.push(
+        createObjectProperty(
+          modifiersKey,
+          createSimpleExpression(
+            `{ ${modifiers} }`,
+            false,
+            dir.loc,
+            2
+          )
+        )
+      );
+    }
+    return createTransformProps(props);
+  };
+  function createTransformProps(props = []) {
+    return { props };
+  }
+
+  const validDivisionCharRE = /[\w).+\-_$\]]/;
+  const transformFilter = (node, context) => {
+    if (!isCompatEnabled("COMPILER_FILTER", context)) {
+      return;
+    }
+    if (node.type === 5) {
+      rewriteFilter(node.content, context);
+    }
+    if (node.type === 1) {
+      node.props.forEach((prop) => {
+        if (prop.type === 7 && prop.name !== "for" && prop.exp) {
+          rewriteFilter(prop.exp, context);
+        }
+      });
+    }
+  };
+  function rewriteFilter(node, context) {
+    if (node.type === 4) {
+      parseFilter(node, context);
+    } else {
+      for (let i = 0; i < node.children.length; i++) {
+        const child = node.children[i];
+        if (typeof child !== "object")
+          continue;
+        if (child.type === 4) {
+          parseFilter(child, context);
+        } else if (child.type === 8) {
+          rewriteFilter(node, context);
+        } else if (child.type === 5) {
+          rewriteFilter(child.content, context);
+        }
+      }
+    }
+  }
+  function parseFilter(node, context) {
+    const exp = node.content;
+    let inSingle = false;
+    let inDouble = false;
+    let inTemplateString = false;
+    let inRegex = false;
+    let curly = 0;
+    let square = 0;
+    let paren = 0;
+    let lastFilterIndex = 0;
+    let c, prev, i, expression, filters = [];
+    for (i = 0; i < exp.length; i++) {
+      prev = c;
+      c = exp.charCodeAt(i);
+      if (inSingle) {
+        if (c === 39 && prev !== 92)
+          inSingle = false;
+      } else if (inDouble) {
+        if (c === 34 && prev !== 92)
+          inDouble = false;
+      } else if (inTemplateString) {
+        if (c === 96 && prev !== 92)
+          inTemplateString = false;
+      } else if (inRegex) {
+        if (c === 47 && prev !== 92)
+          inRegex = false;
+      } else if (c === 124 && // pipe
+      exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {
+        if (expression === void 0) {
+          lastFilterIndex = i + 1;
+          expression = exp.slice(0, i).trim();
+        } else {
+          pushFilter();
+        }
+      } else {
+        switch (c) {
+          case 34:
+            inDouble = true;
+            break;
+          case 39:
+            inSingle = true;
+            break;
+          case 96:
+            inTemplateString = true;
+            break;
+          case 40:
+            paren++;
+            break;
+          case 41:
+            paren--;
+            break;
+          case 91:
+            square++;
+            break;
+          case 93:
+            square--;
+            break;
+          case 123:
+            curly++;
+            break;
+          case 125:
+            curly--;
+            break;
+        }
+        if (c === 47) {
+          let j = i - 1;
+          let p;
+          for (; j >= 0; j--) {
+            p = exp.charAt(j);
+            if (p !== " ")
+              break;
+          }
+          if (!p || !validDivisionCharRE.test(p)) {
+            inRegex = true;
+          }
+        }
+      }
+    }
+    if (expression === void 0) {
+      expression = exp.slice(0, i).trim();
+    } else if (lastFilterIndex !== 0) {
+      pushFilter();
+    }
+    function pushFilter() {
+      filters.push(exp.slice(lastFilterIndex, i).trim());
+      lastFilterIndex = i + 1;
+    }
+    if (filters.length) {
+      warnDeprecation(
+        "COMPILER_FILTER",
+        context,
+        node.loc
+      );
+      for (i = 0; i < filters.length; i++) {
+        expression = wrapFilter(expression, filters[i], context);
+      }
+      node.content = expression;
+    }
+  }
+  function wrapFilter(exp, filter, context) {
+    context.helper(RESOLVE_FILTER);
+    const i = filter.indexOf("(");
+    if (i < 0) {
+      context.filters.add(filter);
+      return `${toValidAssetId(filter, "filter")}(${exp})`;
+    } else {
+      const name = filter.slice(0, i);
+      const args = filter.slice(i + 1);
+      context.filters.add(name);
+      return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`;
+    }
+  }
+
+  const seen = /* @__PURE__ */ new WeakSet();
+  const transformMemo = (node, context) => {
+    if (node.type === 1) {
+      const dir = findDir(node, "memo");
+      if (!dir || seen.has(node)) {
+        return;
+      }
+      seen.add(node);
+      return () => {
+        const codegenNode = node.codegenNode || context.currentNode.codegenNode;
+        if (codegenNode && codegenNode.type === 13) {
+          if (node.tagType !== 1) {
+            convertToBlock(codegenNode, context);
+          }
+          node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
+            dir.exp,
+            createFunctionExpression(void 0, codegenNode),
+            `_cache`,
+            String(context.cached++)
+          ]);
+        }
+      };
+    }
+  };
+
+  function getBaseTransformPreset(prefixIdentifiers) {
+    return [
+      [
+        transformOnce,
+        transformIf,
+        transformMemo,
+        transformFor,
+        ...[transformFilter] ,
+        ...[transformExpression] ,
+        transformSlotOutlet,
+        transformElement,
+        trackSlotScopes,
+        transformText
+      ],
+      {
+        on: transformOn$1,
+        bind: transformBind,
+        model: transformModel$1
+      }
+    ];
+  }
+  function baseCompile(template, options = {}) {
+    const onError = options.onError || defaultOnError;
+    const isModuleMode = options.mode === "module";
+    {
+      if (options.prefixIdentifiers === true) {
+        onError(createCompilerError(47));
+      } else if (isModuleMode) {
+        onError(createCompilerError(48));
+      }
+    }
+    const prefixIdentifiers = false;
+    if (options.cacheHandlers) {
+      onError(createCompilerError(49));
+    }
+    if (options.scopeId && !isModuleMode) {
+      onError(createCompilerError(50));
+    }
+    const ast = isString(template) ? baseParse(template, options) : template;
+    const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();
+    transform(
+      ast,
+      extend({}, options, {
+        prefixIdentifiers,
+        nodeTransforms: [
+          ...nodeTransforms,
+          ...options.nodeTransforms || []
+          // user transforms
+        ],
+        directiveTransforms: extend(
+          {},
+          directiveTransforms,
+          options.directiveTransforms || {}
+          // user transforms
+        )
+      })
+    );
+    return generate(
+      ast,
+      extend({}, options, {
+        prefixIdentifiers
+      })
+    );
+  }
+
+  const noopDirectiveTransform = () => ({ props: [] });
+
+  const V_MODEL_RADIO = Symbol(`vModelRadio` );
+  const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` );
+  const V_MODEL_TEXT = Symbol(`vModelText` );
+  const V_MODEL_SELECT = Symbol(`vModelSelect` );
+  const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` );
+  const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` );
+  const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` );
+  const V_SHOW = Symbol(`vShow` );
+  const TRANSITION = Symbol(`Transition` );
+  const TRANSITION_GROUP = Symbol(`TransitionGroup` );
+  registerRuntimeHelpers({
+    [V_MODEL_RADIO]: `vModelRadio`,
+    [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+    [V_MODEL_TEXT]: `vModelText`,
+    [V_MODEL_SELECT]: `vModelSelect`,
+    [V_MODEL_DYNAMIC]: `vModelDynamic`,
+    [V_ON_WITH_MODIFIERS]: `withModifiers`,
+    [V_ON_WITH_KEYS]: `withKeys`,
+    [V_SHOW]: `vShow`,
+    [TRANSITION]: `Transition`,
+    [TRANSITION_GROUP]: `TransitionGroup`
+  });
+
+  let decoder;
+  function decodeHtmlBrowser(raw, asAttr = false) {
+    if (!decoder) {
+      decoder = document.createElement("div");
+    }
+    if (asAttr) {
+      decoder.innerHTML = `<div foo="${raw.replace(/"/g, "&quot;")}">`;
+      return decoder.children[0].getAttribute("foo");
+    } else {
+      decoder.innerHTML = raw;
+      return decoder.textContent;
+    }
+  }
+
+  const isRawTextContainer = /* @__PURE__ */ makeMap(
+    "style,iframe,script,noscript",
+    true
+  );
+  const parserOptions = {
+    isVoidTag,
+    isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag),
+    isPreTag: (tag) => tag === "pre",
+    decodeEntities: decodeHtmlBrowser ,
+    isBuiltInComponent: (tag) => {
+      if (isBuiltInType(tag, `Transition`)) {
+        return TRANSITION;
+      } else if (isBuiltInType(tag, `TransitionGroup`)) {
+        return TRANSITION_GROUP;
+      }
+    },
+    // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+    getNamespace(tag, parent) {
+      let ns = parent ? parent.ns : 0;
+      if (parent && ns === 2) {
+        if (parent.tag === "annotation-xml") {
+          if (tag === "svg") {
+            return 1;
+          }
+          if (parent.props.some(
+            (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
+          )) {
+            ns = 0;
+          }
+        } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
+          ns = 0;
+        }
+      } else if (parent && ns === 1) {
+        if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
+          ns = 0;
+        }
+      }
+      if (ns === 0) {
+        if (tag === "svg") {
+          return 1;
+        }
+        if (tag === "math") {
+          return 2;
+        }
+      }
+      return ns;
+    },
+    // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+    getTextMode({ tag, ns }) {
+      if (ns === 0) {
+        if (tag === "textarea" || tag === "title") {
+          return 1;
+        }
+        if (isRawTextContainer(tag)) {
+          return 2;
+        }
+      }
+      return 0;
+    }
+  };
+
+  const transformStyle = (node) => {
+    if (node.type === 1) {
+      node.props.forEach((p, i) => {
+        if (p.type === 6 && p.name === "style" && p.value) {
+          node.props[i] = {
+            type: 7,
+            name: `bind`,
+            arg: createSimpleExpression(`style`, true, p.loc),
+            exp: parseInlineCSS(p.value.content, p.loc),
+            modifiers: [],
+            loc: p.loc
+          };
+        }
+      });
+    }
+  };
+  const parseInlineCSS = (cssText, loc) => {
+    const normalized = parseStringStyle(cssText);
+    return createSimpleExpression(
+      JSON.stringify(normalized),
+      false,
+      loc,
+      3
+    );
+  };
+
+  function createDOMCompilerError(code, loc) {
+    return createCompilerError(
+      code,
+      loc,
+      DOMErrorMessages 
+    );
+  }
+  const DOMErrorMessages = {
+    [53]: `v-html is missing expression.`,
+    [54]: `v-html will override element children.`,
+    [55]: `v-text is missing expression.`,
+    [56]: `v-text will override element children.`,
+    [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+    [58]: `v-model argument is not supported on plain elements.`,
+    [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+    [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+    [61]: `v-show is missing expression.`,
+    [62]: `<Transition> expects exactly one child element or component.`,
+    [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+  };
+
+  const transformVHtml = (dir, node, context) => {
+    const { exp, loc } = dir;
+    if (!exp) {
+      context.onError(
+        createDOMCompilerError(53, loc)
+      );
+    }
+    if (node.children.length) {
+      context.onError(
+        createDOMCompilerError(54, loc)
+      );
+      node.children.length = 0;
+    }
+    return {
+      props: [
+        createObjectProperty(
+          createSimpleExpression(`innerHTML`, true, loc),
+          exp || createSimpleExpression("", true)
+        )
+      ]
+    };
+  };
+
+  const transformVText = (dir, node, context) => {
+    const { exp, loc } = dir;
+    if (!exp) {
+      context.onError(
+        createDOMCompilerError(55, loc)
+      );
+    }
+    if (node.children.length) {
+      context.onError(
+        createDOMCompilerError(56, loc)
+      );
+      node.children.length = 0;
+    }
+    return {
+      props: [
+        createObjectProperty(
+          createSimpleExpression(`textContent`, true),
+          exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(
+            context.helperString(TO_DISPLAY_STRING),
+            [exp],
+            loc
+          ) : createSimpleExpression("", true)
+        )
+      ]
+    };
+  };
+
+  const transformModel = (dir, node, context) => {
+    const baseResult = transformModel$1(dir, node, context);
+    if (!baseResult.props.length || node.tagType === 1) {
+      return baseResult;
+    }
+    if (dir.arg) {
+      context.onError(
+        createDOMCompilerError(
+          58,
+          dir.arg.loc
+        )
+      );
+    }
+    function checkDuplicatedValue() {
+      const value = findProp(node, "value");
+      if (value) {
+        context.onError(
+          createDOMCompilerError(
+            60,
+            value.loc
+          )
+        );
+      }
+    }
+    const { tag } = node;
+    const isCustomElement = context.isCustomElement(tag);
+    if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
+      let directiveToUse = V_MODEL_TEXT;
+      let isInvalidType = false;
+      if (tag === "input" || isCustomElement) {
+        const type = findProp(node, `type`);
+        if (type) {
+          if (type.type === 7) {
+            directiveToUse = V_MODEL_DYNAMIC;
+          } else if (type.value) {
+            switch (type.value.content) {
+              case "radio":
+                directiveToUse = V_MODEL_RADIO;
+                break;
+              case "checkbox":
+                directiveToUse = V_MODEL_CHECKBOX;
+                break;
+              case "file":
+                isInvalidType = true;
+                context.onError(
+                  createDOMCompilerError(
+                    59,
+                    dir.loc
+                  )
+                );
+                break;
+              default:
+                checkDuplicatedValue();
+                break;
+            }
+          }
+        } else if (hasDynamicKeyVBind(node)) {
+          directiveToUse = V_MODEL_DYNAMIC;
+        } else {
+          checkDuplicatedValue();
+        }
+      } else if (tag === "select") {
+        directiveToUse = V_MODEL_SELECT;
+      } else {
+        checkDuplicatedValue();
+      }
+      if (!isInvalidType) {
+        baseResult.needRuntime = context.helper(directiveToUse);
+      }
+    } else {
+      context.onError(
+        createDOMCompilerError(
+          57,
+          dir.loc
+        )
+      );
+    }
+    baseResult.props = baseResult.props.filter(
+      (p) => !(p.key.type === 4 && p.key.content === "modelValue")
+    );
+    return baseResult;
+  };
+
+  const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
+  const isNonKeyModifier = /* @__PURE__ */ makeMap(
+    // event propagation management
+    `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
+  );
+  const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right");
+  const isKeyboardEvent = /* @__PURE__ */ makeMap(
+    `onkeyup,onkeydown,onkeypress`,
+    true
+  );
+  const resolveModifiers = (key, modifiers, context, loc) => {
+    const keyModifiers = [];
+    const nonKeyModifiers = [];
+    const eventOptionModifiers = [];
+    for (let i = 0; i < modifiers.length; i++) {
+      const modifier = modifiers[i];
+      if (modifier === "native" && checkCompatEnabled(
+        "COMPILER_V_ON_NATIVE",
+        context,
+        loc
+      )) {
+        eventOptionModifiers.push(modifier);
+      } else if (isEventOptionModifier(modifier)) {
+        eventOptionModifiers.push(modifier);
+      } else {
+        if (maybeKeyModifier(modifier)) {
+          if (isStaticExp(key)) {
+            if (isKeyboardEvent(key.content)) {
+              keyModifiers.push(modifier);
+            } else {
+              nonKeyModifiers.push(modifier);
+            }
+          } else {
+            keyModifiers.push(modifier);
+            nonKeyModifiers.push(modifier);
+          }
+        } else {
+          if (isNonKeyModifier(modifier)) {
+            nonKeyModifiers.push(modifier);
+          } else {
+            keyModifiers.push(modifier);
+          }
+        }
+      }
+    }
+    return {
+      keyModifiers,
+      nonKeyModifiers,
+      eventOptionModifiers
+    };
+  };
+  const transformClick = (key, event) => {
+    const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick";
+    return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([
+      `(`,
+      key,
+      `) === "onClick" ? "${event}" : (`,
+      key,
+      `)`
+    ]) : key;
+  };
+  const transformOn = (dir, node, context) => {
+    return transformOn$1(dir, node, context, (baseResult) => {
+      const { modifiers } = dir;
+      if (!modifiers.length)
+        return baseResult;
+      let { key, value: handlerExp } = baseResult.props[0];
+      const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+      if (nonKeyModifiers.includes("right")) {
+        key = transformClick(key, `onContextmenu`);
+      }
+      if (nonKeyModifiers.includes("middle")) {
+        key = transformClick(key, `onMouseup`);
+      }
+      if (nonKeyModifiers.length) {
+        handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+          handlerExp,
+          JSON.stringify(nonKeyModifiers)
+        ]);
+      }
+      if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
+      (!isStaticExp(key) || isKeyboardEvent(key.content))) {
+        handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
+          handlerExp,
+          JSON.stringify(keyModifiers)
+        ]);
+      }
+      if (eventOptionModifiers.length) {
+        const modifierPostfix = eventOptionModifiers.map(capitalize).join("");
+        key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+      }
+      return {
+        props: [createObjectProperty(key, handlerExp)]
+      };
+    });
+  };
+
+  const transformShow = (dir, node, context) => {
+    const { exp, loc } = dir;
+    if (!exp) {
+      context.onError(
+        createDOMCompilerError(61, loc)
+      );
+    }
+    return {
+      props: [],
+      needRuntime: context.helper(V_SHOW)
+    };
+  };
+
+  const transformTransition = (node, context) => {
+    if (node.type === 1 && node.tagType === 1) {
+      const component = context.isBuiltInComponent(node.tag);
+      if (component === TRANSITION) {
+        return () => {
+          if (!node.children.length) {
+            return;
+          }
+          if (hasMultipleChildren(node)) {
+            context.onError(
+              createDOMCompilerError(
+                62,
+                {
+                  start: node.children[0].loc.start,
+                  end: node.children[node.children.length - 1].loc.end,
+                  source: ""
+                }
+              )
+            );
+          }
+          const child = node.children[0];
+          if (child.type === 1) {
+            for (const p of child.props) {
+              if (p.type === 7 && p.name === "show") {
+                node.props.push({
+                  type: 6,
+                  name: "persisted",
+                  value: void 0,
+                  loc: node.loc
+                });
+              }
+            }
+          }
+        };
+      }
+    }
+  };
+  function hasMultipleChildren(node) {
+    const children = node.children = node.children.filter(
+      (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
+    );
+    const child = children[0];
+    return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
+  }
+
+  const ignoreSideEffectTags = (node, context) => {
+    if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
+      context.onError(
+        createDOMCompilerError(
+          63,
+          node.loc
+        )
+      );
+      context.removeNode();
+    }
+  };
+
+  const DOMNodeTransforms = [
+    transformStyle,
+    ...[transformTransition] 
+  ];
+  const DOMDirectiveTransforms = {
+    cloak: noopDirectiveTransform,
+    html: transformVHtml,
+    text: transformVText,
+    model: transformModel,
+    // override compiler-core
+    on: transformOn,
+    // override compiler-core
+    show: transformShow
+  };
+  function compile(template, options = {}) {
+    return baseCompile(
+      template,
+      extend({}, parserOptions, options, {
+        nodeTransforms: [
+          // ignore <script> and <tag>
+          // this is not put inside DOMNodeTransforms because that list is used
+          // by compiler-ssr to generate vnode fallback branches
+          ignoreSideEffectTags,
+          ...DOMNodeTransforms,
+          ...options.nodeTransforms || []
+        ],
+        directiveTransforms: extend(
+          {},
+          DOMDirectiveTransforms,
+          options.directiveTransforms || {}
+        ),
+        transformHoist: null 
+      })
+    );
+  }
+  function parse(template, options = {}) {
+    return baseParse(template, extend({}, parserOptions, options));
+  }
+
+  exports.BASE_TRANSITION = BASE_TRANSITION;
+  exports.CAMELIZE = CAMELIZE;
+  exports.CAPITALIZE = CAPITALIZE;
+  exports.CREATE_BLOCK = CREATE_BLOCK;
+  exports.CREATE_COMMENT = CREATE_COMMENT;
+  exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK;
+  exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE;
+  exports.CREATE_SLOTS = CREATE_SLOTS;
+  exports.CREATE_STATIC = CREATE_STATIC;
+  exports.CREATE_TEXT = CREATE_TEXT;
+  exports.CREATE_VNODE = CREATE_VNODE;
+  exports.DOMDirectiveTransforms = DOMDirectiveTransforms;
+  exports.DOMNodeTransforms = DOMNodeTransforms;
+  exports.FRAGMENT = FRAGMENT;
+  exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS;
+  exports.IS_MEMO_SAME = IS_MEMO_SAME;
+  exports.IS_REF = IS_REF;
+  exports.KEEP_ALIVE = KEEP_ALIVE;
+  exports.MERGE_PROPS = MERGE_PROPS;
+  exports.NORMALIZE_CLASS = NORMALIZE_CLASS;
+  exports.NORMALIZE_PROPS = NORMALIZE_PROPS;
+  exports.NORMALIZE_STYLE = NORMALIZE_STYLE;
+  exports.OPEN_BLOCK = OPEN_BLOCK;
+  exports.POP_SCOPE_ID = POP_SCOPE_ID;
+  exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID;
+  exports.RENDER_LIST = RENDER_LIST;
+  exports.RENDER_SLOT = RENDER_SLOT;
+  exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT;
+  exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE;
+  exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT;
+  exports.RESOLVE_FILTER = RESOLVE_FILTER;
+  exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING;
+  exports.SUSPENSE = SUSPENSE;
+  exports.TELEPORT = TELEPORT;
+  exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING;
+  exports.TO_HANDLERS = TO_HANDLERS;
+  exports.TO_HANDLER_KEY = TO_HANDLER_KEY;
+  exports.TRANSITION = TRANSITION;
+  exports.TRANSITION_GROUP = TRANSITION_GROUP;
+  exports.TS_NODE_TYPES = TS_NODE_TYPES;
+  exports.UNREF = UNREF;
+  exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX;
+  exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC;
+  exports.V_MODEL_RADIO = V_MODEL_RADIO;
+  exports.V_MODEL_SELECT = V_MODEL_SELECT;
+  exports.V_MODEL_TEXT = V_MODEL_TEXT;
+  exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS;
+  exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS;
+  exports.V_SHOW = V_SHOW;
+  exports.WITH_CTX = WITH_CTX;
+  exports.WITH_DIRECTIVES = WITH_DIRECTIVES;
+  exports.WITH_MEMO = WITH_MEMO;
+  exports.advancePositionWithClone = advancePositionWithClone;
+  exports.advancePositionWithMutation = advancePositionWithMutation;
+  exports.assert = assert;
+  exports.baseCompile = baseCompile;
+  exports.baseParse = baseParse;
+  exports.buildDirectiveArgs = buildDirectiveArgs;
+  exports.buildProps = buildProps;
+  exports.buildSlots = buildSlots;
+  exports.checkCompatEnabled = checkCompatEnabled;
+  exports.compile = compile;
+  exports.convertToBlock = convertToBlock;
+  exports.createArrayExpression = createArrayExpression;
+  exports.createAssignmentExpression = createAssignmentExpression;
+  exports.createBlockStatement = createBlockStatement;
+  exports.createCacheExpression = createCacheExpression;
+  exports.createCallExpression = createCallExpression;
+  exports.createCompilerError = createCompilerError;
+  exports.createCompoundExpression = createCompoundExpression;
+  exports.createConditionalExpression = createConditionalExpression;
+  exports.createDOMCompilerError = createDOMCompilerError;
+  exports.createForLoopParams = createForLoopParams;
+  exports.createFunctionExpression = createFunctionExpression;
+  exports.createIfStatement = createIfStatement;
+  exports.createInterpolation = createInterpolation;
+  exports.createObjectExpression = createObjectExpression;
+  exports.createObjectProperty = createObjectProperty;
+  exports.createReturnStatement = createReturnStatement;
+  exports.createRoot = createRoot;
+  exports.createSequenceExpression = createSequenceExpression;
+  exports.createSimpleExpression = createSimpleExpression;
+  exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform;
+  exports.createTemplateLiteral = createTemplateLiteral;
+  exports.createTransformContext = createTransformContext;
+  exports.createVNodeCall = createVNodeCall;
+  exports.extractIdentifiers = extractIdentifiers;
+  exports.findDir = findDir;
+  exports.findProp = findProp;
+  exports.generate = generate;
+  exports.generateCodeFrame = generateCodeFrame;
+  exports.getBaseTransformPreset = getBaseTransformPreset;
+  exports.getConstantType = getConstantType;
+  exports.getInnerRange = getInnerRange;
+  exports.getMemoedVNodeCall = getMemoedVNodeCall;
+  exports.getVNodeBlockHelper = getVNodeBlockHelper;
+  exports.getVNodeHelper = getVNodeHelper;
+  exports.hasDynamicKeyVBind = hasDynamicKeyVBind;
+  exports.hasScopeRef = hasScopeRef;
+  exports.helperNameMap = helperNameMap;
+  exports.injectProp = injectProp;
+  exports.isBuiltInType = isBuiltInType;
+  exports.isCoreComponent = isCoreComponent;
+  exports.isFunctionType = isFunctionType;
+  exports.isInDestructureAssignment = isInDestructureAssignment;
+  exports.isMemberExpression = isMemberExpression;
+  exports.isMemberExpressionBrowser = isMemberExpressionBrowser;
+  exports.isMemberExpressionNode = isMemberExpressionNode;
+  exports.isReferencedIdentifier = isReferencedIdentifier;
+  exports.isSimpleIdentifier = isSimpleIdentifier;
+  exports.isSlotOutlet = isSlotOutlet;
+  exports.isStaticArgOf = isStaticArgOf;
+  exports.isStaticExp = isStaticExp;
+  exports.isStaticProperty = isStaticProperty;
+  exports.isStaticPropertyKey = isStaticPropertyKey;
+  exports.isTemplateNode = isTemplateNode;
+  exports.isText = isText$1;
+  exports.isVSlot = isVSlot;
+  exports.locStub = locStub;
+  exports.noopDirectiveTransform = noopDirectiveTransform;
+  exports.parse = parse;
+  exports.parserOptions = parserOptions;
+  exports.processExpression = processExpression;
+  exports.processFor = processFor;
+  exports.processIf = processIf;
+  exports.processSlotOutlet = processSlotOutlet;
+  exports.registerRuntimeHelpers = registerRuntimeHelpers;
+  exports.resolveComponentType = resolveComponentType;
+  exports.stringifyExpression = stringifyExpression;
+  exports.toValidAssetId = toValidAssetId;
+  exports.trackSlotScopes = trackSlotScopes;
+  exports.trackVForSlotScopes = trackVForSlotScopes;
+  exports.transform = transform;
+  exports.transformBind = transformBind;
+  exports.transformElement = transformElement;
+  exports.transformExpression = transformExpression;
+  exports.transformModel = transformModel$1;
+  exports.transformOn = transformOn$1;
+  exports.transformStyle = transformStyle;
+  exports.traverseNode = traverseNode;
+  exports.walkBlockDeclarations = walkBlockDeclarations;
+  exports.walkFunctionParams = walkFunctionParams;
+  exports.walkIdentifiers = walkIdentifiers;
+  exports.warnDeprecation = warnDeprecation;
+
+  return exports;
+
+})({});

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js


+ 7 - 0
node_modules/@vue/compiler-dom/index.js

xqd
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/compiler-dom.cjs.prod.js')
+} else {
+  module.exports = require('./dist/compiler-dom.cjs.js')
+}

+ 43 - 0
node_modules/@vue/compiler-dom/package.json

xqd
@@ -0,0 +1,43 @@
+{
+  "name": "@vue/compiler-dom",
+  "version": "3.3.4",
+  "description": "@vue/compiler-dom",
+  "main": "index.js",
+  "module": "dist/compiler-dom.esm-bundler.js",
+  "types": "dist/compiler-dom.d.ts",
+  "unpkg": "dist/compiler-dom.global.js",
+  "jsdelivr": "dist/compiler-dom.global.js",
+  "files": [
+    "index.js",
+    "dist"
+  ],
+  "sideEffects": false,
+  "buildOptions": {
+    "name": "VueCompilerDOM",
+    "compat": true,
+    "formats": [
+      "esm-bundler",
+      "esm-browser",
+      "cjs",
+      "global"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vuejs/core.git",
+    "directory": "packages/compiler-dom"
+  },
+  "keywords": [
+    "vue"
+  ],
+  "author": "Evan You",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/vuejs/core/issues"
+  },
+  "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme",
+  "dependencies": {
+    "@vue/shared": "3.3.4",
+    "@vue/compiler-core": "3.3.4"
+  }
+}

+ 21 - 0
node_modules/@vue/compiler-sfc/LICENSE

xqd
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-present, Yuxi (Evan) You
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 80 - 0
node_modules/@vue/compiler-sfc/README.md

xqd
@@ -0,0 +1,80 @@
+# @vue/compiler-sfc
+
+> Lower level utilities for compiling Vue Single File Components
+
+**Note: as of 3.2.13+, this package is included as a dependency of the main `vue` package and can be accessed as `vue/compiler-sfc`. This means you no longer need to explicitly install this package and ensure its version match that of `vue`'s. Just use the main `vue/compiler-sfc` deep import instead.**
+
+This package contains lower level utilities that you can use if you are writing a plugin / transform for a bundler or module system that compiles Vue Single File Components (SFCs) into JavaScript. It is used in [vue-loader](https://github.com/vuejs/vue-loader), [rollup-plugin-vue](https://github.com/vuejs/rollup-plugin-vue) and [vite](https://github.com/vitejs/vite).
+
+## API
+
+The API is intentionally low-level due to the various considerations when integrating Vue SFCs in a build system:
+
+- Separate hot-module replacement (HMR) for script, template and styles
+
+  - template updates should not reset component state
+  - style updates should be performed without component re-render
+
+- Leveraging the tool's plugin system for pre-processor handling. e.g. `<style lang="scss">` should be processed by the corresponding webpack loader.
+
+- In some cases, transformers of each block in an SFC do not share the same execution context. For example, when used with `thread-loader` or other parallelized configurations, the template sub-loader in `vue-loader` may not have access to the full SFC and its descriptor.
+
+The general idea is to generate a facade module that imports the individual blocks of the component. The trick is the module imports itself with different query strings so that the build system can handle each request as "virtual" modules:
+
+```
+                                  +--------------------+
+                                  |                    |
+                                  |  script transform  |
+                           +----->+                    |
+                           |      +--------------------+
+                           |
++--------------------+     |      +--------------------+
+|                    |     |      |                    |
+|  facade transform  +----------->+ template transform |
+|                    |     |      |                    |
++--------------------+     |      +--------------------+
+                           |
+                           |      +--------------------+
+                           +----->+                    |
+                                  |  style transform   |
+                                  |                    |
+                                  +--------------------+
+```
+
+Where the facade module looks like this:
+
+```js
+// main script
+import script from '/project/foo.vue?vue&type=script'
+// template compiled to render function
+import { render } from '/project/foo.vue?vue&type=template&id=xxxxxx'
+// css
+import '/project/foo.vue?vue&type=style&index=0&id=xxxxxx'
+
+// attach render function to script
+script.render = render
+
+// attach additional metadata
+// some of these should be dev only
+script.__file = 'example.vue'
+script.__scopeId = 'xxxxxx'
+
+// additional tooling-specific HMR handling code
+// using __VUE_HMR_API__ global
+
+export default script
+```
+
+### High Level Workflow
+
+1. In facade transform, parse the source into descriptor with the `parse` API and generate the above facade module code based on the descriptor;
+
+2. In script transform, use `compileScript` to process the script. This handles features like `<script setup>` and CSS variable injection. Alternatively, this can be done directly in the facade module (with the code inlined instead of imported), but it will require rewriting `export default` to a temp variable (a `rewriteDefault` convenience API is provided for this purpose) so additional options can be attached to the exported object.
+
+3. In template transform, use `compileTemplate` to compile the raw template into render function code.
+
+4. In style transform, use `compileStyle` to compile raw CSS to handle `<style scoped>`, `<style module>` and CSS variable injection.
+
+Options needed for these APIs can be passed via the query string.
+
+For detailed API references and options, check out the source type definitions. For actual usage of these APIs, check out [rollup-plugin-vue](https://github.com/vuejs/rollup-plugin-vue/tree/next) or [vue-loader](https://github.com/vuejs/vue-loader/tree/next).

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 12428 - 0
node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js


+ 473 - 0
node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts

xqd
@@ -0,0 +1,473 @@
+import * as _babel_types from '@babel/types';
+import { Statement, Expression, TSType, Program, Node, ObjectPattern, TSModuleDeclaration, TSPropertySignature, TSMethodSignature, TSCallSignatureDeclaration, TSFunctionType } from '@babel/types';
+import { CompilerOptions, CodegenResult, ParserOptions, RootNode, CompilerError, SourceLocation, ElementNode, BindingMetadata as BindingMetadata$1 } from '@vue/compiler-core';
+export { BindingMetadata, CompilerError, CompilerOptions, extractIdentifiers, generateCodeFrame, isInDestructureAssignment, isStaticProperty, walkIdentifiers } from '@vue/compiler-core';
+import { RawSourceMap } from 'source-map-js';
+import { ParserPlugin } from '@babel/parser';
+export { parse as babelParse } from '@babel/parser';
+import { Result, LazyResult } from 'postcss';
+import MagicString from 'magic-string';
+export { default as MagicString } from 'magic-string';
+export { shouldTransform as shouldTransformRef, transform as transformRef, transformAST as transformRefAST } from '@vue/reactivity-transform';
+
+export interface AssetURLTagConfig {
+    [name: string]: string[];
+}
+export interface AssetURLOptions {
+    /**
+     * If base is provided, instead of transforming relative asset urls into
+     * imports, they will be directly rewritten to absolute urls.
+     */
+    base?: string | null;
+    /**
+     * If true, also processes absolute urls.
+     */
+    includeAbsolute?: boolean;
+    tags?: AssetURLTagConfig;
+}
+
+export interface TemplateCompiler {
+    compile(template: string, options: CompilerOptions): CodegenResult;
+    parse(template: string, options: ParserOptions): RootNode;
+}
+export interface SFCTemplateCompileResults {
+    code: string;
+    ast?: RootNode;
+    preamble?: string;
+    source: string;
+    tips: string[];
+    errors: (string | CompilerError)[];
+    map?: RawSourceMap;
+}
+export interface SFCTemplateCompileOptions {
+    source: string;
+    filename: string;
+    id: string;
+    scoped?: boolean;
+    slotted?: boolean;
+    isProd?: boolean;
+    ssr?: boolean;
+    ssrCssVars?: string[];
+    inMap?: RawSourceMap;
+    compiler?: TemplateCompiler;
+    compilerOptions?: CompilerOptions;
+    preprocessLang?: string;
+    preprocessOptions?: any;
+    /**
+     * In some cases, compiler-sfc may not be inside the project root (e.g. when
+     * linked or globally installed). In such cases a custom `require` can be
+     * passed to correctly resolve the preprocessors.
+     */
+    preprocessCustomRequire?: (id: string) => any;
+    /**
+     * Configure what tags/attributes to transform into asset url imports,
+     * or disable the transform altogether with `false`.
+     */
+    transformAssetUrls?: AssetURLOptions | AssetURLTagConfig | boolean;
+}
+export declare function compileTemplate(options: SFCTemplateCompileOptions): SFCTemplateCompileResults;
+
+export interface SFCScriptCompileOptions {
+    /**
+     * Scope ID for prefixing injected CSS variables.
+     * This must be consistent with the `id` passed to `compileStyle`.
+     */
+    id: string;
+    /**
+     * Production mode. Used to determine whether to generate hashed CSS variables
+     */
+    isProd?: boolean;
+    /**
+     * Enable/disable source map. Defaults to true.
+     */
+    sourceMap?: boolean;
+    /**
+     * https://babeljs.io/docs/en/babel-parser#plugins
+     */
+    babelParserPlugins?: ParserPlugin[];
+    /**
+     * A list of files to parse for global types to be made available for type
+     * resolving in SFC macros. The list must be fully resolved file system paths.
+     */
+    globalTypeFiles?: string[];
+    /**
+     * Compile the template and inline the resulting render function
+     * directly inside setup().
+     * - Only affects `<script setup>`
+     * - This should only be used in production because it prevents the template
+     * from being hot-reloaded separately from component state.
+     */
+    inlineTemplate?: boolean;
+    /**
+     * Generate the final component as a variable instead of default export.
+     * This is useful in e.g. @vitejs/plugin-vue where the script needs to be
+     * placed inside the main module.
+     */
+    genDefaultAs?: string;
+    /**
+     * Options for template compilation when inlining. Note these are options that
+     * would normally be passed to `compiler-sfc`'s own `compileTemplate()`, not
+     * options passed to `compiler-dom`.
+     */
+    templateOptions?: Partial<SFCTemplateCompileOptions>;
+    /**
+     * Hoist <script setup> static constants.
+     * - Only enables when one `<script setup>` exists.
+     * @default true
+     */
+    hoistStatic?: boolean;
+    /**
+     * (**Experimental**) Enable macro `defineModel`
+     * @default false
+     */
+    defineModel?: boolean;
+    /**
+     * (**Experimental**) Enable reactive destructure for `defineProps`
+     * @default false
+     */
+    propsDestructure?: boolean;
+    /**
+     * File system access methods to be used when resolving types
+     * imported in SFC macros. Defaults to ts.sys in Node.js, can be overwritten
+     * to use a virtual file system for use in browsers (e.g. in REPLs)
+     */
+    fs?: {
+        fileExists(file: string): boolean;
+        readFile(file: string): string | undefined;
+    };
+    /**
+     * (Experimental) Enable syntax transform for using refs without `.value` and
+     * using destructured props with reactivity
+     * @deprecated the Reactivity Transform proposal has been dropped. This
+     * feature will be removed from Vue core in 3.4. If you intend to continue
+     * using it, disable this and switch to the [Vue Macros implementation](https://vue-macros.sxzz.moe/features/reactivity-transform.html).
+     */
+    reactivityTransform?: boolean;
+}
+interface ImportBinding {
+    isType: boolean;
+    imported: string;
+    local: string;
+    source: string;
+    isFromSetup: boolean;
+    isUsedInTemplate: boolean;
+}
+/**
+ * Compile `<script setup>`
+ * It requires the whole SFC descriptor because we need to handle and merge
+ * normal `<script>` + `<script setup>` if both are present.
+ */
+export declare function compileScript(sfc: SFCDescriptor, options: SFCScriptCompileOptions): SFCScriptBlock;
+
+export interface SFCParseOptions {
+    filename?: string;
+    sourceMap?: boolean;
+    sourceRoot?: string;
+    pad?: boolean | 'line' | 'space';
+    ignoreEmpty?: boolean;
+    compiler?: TemplateCompiler;
+}
+export interface SFCBlock {
+    type: string;
+    content: string;
+    attrs: Record<string, string | true>;
+    loc: SourceLocation;
+    map?: RawSourceMap;
+    lang?: string;
+    src?: string;
+}
+export interface SFCTemplateBlock extends SFCBlock {
+    type: 'template';
+    ast: ElementNode;
+}
+export interface SFCScriptBlock extends SFCBlock {
+    type: 'script';
+    setup?: string | boolean;
+    bindings?: BindingMetadata$1;
+    imports?: Record<string, ImportBinding>;
+    scriptAst?: _babel_types.Statement[];
+    scriptSetupAst?: _babel_types.Statement[];
+    warnings?: string[];
+    /**
+     * Fully resolved dependency file paths (unix slashes) with imported types
+     * used in macros, used for HMR cache busting in @vitejs/plugin-vue and
+     * vue-loader.
+     */
+    deps?: string[];
+}
+export interface SFCStyleBlock extends SFCBlock {
+    type: 'style';
+    scoped?: boolean;
+    module?: string | boolean;
+}
+export interface SFCDescriptor {
+    filename: string;
+    source: string;
+    template: SFCTemplateBlock | null;
+    script: SFCScriptBlock | null;
+    scriptSetup: SFCScriptBlock | null;
+    styles: SFCStyleBlock[];
+    customBlocks: SFCBlock[];
+    cssVars: string[];
+    /**
+     * whether the SFC uses :slotted() modifier.
+     * this is used as a compiler optimization hint.
+     */
+    slotted: boolean;
+    /**
+     * compare with an existing descriptor to determine whether HMR should perform
+     * a reload vs. re-render.
+     *
+     * Note: this comparison assumes the prev/next script are already identical,
+     * and only checks the special case where <script setup lang="ts"> unused import
+     * pruning result changes due to template changes.
+     */
+    shouldForceReload: (prevImports: Record<string, ImportBinding>) => boolean;
+}
+export interface SFCParseResult {
+    descriptor: SFCDescriptor;
+    errors: (CompilerError | SyntaxError)[];
+}
+export declare const parseCache: Map<string, SFCParseResult> & {
+    max?: number | undefined;
+};
+export declare function parse(source: string, { sourceMap, filename, sourceRoot, pad, ignoreEmpty, compiler }?: SFCParseOptions): SFCParseResult;
+
+type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus';
+
+export interface SFCStyleCompileOptions {
+    source: string;
+    filename: string;
+    id: string;
+    scoped?: boolean;
+    trim?: boolean;
+    isProd?: boolean;
+    inMap?: RawSourceMap;
+    preprocessLang?: PreprocessLang;
+    preprocessOptions?: any;
+    preprocessCustomRequire?: (id: string) => any;
+    postcssOptions?: any;
+    postcssPlugins?: any[];
+    /**
+     * @deprecated use `inMap` instead.
+     */
+    map?: RawSourceMap;
+}
+/**
+ * Aligns with postcss-modules
+ * https://github.com/css-modules/postcss-modules
+ */
+interface CSSModulesOptions {
+    scopeBehaviour?: 'global' | 'local';
+    generateScopedName?: string | ((name: string, filename: string, css: string) => string);
+    hashPrefix?: string;
+    localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly';
+    exportGlobals?: boolean;
+    globalModulePaths?: RegExp[];
+}
+export interface SFCAsyncStyleCompileOptions extends SFCStyleCompileOptions {
+    isAsync?: boolean;
+    modules?: boolean;
+    modulesOptions?: CSSModulesOptions;
+}
+export interface SFCStyleCompileResults {
+    code: string;
+    map: RawSourceMap | undefined;
+    rawResult: Result | LazyResult | undefined;
+    errors: Error[];
+    modules?: Record<string, string>;
+    dependencies: Set<string>;
+}
+export declare function compileStyle(options: SFCStyleCompileOptions): SFCStyleCompileResults;
+export declare function compileStyleAsync(options: SFCAsyncStyleCompileOptions): Promise<SFCStyleCompileResults>;
+
+export declare function rewriteDefault(input: string, as: string, parserPlugins?: ParserPlugin[]): string;
+/**
+ * Utility for rewriting `export default` in a script block into a variable
+ * declaration so that we can inject things into it
+ */
+export declare function rewriteDefaultAST(ast: Statement[], s: MagicString, as: string): void;
+
+type PropsDestructureBindings = Record<string, // public prop key
+{
+    local: string;
+    default?: Expression;
+}>;
+
+interface ModelDecl {
+    type: TSType | undefined;
+    options: string | undefined;
+    identifier: string | undefined;
+}
+
+declare const enum BindingTypes {
+    /**
+     * returned from data()
+     */
+    DATA = "data",
+    /**
+     * declared as a prop
+     */
+    PROPS = "props",
+    /**
+     * a local alias of a `<script setup>` destructured prop.
+     * the original is stored in __propsAliases of the bindingMetadata object.
+     */
+    PROPS_ALIASED = "props-aliased",
+    /**
+     * a let binding (may or may not be a ref)
+     */
+    SETUP_LET = "setup-let",
+    /**
+     * a const binding that can never be a ref.
+     * these bindings don't need `unref()` calls when processed in inlined
+     * template expressions.
+     */
+    SETUP_CONST = "setup-const",
+    /**
+     * a const binding that does not need `unref()`, but may be mutated.
+     */
+    SETUP_REACTIVE_CONST = "setup-reactive-const",
+    /**
+     * a const binding that may be a ref.
+     */
+    SETUP_MAYBE_REF = "setup-maybe-ref",
+    /**
+     * bindings that are guaranteed to be refs
+     */
+    SETUP_REF = "setup-ref",
+    /**
+     * declared by other options, e.g. computed, inject
+     */
+    OPTIONS = "options",
+    /**
+     * a literal constant, e.g. 'foo', 1, true
+     */
+    LITERAL_CONST = "literal-const"
+}
+type BindingMetadata = {
+    [key: string]: BindingTypes | undefined;
+} & {
+    __isScriptSetup?: boolean;
+    __propsAliases?: Record<string, string>;
+};
+
+export declare class ScriptCompileContext {
+    descriptor: SFCDescriptor;
+    options: Partial<SFCScriptCompileOptions>;
+    isJS: boolean;
+    isTS: boolean;
+    scriptAst: Program | null;
+    scriptSetupAst: Program | null;
+    source: string;
+    filename: string;
+    s: MagicString;
+    startOffset: number | undefined;
+    endOffset: number | undefined;
+    scope?: TypeScope;
+    globalScopes?: TypeScope[];
+    userImports: Record<string, ImportBinding>;
+    hasDefinePropsCall: boolean;
+    hasDefineEmitCall: boolean;
+    hasDefineExposeCall: boolean;
+    hasDefaultExportName: boolean;
+    hasDefaultExportRender: boolean;
+    hasDefineOptionsCall: boolean;
+    hasDefineSlotsCall: boolean;
+    hasDefineModelCall: boolean;
+    propsIdentifier: string | undefined;
+    propsRuntimeDecl: Node | undefined;
+    propsTypeDecl: Node | undefined;
+    propsDestructureDecl: ObjectPattern | undefined;
+    propsDestructuredBindings: PropsDestructureBindings;
+    propsDestructureRestId: string | undefined;
+    propsRuntimeDefaults: Node | undefined;
+    emitsRuntimeDecl: Node | undefined;
+    emitsTypeDecl: Node | undefined;
+    emitIdentifier: string | undefined;
+    modelDecls: Record<string, ModelDecl>;
+    optionsRuntimeDecl: Node | undefined;
+    bindingMetadata: BindingMetadata;
+    helperImports: Set<string>;
+    helper(key: string): string;
+    /**
+     * to be exposed on compiled script block for HMR cache busting
+     */
+    deps?: Set<string>;
+    /**
+     * cache for resolved fs
+     */
+    fs?: NonNullable<SFCScriptCompileOptions['fs']>;
+    constructor(descriptor: SFCDescriptor, options: Partial<SFCScriptCompileOptions>);
+    getString(node: Node, scriptSetup?: boolean): string;
+    error(msg: string, node: Node, scope?: TypeScope): never;
+}
+
+/**
+ * TypeResolveContext is compatible with ScriptCompileContext
+ * but also allows a simpler version of it with minimal required properties
+ * when resolveType needs to be used in a non-SFC context, e.g. in a babel
+ * plugin. The simplest context can be just:
+ * ```ts
+ * const ctx: SimpleTypeResolveContext = {
+ *   filename: '...',
+ *   source: '...',
+ *   options: {},
+ *   error() {},
+ *   ast: []
+ * }
+ * ```
+ */
+export type SimpleTypeResolveContext = Pick<ScriptCompileContext, 'source' | 'filename' | 'error' | 'options'> & Partial<Pick<ScriptCompileContext, 'scope' | 'globalScopes' | 'deps' | 'fs'>> & {
+    ast: Statement[];
+};
+export type TypeResolveContext = ScriptCompileContext | SimpleTypeResolveContext;
+type Import = Pick<ImportBinding, 'source' | 'imported'>;
+interface WithScope {
+    _ownerScope: TypeScope;
+}
+type ScopeTypeNode = Node & WithScope & {
+    _ns?: TSModuleDeclaration & WithScope;
+};
+declare class TypeScope {
+    filename: string;
+    source: string;
+    offset: number;
+    imports: Record<string, Import>;
+    types: Record<string, ScopeTypeNode>;
+    declares: Record<string, ScopeTypeNode>;
+    constructor(filename: string, source: string, offset?: number, imports?: Record<string, Import>, types?: Record<string, ScopeTypeNode>, declares?: Record<string, ScopeTypeNode>);
+    resolvedImportSources: Record<string, string>;
+    exportedTypes: Record<string, ScopeTypeNode>;
+    exportedDeclares: Record<string, ScopeTypeNode>;
+}
+interface MaybeWithScope {
+    _ownerScope?: TypeScope;
+}
+interface ResolvedElements {
+    props: Record<string, (TSPropertySignature | TSMethodSignature) & {
+        _ownerScope: TypeScope;
+    }>;
+    calls?: (TSCallSignatureDeclaration | TSFunctionType)[];
+}
+/**
+ * Resolve arbitrary type node to a list of type elements that can be then
+ * mapped to runtime props or emits.
+ */
+export declare function resolveTypeElements(ctx: TypeResolveContext, node: Node & MaybeWithScope & {
+    _resolvedElements?: ResolvedElements;
+}, scope?: TypeScope): ResolvedElements;
+/**
+ * @private
+ */
+export declare function registerTS(_ts: any): void;
+/**
+ * @private
+ */
+export declare function invalidateTypeCache(filename: string): void;
+export declare function inferRuntimeType(ctx: TypeResolveContext, node: Node & MaybeWithScope, scope?: TypeScope): string[];
+
+export declare const version: string;
+
+export declare const walk: any;
+

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 227 - 0
node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js


+ 60 - 0
node_modules/@vue/compiler-sfc/package.json

xqd
@@ -0,0 +1,60 @@
+{
+  "name": "@vue/compiler-sfc",
+  "version": "3.3.4",
+  "description": "@vue/compiler-sfc",
+  "main": "dist/compiler-sfc.cjs.js",
+  "module": "dist/compiler-sfc.esm-browser.js",
+  "types": "dist/compiler-sfc.d.ts",
+  "files": [
+    "dist"
+  ],
+  "buildOptions": {
+    "name": "VueCompilerSFC",
+    "formats": [
+      "cjs",
+      "esm-browser"
+    ],
+    "prod": false,
+    "enableNonBrowserBranches": true
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vuejs/core.git",
+    "directory": "packages/compiler-sfc"
+  },
+  "keywords": [
+    "vue"
+  ],
+  "author": "Evan You",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/vuejs/core/issues"
+  },
+  "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme",
+  "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"
+  },
+  "devDependencies": {
+    "@babel/types": "^7.21.3",
+    "@types/estree": "^0.0.48",
+    "@types/lru-cache": "^5.1.0",
+    "@vue/consolidate": "^0.17.3",
+    "hash-sum": "^2.0.0",
+    "lru-cache": "^5.1.1",
+    "merge-source-map": "^1.1.0",
+    "minimatch": "^9.0.0",
+    "postcss-modules": "^4.0.0",
+    "postcss-selector-parser": "^6.0.4",
+    "pug": "^3.0.1",
+    "sass": "^1.26.9"
+  }
+}

+ 21 - 0
node_modules/@vue/compiler-ssr/LICENSE

xqd
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-present, Yuxi (Evan) You
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 1 - 0
node_modules/@vue/compiler-ssr/README.md

xqd
@@ -0,0 +1 @@
+# @vue/compiler-ssr

+ 1280 - 0
node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js

xqd
@@ -0,0 +1,1280 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var compilerDom = require('@vue/compiler-dom');
+var shared = require('@vue/shared');
+
+const SSR_INTERPOLATE = Symbol(`ssrInterpolate`);
+const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`);
+const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`);
+const SSR_RENDER_SLOT = Symbol(`ssrRenderSlot`);
+const SSR_RENDER_SLOT_INNER = Symbol(`ssrRenderSlotInner`);
+const SSR_RENDER_CLASS = Symbol(`ssrRenderClass`);
+const SSR_RENDER_STYLE = Symbol(`ssrRenderStyle`);
+const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`);
+const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`);
+const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`);
+const SSR_RENDER_LIST = Symbol(`ssrRenderList`);
+const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(`ssrIncludeBooleanAttr`);
+const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`);
+const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`);
+const SSR_RENDER_DYNAMIC_MODEL = Symbol(`ssrRenderDynamicModel`);
+const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(`ssrGetDynamicModelProps`);
+const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`);
+const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`);
+const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`);
+const ssrHelpers = {
+  [SSR_INTERPOLATE]: `ssrInterpolate`,
+  [SSR_RENDER_VNODE]: `ssrRenderVNode`,
+  [SSR_RENDER_COMPONENT]: `ssrRenderComponent`,
+  [SSR_RENDER_SLOT]: `ssrRenderSlot`,
+  [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`,
+  [SSR_RENDER_CLASS]: `ssrRenderClass`,
+  [SSR_RENDER_STYLE]: `ssrRenderStyle`,
+  [SSR_RENDER_ATTRS]: `ssrRenderAttrs`,
+  [SSR_RENDER_ATTR]: `ssrRenderAttr`,
+  [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`,
+  [SSR_RENDER_LIST]: `ssrRenderList`,
+  [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`,
+  [SSR_LOOSE_EQUAL]: `ssrLooseEqual`,
+  [SSR_LOOSE_CONTAIN]: `ssrLooseContain`,
+  [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`,
+  [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`,
+  [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`,
+  [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`,
+  [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps`
+};
+compilerDom.registerRuntimeHelpers(ssrHelpers);
+
+const ssrTransformIf = compilerDom.createStructuralDirectiveTransform(
+  /^(if|else|else-if)$/,
+  compilerDom.processIf
+);
+function ssrProcessIf(node, context, disableNestedFragments = false) {
+  const [rootBranch] = node.branches;
+  const ifStatement = compilerDom.createIfStatement(
+    rootBranch.condition,
+    processIfBranch(rootBranch, context, disableNestedFragments)
+  );
+  context.pushStatement(ifStatement);
+  let currentIf = ifStatement;
+  for (let i = 1; i < node.branches.length; i++) {
+    const branch = node.branches[i];
+    const branchBlockStatement = processIfBranch(
+      branch,
+      context,
+      disableNestedFragments
+    );
+    if (branch.condition) {
+      currentIf = currentIf.alternate = compilerDom.createIfStatement(
+        branch.condition,
+        branchBlockStatement
+      );
+    } else {
+      currentIf.alternate = branchBlockStatement;
+    }
+  }
+  if (!currentIf.alternate) {
+    currentIf.alternate = compilerDom.createBlockStatement([
+      compilerDom.createCallExpression(`_push`, ["`<!---->`"])
+    ]);
+  }
+}
+function processIfBranch(branch, context, disableNestedFragments = false) {
+  const { children } = branch;
+  const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode
+  !(children.length === 1 && children[0].type === 11);
+  return processChildrenAsStatement(branch, context, needFragmentWrapper);
+}
+
+const ssrTransformFor = compilerDom.createStructuralDirectiveTransform(
+  "for",
+  compilerDom.processFor
+);
+function ssrProcessFor(node, context, disableNestedFragments = false) {
+  const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1);
+  const renderLoop = compilerDom.createFunctionExpression(
+    compilerDom.createForLoopParams(node.parseResult)
+  );
+  renderLoop.body = processChildrenAsStatement(
+    node,
+    context,
+    needFragmentWrapper
+  );
+  if (!disableNestedFragments) {
+    context.pushStringPart(`<!--[-->`);
+  }
+  context.pushStatement(
+    compilerDom.createCallExpression(context.helper(SSR_RENDER_LIST), [
+      node.source,
+      renderLoop
+    ])
+  );
+  if (!disableNestedFragments) {
+    context.pushStringPart(`<!--]-->`);
+  }
+}
+
+const ssrTransformSlotOutlet = (node, context) => {
+  if (compilerDom.isSlotOutlet(node)) {
+    const { slotName, slotProps } = compilerDom.processSlotOutlet(node, context);
+    const args = [
+      `_ctx.$slots`,
+      slotName,
+      slotProps || `{}`,
+      // fallback content placeholder. will be replaced in the process phase
+      `null`,
+      `_push`,
+      `_parent`
+    ];
+    if (context.scopeId && context.slotted !== false) {
+      args.push(`"${context.scopeId}-s"`);
+    }
+    let method = SSR_RENDER_SLOT;
+    const parent = context.parent;
+    if (parent && parent.type === 1 && parent.tagType === 1 && compilerDom.resolveComponentType(parent, context, true) === compilerDom.TRANSITION && parent.children.filter((c) => c.type === 1).length === 1) {
+      method = SSR_RENDER_SLOT_INNER;
+      if (!(context.scopeId && context.slotted !== false)) {
+        args.push("null");
+      }
+      args.push("true");
+    }
+    node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args);
+  }
+};
+function ssrProcessSlotOutlet(node, context) {
+  const renderCall = node.ssrCodegenNode;
+  if (node.children.length) {
+    const fallbackRenderFn = compilerDom.createFunctionExpression([]);
+    fallbackRenderFn.body = processChildrenAsStatement(node, context);
+    renderCall.arguments[3] = fallbackRenderFn;
+  }
+  if (context.withSlotScopeId) {
+    const slotScopeId = renderCall.arguments[6];
+    renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`;
+  }
+  context.pushStatement(node.ssrCodegenNode);
+}
+
+function createSSRCompilerError(code, loc) {
+  return compilerDom.createCompilerError(code, loc, SSRErrorMessages);
+}
+const SSRErrorMessages = {
+  [65]: `Unsafe attribute name for SSR.`,
+  [66]: `Missing the 'to' prop on teleport element.`,
+  [67]: `Invalid AST node during SSR transform.`
+};
+
+function ssrProcessTeleport(node, context) {
+  const targetProp = compilerDom.findProp(node, "to");
+  if (!targetProp) {
+    context.onError(
+      createSSRCompilerError(66, node.loc)
+    );
+    return;
+  }
+  let target;
+  if (targetProp.type === 6) {
+    target = targetProp.value && compilerDom.createSimpleExpression(targetProp.value.content, true);
+  } else {
+    target = targetProp.exp;
+  }
+  if (!target) {
+    context.onError(
+      createSSRCompilerError(
+        66,
+        targetProp.loc
+      )
+    );
+    return;
+  }
+  const disabledProp = compilerDom.findProp(
+    node,
+    "disabled",
+    false,
+    true
+    /* allow empty */
+  );
+  const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`;
+  const contentRenderFn = compilerDom.createFunctionExpression(
+    [`_push`],
+    void 0,
+    // Body is added later
+    true,
+    // newline
+    false,
+    // isSlot
+    node.loc
+  );
+  contentRenderFn.body = processChildrenAsStatement(node, context);
+  context.pushStatement(
+    compilerDom.createCallExpression(context.helper(SSR_RENDER_TELEPORT), [
+      `_push`,
+      contentRenderFn,
+      target,
+      disabled,
+      `_parent`
+    ])
+  );
+}
+
+const wipMap$2 = /* @__PURE__ */ new WeakMap();
+function ssrTransformSuspense(node, context) {
+  return () => {
+    if (node.children.length) {
+      const wipEntry = {
+        slotsExp: null,
+        // to be immediately set
+        wipSlots: []
+      };
+      wipMap$2.set(node, wipEntry);
+      wipEntry.slotsExp = compilerDom.buildSlots(node, context, (_props, children, loc) => {
+        const fn = compilerDom.createFunctionExpression(
+          [],
+          void 0,
+          // no return, assign body later
+          true,
+          // newline
+          false,
+          // suspense slots are not treated as normal slots
+          loc
+        );
+        wipEntry.wipSlots.push({
+          fn,
+          children
+        });
+        return fn;
+      }).slots;
+    }
+  };
+}
+function ssrProcessSuspense(node, context) {
+  const wipEntry = wipMap$2.get(node);
+  if (!wipEntry) {
+    return;
+  }
+  const { slotsExp, wipSlots } = wipEntry;
+  for (let i = 0; i < wipSlots.length; i++) {
+    const slot = wipSlots[i];
+    slot.fn.body = processChildrenAsStatement(slot, context);
+  }
+  context.pushStatement(
+    compilerDom.createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [
+      `_push`,
+      slotsExp
+    ])
+  );
+}
+
+const rawChildrenMap = /* @__PURE__ */ new WeakMap();
+const ssrTransformElement = (node, context) => {
+  if (node.type !== 1 || node.tagType !== 0) {
+    return;
+  }
+  return function ssrPostTransformElement() {
+    const openTag = [`<${node.tag}`];
+    const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0;
+    const hasDynamicVBind = compilerDom.hasDynamicKeyVBind(node);
+    const hasCustomDir = node.props.some(
+      (p) => p.type === 7 && !shared.isBuiltInDirective(p.name)
+    );
+    const needMergeProps = hasDynamicVBind || hasCustomDir;
+    if (needMergeProps) {
+      const { props, directives } = compilerDom.buildProps(
+        node,
+        context,
+        node.props,
+        false,
+        false,
+        true
+        /* ssr */
+      );
+      if (props || directives.length) {
+        const mergedProps = buildSSRProps(props, directives, context);
+        const propsExp = compilerDom.createCallExpression(
+          context.helper(SSR_RENDER_ATTRS),
+          [mergedProps]
+        );
+        if (node.tag === "textarea") {
+          const existingText = node.children[0];
+          if (!existingText || existingText.type !== 5) {
+            const tempId = `_temp${context.temps++}`;
+            propsExp.arguments = [
+              compilerDom.createAssignmentExpression(
+                compilerDom.createSimpleExpression(tempId, false),
+                mergedProps
+              )
+            ];
+            rawChildrenMap.set(
+              node,
+              compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [
+                compilerDom.createConditionalExpression(
+                  compilerDom.createSimpleExpression(`"value" in ${tempId}`, false),
+                  compilerDom.createSimpleExpression(`${tempId}.value`, false),
+                  compilerDom.createSimpleExpression(
+                    existingText ? existingText.content : ``,
+                    true
+                  ),
+                  false
+                )
+              ])
+            );
+          }
+        } else if (node.tag === "input") {
+          const vModel = findVModel(node);
+          if (vModel) {
+            const tempId = `_temp${context.temps++}`;
+            const tempExp = compilerDom.createSimpleExpression(tempId, false);
+            propsExp.arguments = [
+              compilerDom.createSequenceExpression([
+                compilerDom.createAssignmentExpression(tempExp, mergedProps),
+                compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), [
+                  tempExp,
+                  compilerDom.createCallExpression(
+                    context.helper(SSR_GET_DYNAMIC_MODEL_PROPS),
+                    [
+                      tempExp,
+                      // existing props
+                      vModel.exp
+                      // model
+                    ]
+                  )
+                ])
+              ])
+            ];
+          }
+        }
+        if (needTagForRuntime) {
+          propsExp.arguments.push(`"${node.tag}"`);
+        }
+        openTag.push(propsExp);
+      }
+    }
+    let dynamicClassBinding = void 0;
+    let staticClassBinding = void 0;
+    let dynamicStyleBinding = void 0;
+    for (let i = 0; i < node.props.length; i++) {
+      const prop = node.props[i];
+      if (node.tag === "input" && isTrueFalseValue(prop)) {
+        continue;
+      }
+      if (prop.type === 7) {
+        if (prop.name === "html" && prop.exp) {
+          rawChildrenMap.set(node, prop.exp);
+        } else if (prop.name === "text" && prop.exp) {
+          node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)];
+        } else if (prop.name === "slot") {
+          context.onError(
+            compilerDom.createCompilerError(40, prop.loc)
+          );
+        } else if (isTextareaWithValue(node, prop) && prop.exp) {
+          if (!needMergeProps) {
+            node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)];
+          }
+        } else if (!needMergeProps && prop.name !== "on") {
+          const directiveTransform = context.directiveTransforms[prop.name];
+          if (directiveTransform) {
+            const { props, ssrTagParts } = directiveTransform(
+              prop,
+              node,
+              context
+            );
+            if (ssrTagParts) {
+              openTag.push(...ssrTagParts);
+            }
+            for (let j = 0; j < props.length; j++) {
+              const { key, value } = props[j];
+              if (compilerDom.isStaticExp(key)) {
+                let attrName = key.content;
+                if (attrName === "key" || attrName === "ref") {
+                  continue;
+                }
+                if (attrName === "class") {
+                  openTag.push(
+                    ` class="`,
+                    dynamicClassBinding = compilerDom.createCallExpression(
+                      context.helper(SSR_RENDER_CLASS),
+                      [value]
+                    ),
+                    `"`
+                  );
+                } else if (attrName === "style") {
+                  if (dynamicStyleBinding) {
+                    mergeCall(dynamicStyleBinding, value);
+                  } else {
+                    openTag.push(
+                      ` style="`,
+                      dynamicStyleBinding = compilerDom.createCallExpression(
+                        context.helper(SSR_RENDER_STYLE),
+                        [value]
+                      ),
+                      `"`
+                    );
+                  }
+                } else {
+                  attrName = node.tag.indexOf("-") > 0 ? attrName : shared.propsToAttrMap[attrName] || attrName.toLowerCase();
+                  if (shared.isBooleanAttr(attrName)) {
+                    openTag.push(
+                      compilerDom.createConditionalExpression(
+                        compilerDom.createCallExpression(
+                          context.helper(SSR_INCLUDE_BOOLEAN_ATTR),
+                          [value]
+                        ),
+                        compilerDom.createSimpleExpression(" " + attrName, true),
+                        compilerDom.createSimpleExpression("", true),
+                        false
+                        /* no newline */
+                      )
+                    );
+                  } else if (shared.isSSRSafeAttrName(attrName)) {
+                    openTag.push(
+                      compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [
+                        key,
+                        value
+                      ])
+                    );
+                  } else {
+                    context.onError(
+                      createSSRCompilerError(
+                        65,
+                        key.loc
+                      )
+                    );
+                  }
+                }
+              } else {
+                const args = [key, value];
+                if (needTagForRuntime) {
+                  args.push(`"${node.tag}"`);
+                }
+                openTag.push(
+                  compilerDom.createCallExpression(
+                    context.helper(SSR_RENDER_DYNAMIC_ATTR),
+                    args
+                  )
+                );
+              }
+            }
+          }
+        }
+      } else {
+        if (node.tag === "textarea" && prop.name === "value" && prop.value) {
+          rawChildrenMap.set(node, shared.escapeHtml(prop.value.content));
+        } else if (!needMergeProps) {
+          if (prop.name === "key" || prop.name === "ref") {
+            continue;
+          }
+          if (prop.name === "class" && prop.value) {
+            staticClassBinding = JSON.stringify(prop.value.content);
+          }
+          openTag.push(
+            ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``)
+          );
+        }
+      }
+    }
+    if (dynamicClassBinding && staticClassBinding) {
+      mergeCall(dynamicClassBinding, staticClassBinding);
+      removeStaticBinding(openTag, "class");
+    }
+    if (context.scopeId) {
+      openTag.push(` ${context.scopeId}`);
+    }
+    node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag);
+  };
+};
+function buildSSRProps(props, directives, context) {
+  let mergePropsArgs = [];
+  if (props) {
+    if (props.type === 14) {
+      mergePropsArgs = props.arguments;
+    } else {
+      mergePropsArgs.push(props);
+    }
+  }
+  if (directives.length) {
+    for (const dir of directives) {
+      mergePropsArgs.push(
+        compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [
+          `_ctx`,
+          ...compilerDom.buildDirectiveArgs(dir, context).elements
+        ])
+      );
+    }
+  }
+  return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0];
+}
+function isTrueFalseValue(prop) {
+  if (prop.type === 7) {
+    return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value");
+  } else {
+    return prop.name === "true-value" || prop.name === "false-value";
+  }
+}
+function isTextareaWithValue(node, prop) {
+  return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value"));
+}
+function mergeCall(call, arg) {
+  const existing = call.arguments[0];
+  if (existing.type === 17) {
+    existing.elements.push(arg);
+  } else {
+    call.arguments[0] = compilerDom.createArrayExpression([existing, arg]);
+  }
+}
+function removeStaticBinding(tag, binding) {
+  const regExp = new RegExp(`^ ${binding}=".+"$`);
+  const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e));
+  if (i > -1) {
+    tag.splice(i, 1);
+  }
+}
+function findVModel(node) {
+  return node.props.find(
+    (p) => p.type === 7 && p.name === "model" && p.exp
+  );
+}
+function ssrProcessElement(node, context) {
+  const isVoidTag = context.options.isVoidTag || shared.NO;
+  const elementsToAdd = node.ssrCodegenNode.elements;
+  for (let j = 0; j < elementsToAdd.length; j++) {
+    context.pushStringPart(elementsToAdd[j]);
+  }
+  if (context.withSlotScopeId) {
+    context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false));
+  }
+  context.pushStringPart(`>`);
+  const rawChildren = rawChildrenMap.get(node);
+  if (rawChildren) {
+    context.pushStringPart(rawChildren);
+  } else if (node.children.length) {
+    processChildren(node, context);
+  }
+  if (!isVoidTag(node.tag)) {
+    context.pushStringPart(`</${node.tag}>`);
+  }
+}
+
+const wipMap$1 = /* @__PURE__ */ new WeakMap();
+function ssrTransformTransitionGroup(node, context) {
+  return () => {
+    const tag = compilerDom.findProp(node, "tag");
+    if (tag) {
+      const otherProps = node.props.filter((p) => p !== tag);
+      const { props, directives } = compilerDom.buildProps(
+        node,
+        context,
+        otherProps,
+        true,
+        false,
+        true
+        /* ssr (skip event listeners) */
+      );
+      let propsExp = null;
+      if (props || directives.length) {
+        propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [
+          buildSSRProps(props, directives, context)
+        ]);
+      }
+      wipMap$1.set(node, {
+        tag,
+        propsExp
+      });
+    }
+  };
+}
+function ssrProcessTransitionGroup(node, context) {
+  const entry = wipMap$1.get(node);
+  if (entry) {
+    const { tag, propsExp } = entry;
+    if (tag.type === 7) {
+      context.pushStringPart(`<`);
+      context.pushStringPart(tag.exp);
+      if (propsExp) {
+        context.pushStringPart(propsExp);
+      }
+      context.pushStringPart(`>`);
+      processChildren(
+        node,
+        context,
+        false,
+        /**
+         * TransitionGroup has the special runtime behavior of flattening and
+         * concatenating all children into a single fragment (in order for them to
+         * be patched using the same key map) so we need to account for that here
+         * by disabling nested fragment wrappers from being generated.
+         */
+        true
+      );
+      context.pushStringPart(`</`);
+      context.pushStringPart(tag.exp);
+      context.pushStringPart(`>`);
+    } else {
+      context.pushStringPart(`<${tag.value.content}`);
+      if (propsExp) {
+        context.pushStringPart(propsExp);
+      }
+      context.pushStringPart(`>`);
+      processChildren(node, context, false, true);
+      context.pushStringPart(`</${tag.value.content}>`);
+    }
+  } else {
+    processChildren(node, context, true, true);
+  }
+}
+
+const wipMap = /* @__PURE__ */ new WeakMap();
+const WIP_SLOT = Symbol();
+const componentTypeMap = /* @__PURE__ */ new WeakMap();
+const ssrTransformComponent = (node, context) => {
+  if (node.type !== 1 || node.tagType !== 1) {
+    return;
+  }
+  const component = compilerDom.resolveComponentType(
+    node,
+    context,
+    true
+    /* ssr */
+  );
+  const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT;
+  componentTypeMap.set(node, component);
+  if (shared.isSymbol(component)) {
+    if (component === compilerDom.SUSPENSE) {
+      return ssrTransformSuspense(node, context);
+    }
+    if (component === compilerDom.TRANSITION_GROUP) {
+      return ssrTransformTransitionGroup(node, context);
+    }
+    return;
+  }
+  const vnodeBranches = [];
+  const clonedNode = clone(node);
+  return function ssrPostTransformComponent() {
+    if (clonedNode.children.length) {
+      compilerDom.buildSlots(clonedNode, context, (props, children) => {
+        vnodeBranches.push(createVNodeSlotBranch(props, children, context));
+        return compilerDom.createFunctionExpression(void 0);
+      });
+    }
+    let propsExp = `null`;
+    if (node.props.length) {
+      const { props, directives } = compilerDom.buildProps(
+        node,
+        context,
+        void 0,
+        true,
+        isDynamicComponent
+      );
+      if (props || directives.length) {
+        propsExp = buildSSRProps(props, directives, context);
+      }
+    }
+    const wipEntries = [];
+    wipMap.set(node, wipEntries);
+    const buildSSRSlotFn = (props, children, loc) => {
+      const param0 = props && compilerDom.stringifyExpression(props) || `_`;
+      const fn = compilerDom.createFunctionExpression(
+        [param0, `_push`, `_parent`, `_scopeId`],
+        void 0,
+        // no return, assign body later
+        true,
+        // newline
+        true,
+        // isSlot
+        loc
+      );
+      wipEntries.push({
+        type: WIP_SLOT,
+        fn,
+        children,
+        // also collect the corresponding vnode branch built earlier
+        vnodeBranch: vnodeBranches[wipEntries.length]
+      });
+      return fn;
+    };
+    const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`;
+    if (typeof component !== "string") {
+      node.ssrCodegenNode = compilerDom.createCallExpression(
+        context.helper(SSR_RENDER_VNODE),
+        [
+          `_push`,
+          compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [
+            component,
+            propsExp,
+            slots
+          ]),
+          `_parent`
+        ]
+      );
+    } else {
+      node.ssrCodegenNode = compilerDom.createCallExpression(
+        context.helper(SSR_RENDER_COMPONENT),
+        [component, propsExp, slots, `_parent`]
+      );
+    }
+  };
+};
+function ssrProcessComponent(node, context, parent) {
+  const component = componentTypeMap.get(node);
+  if (!node.ssrCodegenNode) {
+    if (component === compilerDom.TELEPORT) {
+      return ssrProcessTeleport(node, context);
+    } else if (component === compilerDom.SUSPENSE) {
+      return ssrProcessSuspense(node, context);
+    } else if (component === compilerDom.TRANSITION_GROUP) {
+      return ssrProcessTransitionGroup(node, context);
+    } else {
+      if (parent.type === WIP_SLOT) {
+        context.pushStringPart(``);
+      }
+      if (component === compilerDom.TRANSITION) {
+        node.children = node.children.filter((c) => c.type !== 3);
+      }
+      processChildren(node, context);
+    }
+  } else {
+    const wipEntries = wipMap.get(node) || [];
+    for (let i = 0; i < wipEntries.length; i++) {
+      const { fn, vnodeBranch } = wipEntries[i];
+      fn.body = compilerDom.createIfStatement(
+        compilerDom.createSimpleExpression(`_push`, false),
+        processChildrenAsStatement(
+          wipEntries[i],
+          context,
+          false,
+          true
+          /* withSlotScopeId */
+        ),
+        vnodeBranch
+      );
+    }
+    if (context.withSlotScopeId) {
+      node.ssrCodegenNode.arguments.push(`_scopeId`);
+    }
+    if (typeof component === "string") {
+      context.pushStatement(
+        compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode])
+      );
+    } else {
+      context.pushStatement(node.ssrCodegenNode);
+    }
+  }
+}
+const rawOptionsMap = /* @__PURE__ */ new WeakMap();
+const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true);
+const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms];
+const vnodeDirectiveTransforms = {
+  ...baseDirectiveTransforms,
+  ...compilerDom.DOMDirectiveTransforms
+};
+function createVNodeSlotBranch(props, children, parentContext) {
+  const rawOptions = rawOptionsMap.get(parentContext.root);
+  const subOptions = {
+    ...rawOptions,
+    // overwrite with vnode-based transforms
+    nodeTransforms: [
+      ...vnodeNodeTransforms,
+      ...rawOptions.nodeTransforms || []
+    ],
+    directiveTransforms: {
+      ...vnodeDirectiveTransforms,
+      ...rawOptions.directiveTransforms || {}
+    }
+  };
+  const wrapperNode = {
+    type: 1,
+    ns: 0,
+    tag: "template",
+    tagType: 3,
+    isSelfClosing: false,
+    // important: provide v-slot="props" on the wrapper for proper
+    // scope analysis
+    props: [
+      {
+        type: 7,
+        name: "slot",
+        exp: props,
+        arg: void 0,
+        modifiers: [],
+        loc: compilerDom.locStub
+      }
+    ],
+    children,
+    loc: compilerDom.locStub,
+    codegenNode: void 0
+  };
+  subTransform(wrapperNode, subOptions, parentContext);
+  return compilerDom.createReturnStatement(children);
+}
+function subTransform(node, options, parentContext) {
+  const childRoot = compilerDom.createRoot([node]);
+  const childContext = compilerDom.createTransformContext(childRoot, options);
+  childContext.ssr = false;
+  childContext.scopes = { ...parentContext.scopes };
+  childContext.identifiers = { ...parentContext.identifiers };
+  childContext.imports = parentContext.imports;
+  compilerDom.traverseNode(childRoot, childContext);
+  ["helpers", "components", "directives"].forEach((key) => {
+    childContext[key].forEach((value, helperKey) => {
+      if (key === "helpers") {
+        const parentCount = parentContext.helpers.get(helperKey);
+        if (parentCount === void 0) {
+          parentContext.helpers.set(helperKey, value);
+        } else {
+          parentContext.helpers.set(helperKey, value + parentCount);
+        }
+      } else {
+        parentContext[key].add(value);
+      }
+    });
+  });
+}
+function clone(v) {
+  if (shared.isArray(v)) {
+    return v.map(clone);
+  } else if (shared.isObject(v)) {
+    const res = {};
+    for (const key in v) {
+      res[key] = clone(v[key]);
+    }
+    return res;
+  } else {
+    return v;
+  }
+}
+
+function ssrCodegenTransform(ast, options) {
+  const context = createSSRTransformContext(ast, options);
+  if (options.ssrCssVars) {
+    const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options);
+    const varsExp = compilerDom.processExpression(
+      compilerDom.createSimpleExpression(options.ssrCssVars, false),
+      cssContext
+    );
+    context.body.push(
+      compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`])
+    );
+    Array.from(cssContext.helpers.keys()).forEach((helper) => {
+      ast.helpers.add(helper);
+    });
+  }
+  const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c));
+  processChildren(ast, context, isFragment);
+  ast.codegenNode = compilerDom.createBlockStatement(context.body);
+  ast.ssrHelpers = Array.from(
+    /* @__PURE__ */ new Set([
+      ...Array.from(ast.helpers).filter((h) => h in ssrHelpers),
+      ...context.helpers
+    ])
+  );
+  ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers)));
+}
+function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) {
+  const body = [];
+  let currentString = null;
+  return {
+    root,
+    options,
+    body,
+    helpers,
+    withSlotScopeId,
+    onError: options.onError || ((e) => {
+      throw e;
+    }),
+    helper(name) {
+      helpers.add(name);
+      return name;
+    },
+    pushStringPart(part) {
+      if (!currentString) {
+        const currentCall = compilerDom.createCallExpression(`_push`);
+        body.push(currentCall);
+        currentString = compilerDom.createTemplateLiteral([]);
+        currentCall.arguments.push(currentString);
+      }
+      const bufferedElements = currentString.elements;
+      const lastItem = bufferedElements[bufferedElements.length - 1];
+      if (shared.isString(part) && shared.isString(lastItem)) {
+        bufferedElements[bufferedElements.length - 1] += part;
+      } else {
+        bufferedElements.push(part);
+      }
+    },
+    pushStatement(statement) {
+      currentString = null;
+      body.push(statement);
+    }
+  };
+}
+function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) {
+  return createSSRTransformContext(
+    parent.root,
+    parent.options,
+    parent.helpers,
+    withSlotScopeId
+  );
+}
+function processChildren(parent, context, asFragment = false, disableNestedFragments = false) {
+  if (asFragment) {
+    context.pushStringPart(`<!--[-->`);
+  }
+  const { children } = parent;
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+    switch (child.type) {
+      case 1:
+        switch (child.tagType) {
+          case 0:
+            ssrProcessElement(child, context);
+            break;
+          case 1:
+            ssrProcessComponent(child, context, parent);
+            break;
+          case 2:
+            ssrProcessSlotOutlet(child, context);
+            break;
+          case 3:
+            break;
+          default:
+            context.onError(
+              createSSRCompilerError(
+                67,
+                child.loc
+              )
+            );
+            const exhaustiveCheck2 = child;
+            return exhaustiveCheck2;
+        }
+        break;
+      case 2:
+        context.pushStringPart(shared.escapeHtml(child.content));
+        break;
+      case 3:
+        context.pushStringPart(`<!--${child.content}-->`);
+        break;
+      case 5:
+        context.pushStringPart(
+          compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [child.content])
+        );
+        break;
+      case 9:
+        ssrProcessIf(child, context, disableNestedFragments);
+        break;
+      case 11:
+        ssrProcessFor(child, context, disableNestedFragments);
+        break;
+      case 10:
+        break;
+      case 12:
+      case 8:
+        break;
+      default:
+        context.onError(
+          createSSRCompilerError(
+            67,
+            child.loc
+          )
+        );
+        const exhaustiveCheck = child;
+        return exhaustiveCheck;
+    }
+  }
+  if (asFragment) {
+    context.pushStringPart(`<!--]-->`);
+  }
+}
+function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) {
+  const childContext = createChildContext(parentContext, withSlotScopeId);
+  processChildren(parent, childContext, asFragment);
+  return compilerDom.createBlockStatement(childContext.body);
+}
+
+const ssrTransformModel = (dir, node, context) => {
+  const model = dir.exp;
+  function checkDuplicatedValue() {
+    const value = compilerDom.findProp(node, "value");
+    if (value) {
+      context.onError(
+        compilerDom.createDOMCompilerError(
+          60,
+          value.loc
+        )
+      );
+    }
+  }
+  if (node.tagType === 0) {
+    const res = { props: [] };
+    const defaultProps = [
+      // default value binding for text type inputs
+      compilerDom.createObjectProperty(`value`, model)
+    ];
+    if (node.tag === "input") {
+      const type = compilerDom.findProp(node, "type");
+      if (type) {
+        const value = findValueBinding(node);
+        if (type.type === 7) {
+          res.ssrTagParts = [
+            compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [
+              type.exp,
+              model,
+              value
+            ])
+          ];
+        } else if (type.value) {
+          switch (type.value.content) {
+            case "radio":
+              res.props = [
+                compilerDom.createObjectProperty(
+                  `checked`,
+                  compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
+                    model,
+                    value
+                  ])
+                )
+              ];
+              break;
+            case "checkbox":
+              const trueValueBinding = compilerDom.findProp(node, "true-value");
+              if (trueValueBinding) {
+                const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp;
+                res.props = [
+                  compilerDom.createObjectProperty(
+                    `checked`,
+                    compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
+                      model,
+                      trueValue
+                    ])
+                  )
+                ];
+              } else {
+                res.props = [
+                  compilerDom.createObjectProperty(
+                    `checked`,
+                    compilerDom.createConditionalExpression(
+                      compilerDom.createCallExpression(`Array.isArray`, [model]),
+                      compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [
+                        model,
+                        value
+                      ]),
+                      model
+                    )
+                  )
+                ];
+              }
+              break;
+            case "file":
+              context.onError(
+                compilerDom.createDOMCompilerError(
+                  59,
+                  dir.loc
+                )
+              );
+              break;
+            default:
+              checkDuplicatedValue();
+              res.props = defaultProps;
+              break;
+          }
+        }
+      } else if (compilerDom.hasDynamicKeyVBind(node)) ; else {
+        checkDuplicatedValue();
+        res.props = defaultProps;
+      }
+    } else if (node.tag === "textarea") {
+      checkDuplicatedValue();
+      node.children = [compilerDom.createInterpolation(model, model.loc)];
+    } else if (node.tag === "select") ; else {
+      context.onError(
+        compilerDom.createDOMCompilerError(
+          57,
+          dir.loc
+        )
+      );
+    }
+    return res;
+  } else {
+    return compilerDom.transformModel(dir, node, context);
+  }
+};
+function findValueBinding(node) {
+  const valueBinding = compilerDom.findProp(node, "value");
+  return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false);
+}
+
+const ssrTransformShow = (dir, node, context) => {
+  if (!dir.exp) {
+    context.onError(
+      compilerDom.createDOMCompilerError(61)
+    );
+  }
+  return {
+    props: [
+      compilerDom.createObjectProperty(
+        `style`,
+        compilerDom.createConditionalExpression(
+          dir.exp,
+          compilerDom.createSimpleExpression(`null`, false),
+          compilerDom.createObjectExpression([
+            compilerDom.createObjectProperty(
+              `display`,
+              compilerDom.createSimpleExpression(`none`, true)
+            )
+          ]),
+          false
+          /* no newline */
+        )
+      )
+    ]
+  };
+};
+
+const filterChild = (node) => node.children.filter((n) => n.type !== 3);
+const hasSingleChild = (node) => filterChild(node).length === 1;
+const ssrInjectFallthroughAttrs = (node, context) => {
+  if (node.type === 0) {
+    context.identifiers._attrs = 1;
+  }
+  if (node.type === 1 && node.tagType === 1 && (compilerDom.isBuiltInType(node.tag, "Transition") || compilerDom.isBuiltInType(node.tag, "KeepAlive"))) {
+    const rootChildren = filterChild(context.root);
+    if (rootChildren.length === 1 && rootChildren[0] === node) {
+      if (hasSingleChild(node)) {
+        injectFallthroughAttrs(node.children[0]);
+      }
+      return;
+    }
+  }
+  const parent = context.parent;
+  if (!parent || parent.type !== 0) {
+    return;
+  }
+  if (node.type === 10 && hasSingleChild(node)) {
+    let hasEncounteredIf = false;
+    for (const c of filterChild(parent)) {
+      if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) {
+        if (hasEncounteredIf)
+          return;
+        hasEncounteredIf = true;
+      } else if (
+        // node before v-if
+        !hasEncounteredIf || // non else nodes
+        !(c.type === 1 && compilerDom.findDir(c, /else/, true))
+      ) {
+        return;
+      }
+    }
+    injectFallthroughAttrs(node.children[0]);
+  } else if (hasSingleChild(parent)) {
+    injectFallthroughAttrs(node);
+  }
+};
+function injectFallthroughAttrs(node) {
+  if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
+    node.props.push({
+      type: 7,
+      name: "bind",
+      arg: void 0,
+      exp: compilerDom.createSimpleExpression(`_attrs`, false),
+      modifiers: [],
+      loc: compilerDom.locStub
+    });
+  }
+}
+
+const ssrInjectCssVars = (node, context) => {
+  if (!context.ssrCssVars) {
+    return;
+  }
+  if (node.type === 0) {
+    context.identifiers._cssVars = 1;
+  }
+  const parent = context.parent;
+  if (!parent || parent.type !== 0) {
+    return;
+  }
+  if (node.type === 10) {
+    for (const child of node.children) {
+      injectCssVars(child);
+    }
+  } else {
+    injectCssVars(node);
+  }
+};
+function injectCssVars(node) {
+  if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
+    if (compilerDom.isBuiltInType(node.tag, "Suspense")) {
+      for (const child of node.children) {
+        if (child.type === 1 && child.tagType === 3) {
+          child.children.forEach(injectCssVars);
+        } else {
+          injectCssVars(child);
+        }
+      }
+    } else {
+      node.props.push({
+        type: 7,
+        name: "bind",
+        arg: void 0,
+        exp: compilerDom.createSimpleExpression(`_cssVars`, false),
+        modifiers: [],
+        loc: compilerDom.locStub
+      });
+    }
+  }
+}
+
+function compile(template, options = {}) {
+  options = {
+    ...options,
+    // apply DOM-specific parsing options
+    ...compilerDom.parserOptions,
+    ssr: true,
+    inSSR: true,
+    scopeId: options.mode === "function" ? null : options.scopeId,
+    // always prefix since compiler-ssr doesn't have size concern
+    prefixIdentifiers: true,
+    // disable optimizations that are unnecessary for ssr
+    cacheHandlers: false,
+    hoistStatic: false
+  };
+  const ast = compilerDom.baseParse(template, options);
+  rawOptionsMap.set(ast, options);
+  compilerDom.transform(ast, {
+    ...options,
+    hoistStatic: false,
+    nodeTransforms: [
+      ssrTransformIf,
+      ssrTransformFor,
+      compilerDom.trackVForSlotScopes,
+      compilerDom.transformExpression,
+      ssrTransformSlotOutlet,
+      ssrInjectFallthroughAttrs,
+      ssrInjectCssVars,
+      ssrTransformElement,
+      ssrTransformComponent,
+      compilerDom.trackSlotScopes,
+      compilerDom.transformStyle,
+      ...options.nodeTransforms || []
+      // user transforms
+    ],
+    directiveTransforms: {
+      // reusing core v-bind
+      bind: compilerDom.transformBind,
+      on: compilerDom.transformOn,
+      // model and show has dedicated SSR handling
+      model: ssrTransformModel,
+      show: ssrTransformShow,
+      // the following are ignored during SSR
+      // on: noopDirectiveTransform,
+      cloak: compilerDom.noopDirectiveTransform,
+      once: compilerDom.noopDirectiveTransform,
+      memo: compilerDom.noopDirectiveTransform,
+      ...options.directiveTransforms || {}
+      // user transforms
+    }
+  });
+  ssrCodegenTransform(ast, options);
+  return compilerDom.generate(ast, options);
+}
+
+exports.compile = compile;

+ 4 - 0
node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts

xqd
@@ -0,0 +1,4 @@
+import { CompilerOptions, CodegenResult } from '@vue/compiler-dom';
+
+export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
+

+ 34 - 0
node_modules/@vue/compiler-ssr/package.json

xqd
@@ -0,0 +1,34 @@
+{
+  "name": "@vue/compiler-ssr",
+  "version": "3.3.4",
+  "description": "@vue/compiler-ssr",
+  "main": "dist/compiler-ssr.cjs.js",
+  "types": "dist/compiler-ssr.d.ts",
+  "files": [
+    "dist"
+  ],
+  "buildOptions": {
+    "prod": false,
+    "formats": [
+      "cjs"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vuejs/core.git",
+    "directory": "packages/compiler-ssr"
+  },
+  "keywords": [
+    "vue"
+  ],
+  "author": "Evan You",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/vuejs/core/issues"
+  },
+  "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme",
+  "dependencies": {
+    "@vue/shared": "3.3.4",
+    "@vue/compiler-dom": "3.3.4"
+  }
+}

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/api.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/app.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/component.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/context.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/hooks.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 22 - 0
node_modules/@vue/devtools-api/lib/cjs/api/index.js

xqd
@@ -0,0 +1,22 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    var desc = Object.getOwnPropertyDescriptor(m, k);
+    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+      desc = { enumerable: true, get: function() { return m[k]; } };
+    }
+    Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./api.js"), exports);
+__exportStar(require("./app.js"), exports);
+__exportStar(require("./component.js"), exports);
+__exportStar(require("./context.js"), exports);
+__exportStar(require("./hooks.js"), exports);
+__exportStar(require("./util.js"), exports);

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/api/util.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 5 - 0
node_modules/@vue/devtools-api/lib/cjs/const.js

xqd
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.HOOK_PLUGIN_SETTINGS_SET = exports.HOOK_SETUP = void 0;
+exports.HOOK_SETUP = 'devtools-plugin:setup';
+exports.HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';

+ 17 - 0
node_modules/@vue/devtools-api/lib/cjs/env.js

xqd
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isProxyAvailable = exports.getTarget = exports.getDevtoolsGlobalHook = void 0;
+function getDevtoolsGlobalHook() {
+    return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
+}
+exports.getDevtoolsGlobalHook = getDevtoolsGlobalHook;
+function getTarget() {
+    // @ts-ignore
+    return (typeof navigator !== 'undefined' && typeof window !== 'undefined')
+        ? window
+        : typeof global !== 'undefined'
+            ? global
+            : {};
+}
+exports.getTarget = getTarget;
+exports.isProxyAvailable = typeof Proxy === 'function';

+ 44 - 0
node_modules/@vue/devtools-api/lib/cjs/index.js

xqd
@@ -0,0 +1,44 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    var desc = Object.getOwnPropertyDescriptor(m, k);
+    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+      desc = { enumerable: true, get: function() { return m[k]; } };
+    }
+    Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupDevtoolsPlugin = void 0;
+const env_js_1 = require("./env.js");
+const const_js_1 = require("./const.js");
+const proxy_js_1 = require("./proxy.js");
+__exportStar(require("./api/index.js"), exports);
+__exportStar(require("./plugin.js"), exports);
+__exportStar(require("./time.js"), exports);
+function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
+    const descriptor = pluginDescriptor;
+    const target = (0, env_js_1.getTarget)();
+    const hook = (0, env_js_1.getDevtoolsGlobalHook)();
+    const enableProxy = env_js_1.isProxyAvailable && descriptor.enableEarlyProxy;
+    if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
+        hook.emit(const_js_1.HOOK_SETUP, pluginDescriptor, setupFn);
+    }
+    else {
+        const proxy = enableProxy ? new proxy_js_1.ApiProxy(descriptor, hook) : null;
+        const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
+        list.push({
+            pluginDescriptor: descriptor,
+            setupFn,
+            proxy,
+        });
+        if (proxy)
+            setupFn(proxy.proxiedTarget);
+    }
+}
+exports.setupDevtoolsPlugin = setupDevtoolsPlugin;

+ 2 - 0
node_modules/@vue/devtools-api/lib/cjs/plugin.js

xqd
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 111 - 0
node_modules/@vue/devtools-api/lib/cjs/proxy.js

xqd
@@ -0,0 +1,111 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ApiProxy = void 0;
+const const_js_1 = require("./const.js");
+const time_js_1 = require("./time.js");
+class ApiProxy {
+    constructor(plugin, hook) {
+        this.target = null;
+        this.targetQueue = [];
+        this.onQueue = [];
+        this.plugin = plugin;
+        this.hook = hook;
+        const defaultSettings = {};
+        if (plugin.settings) {
+            for (const id in plugin.settings) {
+                const item = plugin.settings[id];
+                defaultSettings[id] = item.defaultValue;
+            }
+        }
+        const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
+        let currentSettings = Object.assign({}, defaultSettings);
+        try {
+            const raw = localStorage.getItem(localSettingsSaveId);
+            const data = JSON.parse(raw);
+            Object.assign(currentSettings, data);
+        }
+        catch (e) {
+            // noop
+        }
+        this.fallbacks = {
+            getSettings() {
+                return currentSettings;
+            },
+            setSettings(value) {
+                try {
+                    localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
+                }
+                catch (e) {
+                    // noop
+                }
+                currentSettings = value;
+            },
+            now() {
+                return (0, time_js_1.now)();
+            },
+        };
+        if (hook) {
+            hook.on(const_js_1.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
+                if (pluginId === this.plugin.id) {
+                    this.fallbacks.setSettings(value);
+                }
+            });
+        }
+        this.proxiedOn = new Proxy({}, {
+            get: (_target, prop) => {
+                if (this.target) {
+                    return this.target.on[prop];
+                }
+                else {
+                    return (...args) => {
+                        this.onQueue.push({
+                            method: prop,
+                            args,
+                        });
+                    };
+                }
+            },
+        });
+        this.proxiedTarget = new Proxy({}, {
+            get: (_target, prop) => {
+                if (this.target) {
+                    return this.target[prop];
+                }
+                else if (prop === 'on') {
+                    return this.proxiedOn;
+                }
+                else if (Object.keys(this.fallbacks).includes(prop)) {
+                    return (...args) => {
+                        this.targetQueue.push({
+                            method: prop,
+                            args,
+                            resolve: () => { },
+                        });
+                        return this.fallbacks[prop](...args);
+                    };
+                }
+                else {
+                    return (...args) => {
+                        return new Promise(resolve => {
+                            this.targetQueue.push({
+                                method: prop,
+                                args,
+                                resolve,
+                            });
+                        });
+                    };
+                }
+            },
+        });
+    }
+    async setRealTarget(target) {
+        this.target = target;
+        for (const item of this.onQueue) {
+            this.target.on[item.method](...item.args);
+        }
+        for (const item of this.targetQueue) {
+            item.resolve(await this.target[item.method](...item.args));
+        }
+    }
+}
+exports.ApiProxy = ApiProxy;

+ 28 - 0
node_modules/@vue/devtools-api/lib/cjs/time.js

xqd
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.now = exports.isPerformanceSupported = void 0;
+let supported;
+let perf;
+function isPerformanceSupported() {
+    var _a;
+    if (supported !== undefined) {
+        return supported;
+    }
+    if (typeof window !== 'undefined' && window.performance) {
+        supported = true;
+        perf = window.performance;
+    }
+    else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
+        supported = true;
+        perf = global.perf_hooks.performance;
+    }
+    else {
+        supported = false;
+    }
+    return supported;
+}
+exports.isPerformanceSupported = isPerformanceSupported;
+function now() {
+    return isPerformanceSupported() ? perf.now() : Date.now();
+}
+exports.now = now;

+ 108 - 0
node_modules/@vue/devtools-api/lib/esm/api/api.d.ts

xqd
@@ -0,0 +1,108 @@
+import type { ComponentBounds, Hookable } from './hooks.js';
+import type { Context } from './context.js';
+import type { ComponentInstance, ComponentState, StateBase } from './component.js';
+import type { App } from './app.js';
+import type { ID } from './util.js';
+export interface DevtoolsPluginApi<TSettings> {
+    on: Hookable<Context>;
+    notifyComponentUpdate(instance?: ComponentInstance): void;
+    addTimelineLayer(options: TimelineLayerOptions): void;
+    addTimelineEvent(options: TimelineEventOptions): void;
+    addInspector(options: CustomInspectorOptions): void;
+    sendInspectorTree(inspectorId: string): void;
+    sendInspectorState(inspectorId: string): void;
+    selectInspectorNode(inspectorId: string, nodeId: string): void;
+    getComponentBounds(instance: ComponentInstance): Promise<ComponentBounds>;
+    getComponentName(instance: ComponentInstance): Promise<string>;
+    getComponentInstances(app: App): Promise<ComponentInstance[]>;
+    highlightElement(instance: ComponentInstance): void;
+    unhighlightElement(): void;
+    getSettings(pluginId?: string): TSettings;
+    now(): number;
+    /**
+     * @private Not implemented yet
+     */
+    setSettings(values: TSettings): void;
+}
+export interface AppRecord {
+    id: string;
+    name: string;
+    instanceMap: Map<string, ComponentInstance>;
+    rootInstance: ComponentInstance;
+}
+export interface TimelineLayerOptions<TData = any, TMeta = any> {
+    id: string;
+    label: string;
+    color: number;
+    skipScreenshots?: boolean;
+    groupsOnly?: boolean;
+    ignoreNoDurationGroups?: boolean;
+    screenshotOverlayRender?: (event: TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise<ScreenshotOverlayRenderResult>;
+}
+export interface ScreenshotOverlayEvent {
+    layerId: string;
+    renderMeta: any;
+}
+export interface ScreenshotOverlayRenderContext<TData = any, TMeta = any> {
+    screenshot: ScreenshotData;
+    events: (TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent)[];
+    index: number;
+}
+export declare type ScreenshotOverlayRenderResult = HTMLElement | string | false;
+export interface ScreenshotData {
+    time: number;
+}
+export interface TimelineEventOptions {
+    layerId: string;
+    event: TimelineEvent;
+    all?: boolean;
+}
+export interface TimelineEvent<TData = any, TMeta = any> {
+    time: number;
+    data: TData;
+    logType?: 'default' | 'warning' | 'error';
+    meta?: TMeta;
+    groupId?: ID;
+    title?: string;
+    subtitle?: string;
+}
+export interface TimelineMarkerOptions {
+    id: string;
+    time: number;
+    color: number;
+    label: string;
+    all?: boolean;
+}
+export interface CustomInspectorOptions {
+    id: string;
+    label: string;
+    icon?: string;
+    treeFilterPlaceholder?: string;
+    stateFilterPlaceholder?: string;
+    noSelectionText?: string;
+    actions?: {
+        icon: string;
+        tooltip?: string;
+        action: () => void | Promise<void>;
+    }[];
+    nodeActions?: {
+        icon: string;
+        tooltip?: string;
+        action: (nodeId: string) => void | Promise<void>;
+    }[];
+}
+export interface CustomInspectorNode {
+    id: string;
+    label: string;
+    children?: CustomInspectorNode[];
+    tags?: InspectorNodeTag[];
+}
+export interface InspectorNodeTag {
+    label: string;
+    textColor: number;
+    backgroundColor: number;
+    tooltip?: string;
+}
+export interface CustomInspectorState {
+    [key: string]: (StateBase | Omit<ComponentState, 'type'>)[];
+}

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/api.js

xqd
@@ -0,0 +1 @@
+export {};

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/app.d.ts

xqd
@@ -0,0 +1 @@
+export declare type App = any;

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/app.js

xqd
@@ -0,0 +1 @@
+export {};

+ 78 - 0
node_modules/@vue/devtools-api/lib/esm/api/component.d.ts

xqd
@@ -0,0 +1,78 @@
+import type { InspectorNodeTag } from './api.js';
+import type { ID } from './util.js';
+export declare type ComponentInstance = any;
+export interface ComponentTreeNode {
+    uid: ID;
+    id: string;
+    name: string;
+    renderKey: string | number;
+    inactive: boolean;
+    isFragment: boolean;
+    hasChildren: boolean;
+    children: ComponentTreeNode[];
+    domOrder?: number[];
+    consoleId?: string;
+    isRouterView?: boolean;
+    macthedRouteSegment?: string;
+    tags: InspectorNodeTag[];
+    autoOpen: boolean;
+    meta?: any;
+}
+export interface InspectedComponentData {
+    id: string;
+    name: string;
+    file: string;
+    state: ComponentState[];
+    functional?: boolean;
+}
+export interface StateBase {
+    key: string;
+    value: any;
+    editable?: boolean;
+    objectType?: 'ref' | 'reactive' | 'computed' | 'other';
+    raw?: string;
+}
+export interface ComponentStateBase extends StateBase {
+    type: string;
+}
+export interface ComponentPropState extends ComponentStateBase {
+    meta?: {
+        type: string;
+        required: boolean;
+        /** Vue 1 only */
+        mode?: 'default' | 'sync' | 'once';
+    };
+}
+export declare type ComponentBuiltinCustomStateTypes = 'function' | 'map' | 'set' | 'reference' | 'component' | 'component-definition' | 'router' | 'store';
+export interface ComponentCustomState extends ComponentStateBase {
+    value: CustomState;
+}
+export declare type CustomState = {
+    _custom: {
+        type: ComponentBuiltinCustomStateTypes | string;
+        objectType?: string;
+        display?: string;
+        tooltip?: string;
+        value?: any;
+        abstract?: boolean;
+        file?: string;
+        uid?: number;
+        readOnly?: boolean;
+        /** Configure immediate child fields */
+        fields?: {
+            abstract?: boolean;
+        };
+        id?: any;
+        actions?: {
+            icon: string;
+            tooltip?: string;
+            action: () => void | Promise<void>;
+        }[];
+        /** internal */
+        _reviveId?: number;
+    };
+};
+export declare type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState;
+export interface ComponentDevtoolsOptions {
+    hide?: boolean;
+}

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/component.js

xqd
@@ -0,0 +1 @@
+export {};

+ 5 - 0
node_modules/@vue/devtools-api/lib/esm/api/context.d.ts

xqd
@@ -0,0 +1,5 @@
+import type { AppRecord } from './api.js';
+export interface Context {
+    currentTab: string;
+    currentAppRecord: AppRecord;
+}

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/context.js

xqd
@@ -0,0 +1 @@
+export {};

+ 180 - 0
node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts

xqd
@@ -0,0 +1,180 @@
+import type { ComponentTreeNode, InspectedComponentData, ComponentInstance, ComponentDevtoolsOptions } from './component.js';
+import type { App } from './app.js';
+import type { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api.js';
+export declare const enum Hooks {
+    TRANSFORM_CALL = "transformCall",
+    GET_APP_RECORD_NAME = "getAppRecordName",
+    GET_APP_ROOT_INSTANCE = "getAppRootInstance",
+    REGISTER_APPLICATION = "registerApplication",
+    WALK_COMPONENT_TREE = "walkComponentTree",
+    VISIT_COMPONENT_TREE = "visitComponentTree",
+    WALK_COMPONENT_PARENTS = "walkComponentParents",
+    INSPECT_COMPONENT = "inspectComponent",
+    GET_COMPONENT_BOUNDS = "getComponentBounds",
+    GET_COMPONENT_NAME = "getComponentName",
+    GET_COMPONENT_INSTANCES = "getComponentInstances",
+    GET_ELEMENT_COMPONENT = "getElementComponent",
+    GET_COMPONENT_ROOT_ELEMENTS = "getComponentRootElements",
+    EDIT_COMPONENT_STATE = "editComponentState",
+    GET_COMPONENT_DEVTOOLS_OPTIONS = "getAppDevtoolsOptions",
+    GET_COMPONENT_RENDER_CODE = "getComponentRenderCode",
+    INSPECT_TIMELINE_EVENT = "inspectTimelineEvent",
+    TIMELINE_CLEARED = "timelineCleared",
+    GET_INSPECTOR_TREE = "getInspectorTree",
+    GET_INSPECTOR_STATE = "getInspectorState",
+    EDIT_INSPECTOR_STATE = "editInspectorState",
+    SET_PLUGIN_SETTINGS = "setPluginSettings"
+}
+export interface ComponentBounds {
+    left: number;
+    top: number;
+    width: number;
+    height: number;
+}
+export declare type HookPayloads = {
+    [Hooks.TRANSFORM_CALL]: {
+        callName: string;
+        inArgs: any[];
+        outArgs: any[];
+    };
+    [Hooks.GET_APP_RECORD_NAME]: {
+        app: App;
+        name: string;
+    };
+    [Hooks.GET_APP_ROOT_INSTANCE]: {
+        app: App;
+        root: ComponentInstance;
+    };
+    [Hooks.REGISTER_APPLICATION]: {
+        app: App;
+    };
+    [Hooks.WALK_COMPONENT_TREE]: {
+        componentInstance: ComponentInstance;
+        componentTreeData: ComponentTreeNode[];
+        maxDepth: number;
+        filter: string;
+        recursively: boolean;
+    };
+    [Hooks.VISIT_COMPONENT_TREE]: {
+        app: App;
+        componentInstance: ComponentInstance;
+        treeNode: ComponentTreeNode;
+        filter: string;
+    };
+    [Hooks.WALK_COMPONENT_PARENTS]: {
+        componentInstance: ComponentInstance;
+        parentInstances: ComponentInstance[];
+    };
+    [Hooks.INSPECT_COMPONENT]: {
+        app: App;
+        componentInstance: ComponentInstance;
+        instanceData: InspectedComponentData;
+    };
+    [Hooks.GET_COMPONENT_BOUNDS]: {
+        componentInstance: ComponentInstance;
+        bounds: ComponentBounds;
+    };
+    [Hooks.GET_COMPONENT_NAME]: {
+        componentInstance: ComponentInstance;
+        name: string;
+    };
+    [Hooks.GET_COMPONENT_INSTANCES]: {
+        app: App;
+        componentInstances: ComponentInstance[];
+    };
+    [Hooks.GET_ELEMENT_COMPONENT]: {
+        element: HTMLElement | any;
+        componentInstance: ComponentInstance;
+    };
+    [Hooks.GET_COMPONENT_ROOT_ELEMENTS]: {
+        componentInstance: ComponentInstance;
+        rootElements: (HTMLElement | any)[];
+    };
+    [Hooks.EDIT_COMPONENT_STATE]: {
+        app: App;
+        componentInstance: ComponentInstance;
+        path: string[];
+        type: string;
+        state: EditStatePayload;
+        set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
+    };
+    [Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS]: {
+        componentInstance: ComponentInstance;
+        options: ComponentDevtoolsOptions;
+    };
+    [Hooks.GET_COMPONENT_RENDER_CODE]: {
+        componentInstance: ComponentInstance;
+        code: string;
+    };
+    [Hooks.INSPECT_TIMELINE_EVENT]: {
+        app: App;
+        layerId: string;
+        event: TimelineEvent;
+        all?: boolean;
+        data: any;
+    };
+    [Hooks.TIMELINE_CLEARED]: Record<string, never>;
+    [Hooks.GET_INSPECTOR_TREE]: {
+        app: App;
+        inspectorId: string;
+        filter: string;
+        rootNodes: CustomInspectorNode[];
+    };
+    [Hooks.GET_INSPECTOR_STATE]: {
+        app: App;
+        inspectorId: string;
+        nodeId: string;
+        state: CustomInspectorState;
+    };
+    [Hooks.EDIT_INSPECTOR_STATE]: {
+        app: App;
+        inspectorId: string;
+        nodeId: string;
+        path: string[];
+        type: string;
+        state: EditStatePayload;
+        set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
+    };
+    [Hooks.SET_PLUGIN_SETTINGS]: {
+        app: App;
+        pluginId: string;
+        key: string;
+        newValue: any;
+        oldValue: any;
+        settings: any;
+    };
+};
+export declare type EditStatePayload = {
+    value: any;
+    newKey?: string | null;
+    remove?: undefined | false;
+} | {
+    value?: undefined;
+    newKey?: undefined;
+    remove: true;
+};
+export declare type HookHandler<TPayload, TContext> = (payload: TPayload, ctx: TContext) => void | Promise<void>;
+export interface Hookable<TContext> {
+    transformCall(handler: HookHandler<HookPayloads[Hooks.TRANSFORM_CALL], TContext>): any;
+    getAppRecordName(handler: HookHandler<HookPayloads[Hooks.GET_APP_RECORD_NAME], TContext>): any;
+    getAppRootInstance(handler: HookHandler<HookPayloads[Hooks.GET_APP_ROOT_INSTANCE], TContext>): any;
+    registerApplication(handler: HookHandler<HookPayloads[Hooks.REGISTER_APPLICATION], TContext>): any;
+    walkComponentTree(handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_TREE], TContext>): any;
+    visitComponentTree(handler: HookHandler<HookPayloads[Hooks.VISIT_COMPONENT_TREE], TContext>): any;
+    walkComponentParents(handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_PARENTS], TContext>): any;
+    inspectComponent(handler: HookHandler<HookPayloads[Hooks.INSPECT_COMPONENT], TContext>): any;
+    getComponentBounds(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_BOUNDS], TContext>): any;
+    getComponentName(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_NAME], TContext>): any;
+    getComponentInstances(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_INSTANCES], TContext>): any;
+    getElementComponent(handler: HookHandler<HookPayloads[Hooks.GET_ELEMENT_COMPONENT], TContext>): any;
+    getComponentRootElements(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_ROOT_ELEMENTS], TContext>): any;
+    editComponentState(handler: HookHandler<HookPayloads[Hooks.EDIT_COMPONENT_STATE], TContext>): any;
+    getComponentDevtoolsOptions(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS], TContext>): any;
+    getComponentRenderCode(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_RENDER_CODE], TContext>): any;
+    inspectTimelineEvent(handler: HookHandler<HookPayloads[Hooks.INSPECT_TIMELINE_EVENT], TContext>): any;
+    timelineCleared(handler: HookHandler<HookPayloads[Hooks.TIMELINE_CLEARED], TContext>): any;
+    getInspectorTree(handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_TREE], TContext>): any;
+    getInspectorState(handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_STATE], TContext>): any;
+    editInspectorState(handler: HookHandler<HookPayloads[Hooks.EDIT_INSPECTOR_STATE], TContext>): any;
+    setPluginSettings(handler: HookHandler<HookPayloads[Hooks.SET_PLUGIN_SETTINGS], TContext>): any;
+}

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/hooks.js

xqd
@@ -0,0 +1 @@
+export {};

+ 6 - 0
node_modules/@vue/devtools-api/lib/esm/api/index.d.ts

xqd
@@ -0,0 +1,6 @@
+export * from './api.js';
+export * from './app.js';
+export * from './component.js';
+export * from './context.js';
+export * from './hooks.js';
+export * from './util.js';

+ 6 - 0
node_modules/@vue/devtools-api/lib/esm/api/index.js

xqd
@@ -0,0 +1,6 @@
+export * from './api.js';
+export * from './app.js';
+export * from './component.js';
+export * from './context.js';
+export * from './hooks.js';
+export * from './util.js';

+ 4 - 0
node_modules/@vue/devtools-api/lib/esm/api/util.d.ts

xqd
@@ -0,0 +1,4 @@
+export declare type ID = number | string;
+export interface WithId {
+    id: ID;
+}

+ 1 - 0
node_modules/@vue/devtools-api/lib/esm/api/util.js

xqd
@@ -0,0 +1 @@
+export {};

+ 2 - 0
node_modules/@vue/devtools-api/lib/esm/const.d.ts

xqd
@@ -0,0 +1,2 @@
+export declare const HOOK_SETUP = "devtools-plugin:setup";
+export declare const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";

+ 2 - 0
node_modules/@vue/devtools-api/lib/esm/const.js

xqd
@@ -0,0 +1,2 @@
+export const HOOK_SETUP = 'devtools-plugin:setup';
+export const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';

+ 15 - 0
node_modules/@vue/devtools-api/lib/esm/env.d.ts

xqd
@@ -0,0 +1,15 @@
+import type { PluginDescriptor, SetupFunction } from './index.js';
+import type { ApiProxy } from './proxy.js';
+export interface PluginQueueItem {
+    pluginDescriptor: PluginDescriptor;
+    setupFn: SetupFunction;
+    proxy?: ApiProxy;
+}
+interface GlobalTarget {
+    __VUE_DEVTOOLS_PLUGINS__?: PluginQueueItem[];
+    __VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__?: boolean;
+}
+export declare function getDevtoolsGlobalHook(): any;
+export declare function getTarget(): GlobalTarget;
+export declare const isProxyAvailable: boolean;
+export {};

+ 12 - 0
node_modules/@vue/devtools-api/lib/esm/env.js

xqd
@@ -0,0 +1,12 @@
+export function getDevtoolsGlobalHook() {
+    return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
+}
+export function getTarget() {
+    // @ts-ignore
+    return (typeof navigator !== 'undefined' && typeof window !== 'undefined')
+        ? window
+        : typeof global !== 'undefined'
+            ? global
+            : {};
+}
+export const isProxyAvailable = typeof Proxy === 'function';

+ 18 - 0
node_modules/@vue/devtools-api/lib/esm/index.d.ts

xqd
@@ -0,0 +1,18 @@
+import type { DevtoolsPluginApi } from './api/index.js';
+import type { PluginDescriptor, ExtractSettingsTypes, PluginSettingsItem } from './plugin.js';
+export * from './api/index.js';
+export * from './plugin.js';
+export * from './time.js';
+export { PluginQueueItem } from './env.js';
+declare type Cast<A, B> = A extends B ? A : B;
+declare type Narrowable = string | number | bigint | boolean;
+declare type Narrow<A> = Cast<A, [] | (A extends Narrowable ? A : never) | ({
+    [K in keyof A]: Narrow<A[K]>;
+})>;
+declare type Exact<C, T> = {
+    [K in keyof C]: K extends keyof T ? T[K] : never;
+};
+export declare type SetupFunction<TSettings = any> = (api: DevtoolsPluginApi<TSettings>) => void;
+export declare function setupDevtoolsPlugin<TDescriptor extends Exact<TDescriptor, PluginDescriptor>, TSettings = ExtractSettingsTypes<TDescriptor extends {
+    settings: infer S;
+} ? S extends Record<string, PluginSettingsItem> ? S : Record<string, PluginSettingsItem> : Record<string, PluginSettingsItem>>>(pluginDescriptor: Narrow<TDescriptor>, setupFn: SetupFunction<TSettings>): void;

+ 26 - 0
node_modules/@vue/devtools-api/lib/esm/index.js

xqd
@@ -0,0 +1,26 @@
+import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';
+import { HOOK_SETUP } from './const.js';
+import { ApiProxy } from './proxy.js';
+export * from './api/index.js';
+export * from './plugin.js';
+export * from './time.js';
+export function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
+    const descriptor = pluginDescriptor;
+    const target = getTarget();
+    const hook = getDevtoolsGlobalHook();
+    const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
+    if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
+        hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
+    }
+    else {
+        const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
+        const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
+        list.push({
+            pluginDescriptor: descriptor,
+            setupFn,
+            proxy,
+        });
+        if (proxy)
+            setupFn(proxy.proxiedTarget);
+    }
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio