commit dbe18e51bdbbd612694628093e377fe9ce5e9e54
Author: hoelee
Date: Thu Oct 16 04:59:04 2025 +0800
Initial commit for Github
diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..994cf0f
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,13 @@
+{
+ "presets": [
+ ["es2015", { "modules": false }],
+ "stage-3"
+ ],
+ "plugins": ["transform-runtime"],
+ "comments": false,
+ "env": {
+ "test": {
+ "plugins": [ "istanbul" ]
+ }
+ }
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..9d08a1a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f6bbfe0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,56 @@
+# Dependencies
+node_modules/
+.pnp
+.pnp.js
+
+# Production builds
+/dist
+/public/static/js
+/public/static/css
+
+# Development
+.DS_Store
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Vite
+.vite/
+
+# IDE
+.idea/
+.vscode/
+*.swp
+*.swo
+
+# OS
+Thumbs.db
+.DS_Store
+
+# Environment
+.env
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# Logs
+logs
+*.log
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Package backup files (if you want to ignore them)
+package-backup.json
+package-modern.json
+package-updated-conservative.json
+package-vue2-working.json
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..825e9d7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,117 @@
+# Mr. Hoelee Resume - Animated Resume
+
+This project is inspired by: [Animating Resume](https://github.com/jirengu-inc/animating-resume)
+Deep respect to the original author.
+
+An interactive animated resume built with Vue 3 and Vite that showcases your professional profile in a unique and engaging way. Features responsive design with separate mobile and desktop experiences.
+
+## Prerequisites
+
+- **Node.js**: >= 18.0.0 ([Download](https://nodejs.org/))
+- **npm**: >= 9.0.0
+- **Git**: [Download](https://git-scm.com/)
+
+## Usage
+
+1. Clone this repository:
+
+```bash
+git clone
+cd hoelee-profile2
+npm install
+npm run dev
+```
+
+2. The development server will automatically open in your browser at `http://localhost:8080`
+
+## Build and Deployment
+
+### Building for Production
+
+1. Build the project:
+
+```bash
+npm run build
+```
+
+2. The built files will be generated in the `dist/` directory
+
+### Deployment Options
+
+#### Option 1: Static Web Server
+
+Upload the contents of the `dist/` directory to any static web server (Netlify, Vercel, GitHub Pages, etc.)
+
+#### Option 2: Preview Locally
+
+Test the production build locally:
+
+```bash
+npm run preview
+```
+
+## Development
+
+- `npm run dev` - Start development server with hot reload (opens at )
+- `npm run build` - Build for production (outputs to `dist/` directory)
+- `npm run preview` - Preview production build locally
+
+## Project Structure
+
+```text
+src/
+├── App.vue # Desktop version of the resume
+├── Mobile.vue # Mobile-optimized version
+├── main.js # Entry point with responsive logic
+├── assets/ # Stylesheets and static assets
+│ └── reset.css # CSS reset styles
+└── components/ # Resume components
+ ├── ResumeEditor.vue # Resume content editor
+ ├── StyleEditor.vue # Style/CSS editor
+ └── ThankEditor.vue # Thank you section
+```
+
+## Features
+
+- **Responsive Design**: Automatically switches between desktop and mobile versions based on screen width (500px breakpoint)
+- **Interactive Animation**: Type-writer effect for resume content
+- **Live Preview**: Real-time preview of resume as it's being "typed"
+- **Modern Stack**: Built with Vue 3 composition API and Vite for fast development
+- **Syntax Highlighting**: Integrated Prism.js for code highlighting
+- **Markdown Support**: Uses marked.js for markdown parsing
+
+## Customization
+
+### Personalizing Your Resume
+
+1. **Content**: Edit the resume content in `src/components/ResumeEditor.vue`
+2. **Styling**: Modify CSS styles in `src/components/StyleEditor.vue`
+3. **Layout**: Adjust the main layout in `src/App.vue` (desktop) or `src/Mobile.vue` (mobile)
+4. **Title**: Update the page title in `index.html`
+
+### Configuration
+
+- **Port**: Development server port is set to 8080 in `vite.config.js`
+- **Build Output**: Configured to output to `dist/` directory with organized asset structure
+- **Aliases**: Path aliases are set up for easy imports (`@`, `src`, `assets`, `components`)
+
+## Technologies Used
+
+- **Vue 3** - Progressive JavaScript framework with Composition API
+- **Vite** - Next-generation frontend build tool
+- **Prism.js** - Syntax highlighting library
+- **Marked** - Markdown parser and compiler
+- **CSS3 Animations** - Smooth typing animations and transitions
+- **PostCSS & Autoprefixer** - CSS processing and vendor prefixing
+
+## Browser Support
+
+This project uses modern JavaScript features and is compatible with:
+
+- Chrome/Edge 88+
+- Firefox 85+
+- Safari 14+
+
+## License
+
+This project is for personal/educational use. Please respect the original author's work.
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..c419263
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-cayman
\ No newline at end of file
diff --git a/build/build.js b/build/build.js
new file mode 100644
index 0000000..7e29b91
--- /dev/null
+++ b/build/build.js
@@ -0,0 +1,40 @@
+// https://github.com/shelljs/shelljs
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+var ora = require('ora')
+var path = require('path')
+var chalk = require('chalk')
+var shell = require('shelljs')
+var webpack = require('webpack')
+var config = require('../config')
+var webpackConfig = require('./webpack.prod.conf')
+
+var spinner = ora('building for production...')
+spinner.start()
+
+var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
+shell.rm('-rf', assetsPath)
+shell.mkdir('-p', assetsPath)
+shell.config.silent = true
+shell.cp('-R', 'static/*', assetsPath)
+shell.config.silent = false
+
+webpack(webpackConfig, function (err, stats) {
+ spinner.stop()
+ if (err) throw err
+ process.stdout.write(stats.toString({
+ colors: true,
+ modules: false,
+ children: false,
+ chunks: false,
+ chunkModules: false
+ }) + '\n\n')
+
+ console.log(chalk.cyan(' Build complete.\n'))
+ console.log(chalk.yellow(
+ ' Tip: built files are meant to be served over an HTTP server.\n' +
+ ' Opening index.html over file:// won\'t work.\n'
+ ))
+})
diff --git a/build/check-versions.js b/build/check-versions.js
new file mode 100644
index 0000000..6548ba1
--- /dev/null
+++ b/build/check-versions.js
@@ -0,0 +1,45 @@
+var chalk = require('chalk')
+var semver = require('semver')
+var packageConfig = require('../package.json')
+
+function exec (cmd) {
+ return require('child_process').execSync(cmd).toString().trim()
+}
+
+var versionRequirements = [
+ {
+ name: 'node',
+ currentVersion: semver.clean(process.version),
+ versionRequirement: packageConfig.engines.node
+ },
+ {
+ name: 'npm',
+ currentVersion: exec('npm --version'),
+ versionRequirement: packageConfig.engines.npm
+ }
+]
+
+module.exports = function () {
+ var warnings = []
+ for (var i = 0; i < versionRequirements.length; i++) {
+ var mod = versionRequirements[i]
+ if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+ warnings.push(mod.name + ': ' +
+ chalk.red(mod.currentVersion) + ' should be ' +
+ chalk.green(mod.versionRequirement)
+ )
+ }
+ }
+
+ if (warnings.length) {
+ console.log('')
+ console.log(chalk.yellow('To use this template, you must update following to modules:'))
+ console.log()
+ for (var i = 0; i < warnings.length; i++) {
+ var warning = warnings[i]
+ console.log(' ' + warning)
+ }
+ console.log()
+ process.exit(1)
+ }
+}
diff --git a/build/dev-client.js b/build/dev-client.js
new file mode 100644
index 0000000..18aa1e2
--- /dev/null
+++ b/build/dev-client.js
@@ -0,0 +1,9 @@
+/* eslint-disable */
+require('eventsource-polyfill')
+var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
+
+hotClient.subscribe(function (event) {
+ if (event.action === 'reload') {
+ window.location.reload()
+ }
+})
diff --git a/build/dev-server.js b/build/dev-server.js
new file mode 100644
index 0000000..cc96300
--- /dev/null
+++ b/build/dev-server.js
@@ -0,0 +1,81 @@
+require('./check-versions')()
+
+var config = require('../config')
+if (!process.env.NODE_ENV) {
+ process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
+}
+
+var opn = require('opn')
+var path = require('path')
+var express = require('express')
+var webpack = require('webpack')
+var proxyMiddleware = require('http-proxy-middleware')
+var webpackConfig = require('./webpack.dev.conf')
+
+// default port where dev server listens for incoming traffic
+var port = process.env.PORT || config.dev.port
+// automatically open browser, if not set will be false
+var autoOpenBrowser = !!config.dev.autoOpenBrowser
+// Define HTTP proxies to your custom API backend
+// https://github.com/chimurai/http-proxy-middleware
+var proxyTable = config.dev.proxyTable
+
+var app = express()
+var compiler = webpack(webpackConfig)
+
+var devMiddleware = require('webpack-dev-middleware')(compiler, {
+ publicPath: webpackConfig.output.publicPath,
+ quiet: true
+})
+
+var hotMiddleware = require('webpack-hot-middleware')(compiler, {
+ log: () => {}
+})
+// force page reload when html-webpack-plugin template changes
+compiler.plugin('compilation', function (compilation) {
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
+ hotMiddleware.publish({ action: 'reload' })
+ cb()
+ })
+})
+
+// proxy api requests
+Object.keys(proxyTable).forEach(function (context) {
+ var options = proxyTable[context]
+ if (typeof options === 'string') {
+ options = { target: options }
+ }
+ app.use(proxyMiddleware(options.filter || context, options))
+})
+
+// handle fallback for HTML5 history API
+app.use(require('connect-history-api-fallback')())
+
+// serve webpack bundle output
+app.use(devMiddleware)
+
+// enable hot-reload and state-preserving
+// compilation error display
+app.use(hotMiddleware)
+
+// serve pure static assets
+var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
+app.use(staticPath, express.static('./static'))
+
+var uri = 'http://localhost:' + port
+
+devMiddleware.waitUntilValid(function () {
+ console.log('> Listening at ' + uri + '\n')
+})
+
+module.exports = app.listen(port, function (err) {
+ if (err) {
+ console.log(err)
+ return
+ }
+
+ // when env is testing, don't need open it
+ if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
+ opn(uri)
+ }
+})
diff --git a/build/utils.js b/build/utils.js
new file mode 100644
index 0000000..7dc098c
--- /dev/null
+++ b/build/utils.js
@@ -0,0 +1,64 @@
+var path = require('path')
+var config = require('../config')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+
+exports.assetsPath = function (_path) {
+ var assetsSubDirectory = process.env.NODE_ENV === 'production'
+ ? config.build.assetsSubDirectory
+ : config.dev.assetsSubDirectory
+ return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+ options = options || {}
+ // generate loader string to be used with extract text plugin
+ function generateLoaders (loaders) {
+ var sourceLoader = loaders.map(function (loader) {
+ var extraParamChar
+ if (/\?/.test(loader)) {
+ loader = loader.replace(/\?/, '-loader?')
+ extraParamChar = '&'
+ } else {
+ loader = loader + '-loader'
+ extraParamChar = '?'
+ }
+ return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '')
+ }).join('!')
+
+ // Extract CSS when that option is specified
+ // (which is the case during production build)
+ if (options.extract) {
+ return ExtractTextPlugin.extract({
+ use: sourceLoader,
+ fallback: 'vue-style-loader'
+ })
+ } else {
+ return ['vue-style-loader', sourceLoader].join('!')
+ }
+ }
+
+ // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
+ return {
+ css: generateLoaders(['css']),
+ postcss: generateLoaders(['css']),
+ less: generateLoaders(['css', 'less']),
+ sass: generateLoaders(['css', 'sass?indentedSyntax']),
+ scss: generateLoaders(['css', 'sass']),
+ stylus: generateLoaders(['css', 'stylus']),
+ styl: generateLoaders(['css', 'stylus'])
+ }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function (options) {
+ var output = []
+ var loaders = exports.cssLoaders(options)
+ for (var extension in loaders) {
+ var loader = loaders[extension]
+ output.push({
+ test: new RegExp('\\.' + extension + '$'),
+ loader: loader
+ })
+ }
+ return output
+}
diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js
new file mode 100644
index 0000000..a86af01
--- /dev/null
+++ b/build/vue-loader.conf.js
@@ -0,0 +1,17 @@
+var utils = require('./utils')
+var config = require('../config')
+var isProduction = process.env.NODE_ENV === 'production'
+
+module.exports = {
+ loaders: utils.cssLoaders({
+ sourceMap: isProduction
+ ? config.build.productionSourceMap
+ : config.dev.cssSourceMap,
+ extract: isProduction
+ }),
+ postcss: [
+ require('autoprefixer')({
+ browsers: ['last 2 versions']
+ })
+ ]
+}
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
new file mode 100644
index 0000000..0f09268
--- /dev/null
+++ b/build/webpack.base.conf.js
@@ -0,0 +1,63 @@
+var path = require('path')
+var utils = require('./utils')
+var config = require('../config')
+var vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve (dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+module.exports = {
+ entry: {
+ app: './src/main.js'
+ },
+ output: {
+ path: config.build.assetsRoot,
+ filename: '[name].js',
+ publicPath: process.env.NODE_ENV === 'production'
+ ? config.build.assetsPublicPath
+ : config.dev.assetsPublicPath
+ },
+ resolve: {
+ extensions: ['.js', '.vue', '.json'],
+ modules: [
+ resolve('src'),
+ resolve('node_modules')
+ ],
+ alias: {
+ 'src': resolve('src'),
+ 'assets': resolve('src/assets'),
+ 'components': resolve('src/components')
+ }
+ },
+ module: {
+ rules: [
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ options: vueLoaderConfig
+ },
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ include: [resolve('src'), resolve('test')]
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+ loader: 'url-loader',
+ query: {
+ limit: 10000,
+ name: utils.assetsPath('img/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ query: {
+ limit: 10000,
+ name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+ }
+ }
+ ]
+ }
+}
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
new file mode 100644
index 0000000..5470402
--- /dev/null
+++ b/build/webpack.dev.conf.js
@@ -0,0 +1,35 @@
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+
+// add hot-reload related code to entry chunks
+Object.keys(baseWebpackConfig.entry).forEach(function (name) {
+ baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
+})
+
+module.exports = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
+ },
+ // cheap-module-eval-source-map is faster for development
+ devtool: '#cheap-module-eval-source-map',
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': config.dev.env
+ }),
+ // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoEmitOnErrorsPlugin(),
+ // https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ template: 'index.html',
+ inject: true
+ }),
+ new FriendlyErrorsPlugin()
+ ]
+})
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
new file mode 100644
index 0000000..1cc4432
--- /dev/null
+++ b/build/webpack.prod.conf.js
@@ -0,0 +1,102 @@
+var path = require('path')
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+var env = config.build.env
+
+var webpackConfig = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.build.productionSourceMap,
+ extract: true
+ })
+ },
+ devtool: config.build.productionSourceMap ? '#source-map' : false,
+ output: {
+ path: config.build.assetsRoot,
+ filename: utils.assetsPath('js/[name].[chunkhash].js'),
+ chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+ },
+ plugins: [
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
+ new webpack.DefinePlugin({
+ 'process.env': env
+ }),
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ warnings: false
+ },
+ sourceMap: true
+ }),
+ // extract css into its own file
+ new ExtractTextPlugin({
+ filename: utils.assetsPath('css/[name].[contenthash].css')
+ }),
+ // generate dist index.html with correct asset hash for caching.
+ // you can customize output by editing /index.html
+ // see https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: config.build.index,
+ template: 'index.html',
+ inject: true,
+ minify: {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeAttributeQuotes: true
+ // more options:
+ // https://github.com/kangax/html-minifier#options-quick-reference
+ },
+ // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+ chunksSortMode: 'dependency'
+ }),
+ // split vendor js into its own file
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ minChunks: function (module, count) {
+ // any required modules inside node_modules are extracted to vendor
+ return (
+ module.resource &&
+ /\.js$/.test(module.resource) &&
+ module.resource.indexOf(
+ path.join(__dirname, '../node_modules')
+ ) === 0
+ )
+ }
+ }),
+ // extract webpack runtime and module manifest to its own file in order to
+ // prevent vendor hash from being updated whenever app bundle is updated
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'manifest',
+ chunks: ['vendor']
+ })
+ ]
+})
+
+if (config.build.productionGzip) {
+ var CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+ webpackConfig.plugins.push(
+ new CompressionWebpackPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp(
+ '\\.(' +
+ config.build.productionGzipExtensions.join('|') +
+ ')$'
+ ),
+ threshold: 10240,
+ minRatio: 0.8
+ })
+ )
+}
+
+if (config.build.bundleAnalyzerReport) {
+ var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+ webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig
diff --git a/config/dev.env.js b/config/dev.env.js
new file mode 100644
index 0000000..efead7c
--- /dev/null
+++ b/config/dev.env.js
@@ -0,0 +1,6 @@
+var merge = require('webpack-merge')
+var prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+ NODE_ENV: '"development"'
+})
diff --git a/config/index.js b/config/index.js
new file mode 100644
index 0000000..f8eba1e
--- /dev/null
+++ b/config/index.js
@@ -0,0 +1,38 @@
+// see http://vuejs-templates.github.io/webpack for documentation.
+var path = require('path')
+
+module.exports = {
+ build: {
+ env: require('./prod.env'),
+ index: path.resolve(__dirname, '../public/index.html'),
+ assetsRoot: path.resolve(__dirname, '../public'),
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/anires/public/',
+ productionSourceMap: true,
+ // Gzip off by default as many popular static hosts such as
+ // Surge or Netlify already gzip all static assets for you.
+ // Before setting to `true`, make sure to:
+ // npm install --save-dev compression-webpack-plugin
+ productionGzip: false,
+ productionGzipExtensions: ['js', 'css'],
+ // Run the build command with an extra argument to
+ // View the bundle analyzer report after build finishes:
+ // `npm run build --report`
+ // Set to `true` or `false` to always turn it on or off
+ bundleAnalyzerReport: process.env.npm_config_report
+ },
+ dev: {
+ env: require('./dev.env'),
+ port: 8080,
+ autoOpenBrowser: true,
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+ proxyTable: {},
+ // CSS Sourcemaps off by default because relative paths are "buggy"
+ // with this option, according to the CSS-Loader README
+ // (https://github.com/webpack/css-loader#sourcemaps)
+ // In our experience, they generally work as expected,
+ // just be aware of this issue when enabling this option.
+ cssSourceMap: false
+ }
+}
diff --git a/config/prod.env.js b/config/prod.env.js
new file mode 100644
index 0000000..773d263
--- /dev/null
+++ b/config/prod.env.js
@@ -0,0 +1,3 @@
+module.exports = {
+ NODE_ENV: '"production"'
+}
diff --git a/dist/index.html b/dist/index.html
new file mode 100644
index 0000000..316a283
--- /dev/null
+++ b/dist/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+ Mr Hoelee Resume
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..4f38bd5
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Mr Hoelee Resume
+
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..32441de
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1502 @@
+{
+ "name": "animation-resume",
+ "version": "2.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "animation-resume",
+ "version": "2.0.0",
+ "dependencies": {
+ "marked": "^12.0.2",
+ "prismjs": "^1.30.0",
+ "vue": "^3.5.22"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.4",
+ "autoprefixer": "^10.4.21",
+ "postcss": "^8.4.49",
+ "vite": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18.0.0",
+ "npm": ">= 9.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
+ "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.4"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
+ "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz",
+ "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz",
+ "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz",
+ "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz",
+ "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz",
+ "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz",
+ "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz",
+ "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz",
+ "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz",
+ "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz",
+ "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz",
+ "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz",
+ "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz",
+ "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz",
+ "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz",
+ "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz",
+ "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz",
+ "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz",
+ "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz",
+ "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz",
+ "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz",
+ "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz",
+ "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz",
+ "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz",
+ "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz",
+ "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz",
+ "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz",
+ "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz",
+ "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz",
+ "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz",
+ "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz",
+ "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz",
+ "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz",
+ "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz",
+ "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz",
+ "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz",
+ "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz",
+ "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz",
+ "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz",
+ "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz",
+ "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz",
+ "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz",
+ "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz",
+ "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz",
+ "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz",
+ "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz",
+ "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz",
+ "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz",
+ "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
+ "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz",
+ "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/compiler-core": "3.5.22",
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.19",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz",
+ "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz",
+ "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz",
+ "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/runtime-core": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz",
+ "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "peerDependencies": {
+ "vue": "3.5.22"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.21",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
+ "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.24.4",
+ "caniuse-lite": "^1.0.30001702",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.16",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz",
+ "integrity": "sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.26.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz",
+ "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "baseline-browser-mapping": "^2.8.9",
+ "caniuse-lite": "^1.0.30001746",
+ "electron-to-chromium": "^1.5.227",
+ "node-releases": "^2.0.21",
+ "update-browserslist-db": "^1.1.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001750",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz",
+ "integrity": "sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.237",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz",
+ "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz",
+ "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.11",
+ "@esbuild/android-arm": "0.25.11",
+ "@esbuild/android-arm64": "0.25.11",
+ "@esbuild/android-x64": "0.25.11",
+ "@esbuild/darwin-arm64": "0.25.11",
+ "@esbuild/darwin-x64": "0.25.11",
+ "@esbuild/freebsd-arm64": "0.25.11",
+ "@esbuild/freebsd-x64": "0.25.11",
+ "@esbuild/linux-arm": "0.25.11",
+ "@esbuild/linux-arm64": "0.25.11",
+ "@esbuild/linux-ia32": "0.25.11",
+ "@esbuild/linux-loong64": "0.25.11",
+ "@esbuild/linux-mips64el": "0.25.11",
+ "@esbuild/linux-ppc64": "0.25.11",
+ "@esbuild/linux-riscv64": "0.25.11",
+ "@esbuild/linux-s390x": "0.25.11",
+ "@esbuild/linux-x64": "0.25.11",
+ "@esbuild/netbsd-arm64": "0.25.11",
+ "@esbuild/netbsd-x64": "0.25.11",
+ "@esbuild/openbsd-arm64": "0.25.11",
+ "@esbuild/openbsd-x64": "0.25.11",
+ "@esbuild/openharmony-arm64": "0.25.11",
+ "@esbuild/sunos-x64": "0.25.11",
+ "@esbuild/win32-arm64": "0.25.11",
+ "@esbuild/win32-ia32": "0.25.11",
+ "@esbuild/win32-x64": "0.25.11"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.19",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
+ "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/marked": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
+ "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.23",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz",
+ "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prismjs": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.52.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz",
+ "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.52.4",
+ "@rollup/rollup-android-arm64": "4.52.4",
+ "@rollup/rollup-darwin-arm64": "4.52.4",
+ "@rollup/rollup-darwin-x64": "4.52.4",
+ "@rollup/rollup-freebsd-arm64": "4.52.4",
+ "@rollup/rollup-freebsd-x64": "4.52.4",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.52.4",
+ "@rollup/rollup-linux-arm-musleabihf": "4.52.4",
+ "@rollup/rollup-linux-arm64-gnu": "4.52.4",
+ "@rollup/rollup-linux-arm64-musl": "4.52.4",
+ "@rollup/rollup-linux-loong64-gnu": "4.52.4",
+ "@rollup/rollup-linux-ppc64-gnu": "4.52.4",
+ "@rollup/rollup-linux-riscv64-gnu": "4.52.4",
+ "@rollup/rollup-linux-riscv64-musl": "4.52.4",
+ "@rollup/rollup-linux-s390x-gnu": "4.52.4",
+ "@rollup/rollup-linux-x64-gnu": "4.52.4",
+ "@rollup/rollup-linux-x64-musl": "4.52.4",
+ "@rollup/rollup-openharmony-arm64": "4.52.4",
+ "@rollup/rollup-win32-arm64-msvc": "4.52.4",
+ "@rollup/rollup-win32-ia32-msvc": "4.52.4",
+ "@rollup/rollup-win32-x64-gnu": "4.52.4",
+ "@rollup/rollup-win32-x64-msvc": "4.52.4",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.0.tgz",
+ "integrity": "sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz",
+ "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-sfc": "3.5.22",
+ "@vue/runtime-dom": "3.5.22",
+ "@vue/server-renderer": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ }
+ }
+}
diff --git a/package-modern.json b/package-modern.json
new file mode 100644
index 0000000..ab5a715
--- /dev/null
+++ b/package-modern.json
@@ -0,0 +1,27 @@
+{
+ "name": "animation-resume",
+ "version": "2.0.0",
+ "description": "animation resume - modernized",
+ "author": " <>",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "marked": "^12.0.2",
+ "prismjs": "^1.30.0",
+ "vue": "^3.5.22"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.4",
+ "autoprefixer": "^10.4.21",
+ "postcss": "^8.4.49",
+ "vite": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18.0.0",
+ "npm": ">= 9.0.0"
+ }
+}
\ No newline at end of file
diff --git a/package-vue2-working.json b/package-vue2-working.json
new file mode 100644
index 0000000..e848c32
--- /dev/null
+++ b/package-vue2-working.json
@@ -0,0 +1,54 @@
+{
+ "name": "animation-resume",
+ "version": "1.0.0",
+ "description": "animation resume",
+ "author": " <>",
+ "private": true,
+ "scripts": {
+ "dev": "node build/dev-server.js",
+ "build": "node build/build.js"
+ },
+ "dependencies": {
+ "marked": "^2.1.3",
+ "prismjs": "^1.30.0",
+ "vue": "^2.7.16"
+ },
+ "devDependencies": {
+ "autoprefixer": "^6.7.7",
+ "babel-core": "^6.26.3",
+ "babel-loader": "^6.4.1",
+ "babel-plugin-transform-runtime": "^6.23.0",
+ "babel-preset-es2015": "^6.24.1",
+ "babel-preset-stage-2": "^6.24.1",
+ "babel-preset-stage-3": "^6.24.1",
+ "babel-register": "^6.26.0",
+ "chalk": "^1.1.3",
+ "connect-history-api-fallback": "^1.6.0",
+ "css-loader": "^0.28.11",
+ "eventsource-polyfill": "^0.9.6",
+ "express": "^4.21.2",
+ "extract-text-webpack-plugin": "^2.1.2",
+ "file-loader": "^0.11.2",
+ "friendly-errors-webpack-plugin": "^1.7.0",
+ "function-bind": "^1.1.2",
+ "html-webpack-plugin": "^2.30.1",
+ "http-proxy-middleware": "^0.17.4",
+ "opn": "^4.0.2",
+ "ora": "^1.4.0",
+ "semver": "^5.7.2",
+ "shelljs": "^0.7.8",
+ "url-loader": "^0.6.2",
+ "vue-loader": "^10.3.0",
+ "vue-style-loader": "^2.0.5",
+ "vue-template-compiler": "^2.7.16",
+ "webpack": "^2.7.0",
+ "webpack-bundle-analyzer": "^2.13.1",
+ "webpack-dev-middleware": "^1.12.2",
+ "webpack-hot-middleware": "^2.26.1",
+ "webpack-merge": "^2.6.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "npm": ">= 6.0.0"
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..8b882b7
--- /dev/null
+++ b/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "hoelee-profile",
+ "version": "2.0.0",
+ "description": "Hoelee's animated resume - modernized",
+ "author": "Hoelee <>",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "marked": "^12.0.2",
+ "prismjs": "^1.30.0",
+ "vue": "^3.5.22"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.4",
+ "autoprefixer": "^10.4.21",
+ "postcss": "^8.4.49",
+ "vite": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18.0.0",
+ "npm": ">= 9.0.0"
+ }
+}
\ No newline at end of file
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..7a00bd7
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..4c62cbd
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1 @@
+个人简历
\ No newline at end of file
diff --git a/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css b/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css
new file mode 100644
index 0000000..ae57e64
--- /dev/null
+++ b/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css
@@ -0,0 +1,74 @@
+
+#app[data-v-22ce9519] {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+html[data-v-22ce9519] {
+ min-height: 100vh;
+}
+*[data-v-22ce9519] {
+ box-sizing: border-box;
+}
+
+pre[data-v-35c047fd]{
+}
+@media (max-width:500px){
+pre[data-v-35c047fd]{
+}
+}
+.code[data-v-35c047fd] {
+ display: none;
+}
+
+@media (max-width:500px){
+.resumeEditor[data-v-647e008b]{
+}
+}
+.htmlMode[data-v-647e008b] {
+ animation: flip 2s;
+}
+@keyframes flip {
+from {
+ opacity: 0;
+}
+to {
+ opacity: 1;
+}
+}
+
+@media (max-width:500px){
+.thankEditor[data-v-29ad1df6]{
+}
+}
+.htmlMode[data-v-29ad1df6] {
+ animation: flip 2s;
+}
+@keyframes flip {
+from {
+ opacity: 0;
+}
+to {
+ opacity: 1;
+}
+}
+*{margin: 0; padding: 0;}
+*{box-sizing: border-box;}
+*::before{box-sizing: border-box;}
+*::after{box-sizing: border-box;}
+
+#app[data-v-53c8d54c] {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ min-height: 100vh; position: relative;
+}
+html[data-v-53c8d54c] {
+ min-height: 100vh;
+}
+*[data-v-53c8d54c]{
+ box-sizing: border-box;
+}
+
+
+/*# sourceMappingURL=app.97f24077373dbd5f86744ecd100255e7.css.map*/
\ No newline at end of file
diff --git a/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css.map b/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css.map
new file mode 100644
index 0000000..706c2e1
--- /dev/null
+++ b/public/static/css/app.97f24077373dbd5f86744ecd100255e7.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/App.vue","webpack:///./src/components/StyleEditor.vue","webpack:///./src/components/ResumeEditor.vue","webpack:///./src/components/ThankEditor.vue","webpack:///./src/assets/reset.css","webpack:///./src/Mobile.vue"],"names":[],"mappings":";AACA;EACE,oDAAoD;EACpD,oCAAoC;EACpC,mCAAmC;CACpC;AACD;EACE,kBAAkB;CACnB;AACD;EACE,uBAAuB;CACxB;;ACVD;CACC;AACD;AACA;CACC;CACA;AACD;EACE,cAAc;CACf;;ACRD;AACA;CACC;CACA;AACD;EACE,mBAAmB;CACpB;AACD;AACA;IACI,WAAW;CACd;AACD;IACI,WAAW;CACd;CACA;;ACdD;AACA;CACC;CACA;AACD;EACE,mBAAmB;CACpB;AACD;AACA;IACI,WAAW;CACd;AACD;IACI,WAAW;CACd;CACA;ACfD,EAAE,UAAU,CAAC,WAAW,CAAC;AACzB,EAAE,uBAAuB,CAAC;AAC1B,UAAU,uBAAuB,CAAC;AAClC,SAAS,uBAAuB,CAAC;;ACFjC;EACE,oDAAoD;EACpD,oCAAoC;EACpC,mCAAmC;EACnC,kBAAkB,CAAC,mBAAmB;CACvC;AACD;EACE,kBAAkB;CACnB;AACD;EACE,uBAAuB;CACxB","file":"static/css/app.97f24077373dbd5f86744ecd100255e7.css","sourcesContent":["\n#app[data-v-22ce9519] {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\nhtml[data-v-22ce9519] {\n min-height: 100vh;\n}\n*[data-v-22ce9519] {\n box-sizing: border-box;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/App.vue","\npre[data-v-35c047fd]{\n}\n@media (max-width:500px){\npre[data-v-35c047fd]{\n}\n}\n.code[data-v-35c047fd] {\n display: none;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/StyleEditor.vue","\n@media (max-width:500px){\n.resumeEditor[data-v-647e008b]{\n}\n}\n.htmlMode[data-v-647e008b] {\n animation: flip 2s;\n}\n@keyframes flip {\nfrom {\n opacity: 0;\n}\nto {\n opacity: 1;\n}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ResumeEditor.vue","\n@media (max-width:500px){\n.thankEditor[data-v-29ad1df6]{\n}\n}\n.htmlMode[data-v-29ad1df6] {\n animation: flip 2s;\n}\n@keyframes flip {\nfrom {\n opacity: 0;\n}\nto {\n opacity: 1;\n}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ThankEditor.vue","*{margin: 0; padding: 0;}\n*{box-sizing: border-box;}\n*::before{box-sizing: border-box;}\n*::after{box-sizing: border-box;}\n\n\n\n// WEBPACK FOOTER //\n// ./src/assets/reset.css","\n#app[data-v-53c8d54c] {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n min-height: 100vh; position: relative;\n}\nhtml[data-v-53c8d54c] {\n min-height: 100vh;\n}\n*[data-v-53c8d54c]{\n box-sizing: border-box;\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/Mobile.vue"],"sourceRoot":""}
\ No newline at end of file
diff --git a/public/static/js/app.c4b2e14682ed119846b5.js b/public/static/js/app.c4b2e14682ed119846b5.js
new file mode 100644
index 0000000..3f658a2
--- /dev/null
+++ b/public/static/js/app.c4b2e14682ed119846b5.js
@@ -0,0 +1,2 @@
+webpackJsonp([1],{100:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{ref:"container",staticClass:"resumeEditor",class:{htmlMode:n.enableHtml}},[n.enableHtml?e("div",{domProps:{innerHTML:n._s(n.result)}}):e("pre",[n._v(n._s(n.result))])])},staticRenderFns:[]}},40:function(n,t){},42:function(n,t,e){e(91);var r=e(8)(e(49),e(100),"data-v-647e008b",null);n.exports=r.exports},43:function(n,t,e){e(89);var r=e(8)(e(50),e(98),"data-v-35c047fd",null);n.exports=r.exports},44:function(n,t,e){e(87);var r=e(8)(e(47),e(96),"data-v-22ce9519",null);n.exports=r.exports},45:function(n,t,e){e(90);var r=e(8)(e(48),e(99),"data-v-53c8d54c",null);n.exports=r.exports},47:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=e(15),o=e.n(r),i=e(25),a=e.n(i),s=e(24),c=e.n(s),u=e(43),l=e.n(u),d=e(42),h=e.n(d),m=e(95),p=e.n(m),f=e(40);e.n(f);t.default={name:"app",components:{StyleEditor:l.a,ResumeEditor:h.a,ThankEditor:p.a},data:function(){return{interval:5,currentStyle:"",enableHtml:!1,fullStyle:["/*\n* Inspired by http://strml.net/\n* 源码地址 https://github.com/sitexa/anires\n* 大家好,我是南方。\n* 我来写一份简历!\n*/\n\n/* 给所有元素加上过渡效果 */\n* {\n transition: all .1s;\n}\n/* 设置背景颜色 */\nhtml {\n color: rgb(222,222,222); background: rgb(0,64,64);\n}\n#content{\n height:70vh;\n margin:0;\n}\n#foot{\n height:29vh;\n margin:0;\n}\n\n/* 设置边框 */\n.styleEditor {\n padding: .5em;\n border: 1px solid;\n margin: .5em;\n overflow: auto;\n width: 50vw; height: 70vh;\n background: rgb(20,20,20);\n}\n/* 代码高亮 */\n.token.selector{ color: rgb(130,150,0); }\n.token.property{ color: rgb(190,140,0); }\n.token.punctuation{ color: yellow; }\n.token.function{ color: rgb(40,160,150); }\n\n/* 加3D效果 */\nhtml{\n perspective: 1000px;\n}\n.styleEditor {\n position: fixed; left: 0; top: 0;\n -webkit-transition: none;\n transition: none;\n -webkit-transform: rotateY(10deg) translateZ(-100px) ;\n transform: rotateY(10deg) translateZ(-100px) ;\n}\n\n/* 准备一个编辑器 */\n.resumeEditor{\n position: fixed; right: 0; top: 0;\n padding: .5em; margin: .5em;\n width: 50vw; height: 70vh;\n border: 1px solid;\n background: rgb(200,200,200); color: #222;\n overflow: auto;\n -webkit-transition: none;\n transition: none;\n -webkit-transform: rotateY(-10deg) translateZ(-100px) ;\n transform: rotateY(-10deg) translateZ(-100px) ;\n}\n/* 开始写简历 */\n",'\n/*将Markdown格式翻译成HTML\n *再对HTML加点样式\n*/\n.resumeEditor{\n padding: 2em;\n}\n.resumeEditor h2{\n display: inline-block;\n border-bottom: 1px solid;\n margin: 1em 0 .5em;\n}\n.resumeEditor ul,.resumeEditor ol{\n list-style: none;\n}\n.resumeEditor ul> li::before{\n content: \'•\';\n margin-right: .5em;\n}\n.resumeEditor ol {\n counter-reset: section;\n}\n.resumeEditor ol li::before {\n counter-increment: section;\n content: counters(section, ".") " ";\n margin-right: .5em;\n}\n.resumeEditor blockquote {\n margin: 1em;\n padding: .5em;\n background: #ddd;\n}\n',"/* 写封感谢信。\n * 感谢大家对我的关注。\n */\n.styleEditor{\n width:50vw;height:70vh;\n}\n\n.resumeEditor{\n width:50vw;height:70vh;\n}\n\n.thankEditor{\n position: relative; left: 0; top: 0;\n background: #E9D9BB;\n color: #001C42;\n overflow: auto;\n}\n\n.thankEditor {\n width: 99vw; height: 45vh;\n border: 1px solid #ccc;\n font-size: .9em;\n}\n",'\n.thankEditor{\n padding: .5em; margin: .5em; margin-top:1em;\n}\n\n.thankEditor ul,.thankEditor ol{\n list-style: none;\n}\n.thankEditor ul> li::before{\n content: \'☞\'; color: red;\n margin-right: .5em;\n}\n.thankEditor ol {\n counter-reset: section;\n}\n.thankEditor ol li::before {\n counter-increment: section;\n content: counters(section, "☞") " ";\n margin-right: .5em;\n}\n\n.thankEditor{\n width: 99vw; height: 45vh;\n -webkit-transition: none;\n transition: none;\n -webkit-transform: rotateX(-10deg) translateZ(-200px);\n transform: rotateX(-10deg) translateZ(-200px);\n}\n\n'],currentMarkdown:"",currentThankMarkdown:"",fullMarkdown:"南方\n====\n\n坐标:湖南长沙。\n\n资深软件工程师,资深产品经理,高级项目经理。现为自由职业。\n\n技能\n====\n\n数据库设计\n----\n - 结构化数据库设计\n - noSQL设计\n\n后端开发\n----\n - 用户管理\n - 单点登录\n - 第三方登录\n - 权限管理\n - 交易系统\n - 支付系统\n - 社区系统\n - 博客系统\n - 公众号开发\n - 小程序开发\n - API接口开发\n\n前端开发\n----\n - Web前端开发\n - 移动终端(Native App, Hybrid App)\n\n产品设计\n----\n - 智慧旅游项目\n - 运动健康云平台\n - 社区支持农业O2O项目\n - 省级环境监控平台\n - 高速公路异地处罚系统\n - 环保局办公自动化系统\n - 保险公司数据迁移项目\n - 啤酒厂供应链项目\n - 货运代理系统\n - 集装箱管理系统\n - 滞期费管理项目\n\n技术及语言\n----\n - Java: SpringMVC, SpringCloud, Hibernate, iBatis, spark, sql2o, HikariCP, freemarker, okHttp, retrofit, RxJava\n - Kotlin: ktor, exposed, anko\n - Node.js: express, angular, ionic, react, cordova, meteor, electron, axios\n - Swift: Vapor, ReactiveSwift\n - Golang: hugo, beego, gorm, sqlx, matcha\n - Python: tushare, pandas, numpy, matplotlib\n - DotNet and PHP\n - DB: SQLServer, Oracle, MySQL/MariaDB, MongoDB, graphQL, redis, memcached\n - WebServer: apache, nginx, tomcat, netty, jetty\n - OS: Ubuntu, CentOS, MacOS, Windows\n - Others: Docker, git, Xmind,Axure\n\n工作经历\n----\n\n1. 湖南融耀健康管理有限公司\n2. 湖南三英特旅游智能技术有限公司\n3. 合肥蓝盾科技有限公司\n4. 上海易保网络有限公司\n5. 厦门海环计算机软件有限公司\n\n教育经历\n----\n\n1. 华东理工大学 环境工程学士\n2. 厦门大学 系统工程硕士\n\n文章\n----\n\n* [故土难离(我的父亲母亲)](https://www.meipian.cn/qacqfbz?uuid=d541c15eef694065bc9d1ac9a07925a2)\n* [油腻腻的中年(小诗)](https://www.meipian.cn/wjaz3zh?uuid=ca1cd053b717451da781786de44e66e7)\n* [生命(老四们的蝼蚁人生)](https://www.meipian.cn/vc4pr59?uuid=799c98f5a187405c94c86f7da7788869)\n* [大健康商业模式](http://www.sitexa.org/technology/%E5%A4%A7%E5%81%A5%E5%BA%B7%E5%95%86%E4%B8%9A%E6%A8%A1%E5%BC%8F.html)\n* [社区社交商业模型](http://www.sitexa.org/other/%E7%A4%BE%E5%8C%BA%E7%A4%BE%E4%BA%A4%E5%95%86%E4%B8%9A%E6%A8%A1%E5%9E%8B.html)\n\n链接\n----\n\n* [GitHub](https://github.com/sitexa)\n* [技术博客](http://www.sitexa.org)\n* [南方时代](http://www.sitexa.net)\n* [神秘湘鄂西](http://www.sitexa.cn)\n* [我的简历故事(程序人生公众号文章)](https://mp.weixin.qq.com/s/5rsB956EPVm0FoFOe6xYTg)\n\n勾引方式\n----\n\n* 微信:xnpeng\n\n",thanksMarkdown:'\n鸣谢\n----\n\n* 这段时间,我有些诚煌诚恐。我的简历被很多人关注(49842),我码的那几篇文章也有很多人点击(20095),微信好友增加了2000多人。"程序人生"公众号文章(我的简历故事)阅读量超过十万+。\n* 有很多企业向我发出了面试邀请,有很多创业团队向我伸出了橄榄枝,一些朋友给我提出非常好的建议,还有很多同学希望跟我进行技术交流,甚至有些企业问我能否承接外包业务。\n* 于是,我受命下山,到了深圳、珠海、北京、天津等地,拜访了一些老板,结识了一些新朋友,见了一些同学和老同事,感触很多,收获很大。IT行业正在发生深刻的变化,新技术、新模式、新思维、新业态,层出不穷,各种探索,各种炒作,让人眼花缭乱。\n* 我对自己也有了一个新的认识。我逐渐发现,我不是去找一份工作,而是在寻找一些机会,一些志同道合的伙伴,一份激动人心的事业。很荣幸,已经有几个朋友跟我达成了意向,准备组建团队。\n* 到底做什么项目呢?我只能简单地说,社交+电商+区块链。肯定有人要说,这个题目太大了,是蹭热度。我不这样想。我以前对社交的思考中,一个重要的因素就是信任关系,而对电商的思考中,去中心化是一个核心考量。而区块链技术不正是解决信任机制和去中心化的利器么?\n* 在此,我欢迎有兴趣的朋友加入我们,尽快推进项目的实施。(微信:xnpeng)\n\n '}},created:function(){this.makeResume()},methods:{makeResume:function(){function n(){return t.apply(this,arguments)}var t=c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.progressivelyShowStyle(0);case 2:return n.next=4,this.progressivelyShowResume();case 4:return n.next=6,this.progressivelyShowStyle(1);case 6:return n.next=8,this.showHtml();case 8:return n.next=10,this.progressivelyShowStyle(2);case 10:return n.next=12,this.progressivelyShowThanks();case 12:return n.next=14,this.progressivelyShowStyle(3);case 14:case"end":return n.stop()}},n,this)}));return n}(),showHtml:function(){var n=this;return new o.a(function(t,e){n.enableHtml=!0,t()})},progressivelyShowStyle:function(n){var t=this;return new o.a(function(e,r){var o=t.interval,i=c()(a.a.mark(function t(){var r,s,c,u,l,d=this;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=this.fullStyle[n]){t.next=3;break}return t.abrupt("return");case 3:s=this.fullStyle.filter(function(t,e){return e<=n}).map(function(n){return n.length}).reduce(function(n,t){return n+t},0),c=s-r.length,this.currentStyle.length li::before{\n content: \'•\';\n margin-right: .5em;\n}\n.resumeEditor ol {\n counter-reset: section;\n}\n.resumeEditor ol li::before {\n counter-increment: section;\n content: counters(section, ".") " ";\n margin-right: .5em;\n}\n.resumeEditor blockquote {\n margin: 1em;\n padding: .5em;\n background: #ddd;\n}\n'],currentMarkdown:"",fullMarkdown:'南方\n====\n坐标:湖南长沙。\n\n资深软件工程师,资深产品经理,高级项目经理。现为自由职业。\n\n技能\n====\n\n数据库设计\n----\n - 结构化数据库设计\n - noSQL设计\n\n后端开发\n----\n - 用户管理\n - 单点登录\n - 第三方登录\n - 权限管理\n - 交易系统\n - 支付系统\n - 社区系统\n - 博客系统\n - 公众号开发\n - 小程序开发\n - API接口\n\n前端开发\n----\n - Web前端开发\n - 移动终端(Native App, Hybrid App)\n\n产品设计\n----\n - 智慧旅游项目\n - 运动健康云平台\n - 社区支持农业O2O项目\n - 省级环境监控平台\n - 高速公路异地处罚系统\n - 环保局办公自动化系统\n - 保险公司数据迁移项目\n - 啤酒厂供应链项目\n - 货运代理系统\n - 集装箱管理系统\n - 滞期费管理项目\n\n技术及语言\n----\n - Java: SpringMVC, SpringCloud, Hibernate, iBatis, spark, sql2o, HikariCP, freemarker, okHttp, retrofit, RxJava\n - Kotlin: ktor, exposed, anko\n - Node.js: express, angular, ionic, react, cordova, meteor, electron, axios\n - Swift: Vapor, ReactiveSwift\n - Golang: hugo, beego, gorm, sqlx, matcha\n - Python: tushare, pandas, numpy, matplotlib\n - DotNet and PHP\n - DB: SQLServer, Oracle, MySQL/MariaDB, MongoDB, graphQL, redis, memcached\n - WebServer: apache, nginx, tomcat, netty, jetty\n - OS: Ubuntu, CentOS, MacOS, Windows\n - Others: Docker, git, Xmind,Axure\n\n工作经历\n====\n\n1. 湖南融耀健康管理有限公司\n2. 湖南三英特旅游智能技术有限公司\n3. 合肥蓝盾科技有限公司\n4. 上海易保网络有限公司\n5. 厦门海环计算机软件有限公司\n\n教育经历\n====\n\n1. 华东理工大学 环境工程学士\n2. 厦门大学 系统工程硕士\n\n文章\n====\n\n* [故土难离(我的父亲母亲)](https://www.meipian.cn/qacqfbz?uuid=d541c15eef694065bc9d1ac9a07925a2)\n* [油腻腻的中年(小诗)](https://www.meipian.cn/wjaz3zh?uuid=ca1cd053b717451da781786de44e66e7)\n* [生命(老四们的蝼蚁人生)](https://www.meipian.cn/vc4pr59?uuid=799c98f5a187405c94c86f7da7788869)\n* [大健康商业模式](http://www.sitexa.org/technology/%E5%A4%A7%E5%81%A5%E5%BA%B7%E5%95%86%E4%B8%9A%E6%A8%A1%E5%BC%8F.html)\n* [社区社交商业模型](http://www.sitexa.org/other/%E7%A4%BE%E5%8C%BA%E7%A4%BE%E4%BA%A4%E5%95%86%E4%B8%9A%E6%A8%A1%E5%9E%8B.html)\n\n链接\n====\n\n* [GitHub](https://github.com/sitexa)\n* [技术博客](http://www.sitexa.org)\n* [南方时代](http://www.sitexa.net)\n* [神秘湘鄂西](http://www.sitexa.cn)\n* [我的简历故事(程序人生公众号文章)](https://mp.weixin.qq.com/s/5rsB956EPVm0FoFOe6xYTg)\n\n勾引方式\n====\n\n* 微信:xnpeng\n\n鸣谢\n----\n\n* 这段时间,我有些诚煌诚恐。我的简历被很多人关注(49842),我码的那几篇文章也有很多人点击(20095),微信好友增加了2000多人。"程序人生"公众号文章(我的简历故事)阅读量超过十万+。\n* 有很多企业向我发出了面试邀请,有很多创业团队向我伸出了橄榄枝,一些朋友给我提出非常好的建议,还有很多同学希望跟我进行技术交流,甚至有些企业问我能否承接外包业务。\n* 于是,我受命下山,到了深圳、珠海、北京、天津等地,拜访了一些老板,结识了一些新朋友,见了一些同学和老同事,感触很多,收获很大。IT行业正在发生深刻的变化,新技术、新模式、新思维、新业态,层出不穷,各种探索,各种炒作,让人眼花缭乱。\n* 我对自己也有了一个新的认识。我逐渐发现,我不是去找一份工作,而是在寻找一些机会,一些志同道合的伙伴,一份激动人心的事业。很荣幸,已经有几个朋友跟我达成了意向,准备组建团队。\n* 到底做什么项目呢?我只能简单地说,社交+电商+区块链。肯定有人要说,这个题目太大了,是蹭热度。我不这样想。我以前对社交的思考中,一个重要的因素就是信任关系,而对电商的思考中,去中心化是一个核心考量。而区块链技术不正是解决信任机制和去中心化的利器么?\n* 在此,我欢迎有兴趣的朋友加入我们,尽快推进项目的实施。\n\n'}},created:function(){this.makeResume()},methods:{makeResume:function(){function n(){return t.apply(this,arguments)}var t=c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.progressivelyShowStyle(0);case 2:return n.next=4,this.progressivelyShowResume();case 4:return n.next=6,this.progressivelyShowStyle(1);case 6:return n.next=8,this.showHtml();case 8:return n.next=10,this.progressivelyShowStyle(2);case 10:case"end":return n.stop()}},n,this)}));return n}(),showHtml:function(){var n=this;return new o.a(function(t,e){n.enableHtml=!0,n.$nextTick(function(){n.$refs.resumeEditor.goTop()}),t()})},progressivelyShowStyle:function(n){var t=this;return new o.a(function(e,r){var o=t.interval,i=c()(a.a.mark(function t(){var r,s,c,u,l,d=this;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=this.fullStyle[n]){t.next=3;break}return t.abrupt("return");case 3:s=this.fullStyle.filter(function(t,e){return e<=n}).map(function(n){return n.length}).reduce(function(n,t){return n+t},0),c=s-r.length,this.currentStyle.length"+this.code+""}},methods:{goBottom:function(){this.$refs.container.scrollTop=1e5}}}},51:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=e(41),o=e.n(r);t.default={props:["markdown","enableHtml"],name:"ThankEditor",computed:{result:function(){return this.enableHtml?o()(this.markdown):this.markdown}},methods:{goBottom:function(){this.$refs.container.scrollTop=1e5},goTop:function(){this.$refs.container.scrollTop=0}}}},52:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=e(46),o=e(44),i=e.n(o),a=e(45),s=e.n(a),c=document.documentElement.clientWidth;new r.a({el:"#app",render:function(n){return n(c>500?i.a:s.a)}})},87:function(n,t){},88:function(n,t){},89:function(n,t){},90:function(n,t){},91:function(n,t){},95:function(n,t,e){e(88);var r=e(8)(e(51),e(97),"data-v-29ad1df6",null);n.exports=r.exports},96:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{attrs:{id:"app"}},[e("div",{attrs:{id:"content"}},[e("StyleEditor",{ref:"styleEditor",attrs:{code:n.currentStyle}}),n._v(" "),e("ResumeEditor",{ref:"resumeEditor",attrs:{markdown:n.currentMarkdown,enableHtml:n.enableHtml}})],1),n._v(" "),e("div",{attrs:{id:"foot"}},[e("ThankEditor",{ref:"thankEditor",attrs:{markdown:n.currentThankMarkdown,enableHtml:n.enableHtml}})],1)])},staticRenderFns:[]}},97:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{ref:"container",staticClass:"thankEditor",class:{htmlMode:n.enableHtml}},[n.enableHtml?e("div",{domProps:{innerHTML:n._s(n.result)}}):e("pre",[n._v(n._s(n.result))])])},staticRenderFns:[]}},98:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{ref:"container",staticClass:"styleEditor"},[e("div",{staticClass:"code",domProps:{innerHTML:n._s(n.codeInStyleTag)}}),n._v(" "),e("pre",{domProps:{innerHTML:n._s(n.highlightedCode)}})])},staticRenderFns:[]}},99:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{attrs:{id:"app"}},[e("StyleEditor",{ref:"styleEditor",attrs:{code:n.currentStyle}}),n._v(" "),e("ResumeEditor",{ref:"resumeEditor",attrs:{markdown:n.currentMarkdown,enableHtml:n.enableHtml}})],1)},staticRenderFns:[]}}},[52]);
+//# sourceMappingURL=app.c4b2e14682ed119846b5.js.map
\ No newline at end of file
diff --git a/public/static/js/app.c4b2e14682ed119846b5.js.map b/public/static/js/app.c4b2e14682ed119846b5.js.map
new file mode 100644
index 0000000..7a2a118
--- /dev/null
+++ b/public/static/js/app.c4b2e14682ed119846b5.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///static/js/app.c4b2e14682ed119846b5.js","webpack:///./src/components/ResumeEditor.vue?6006","webpack:///./src/components/ResumeEditor.vue?f570","webpack:///./src/components/StyleEditor.vue?3aaf","webpack:///./src/App.vue?35a7","webpack:///./src/Mobile.vue?9c8c","webpack:///App.vue","webpack:///Mobile.vue","webpack:///ResumeEditor.vue","webpack:///StyleEditor.vue","webpack:///ThankEditor.vue","webpack:///./src/main.js","webpack:///./src/components/ThankEditor.vue?804a","webpack:///./src/App.vue?1b1d","webpack:///./src/components/ThankEditor.vue?db25","webpack:///./src/components/StyleEditor.vue?475c","webpack:///./src/Mobile.vue?91fe"],"names":["webpackJsonp","100","module","exports","render","_vm","this","_h","$createElement","_c","_self","ref","staticClass","class","htmlMode","enableHtml","domProps","innerHTML","_s","result","_v","staticRenderFns","40","42","__webpack_require__","Component","43","44","45","47","__webpack_exports__","Object","defineProperty","value","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default","n","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default","__WEBPACK_IMPORTED_MODULE_3__components_StyleEditor__","__WEBPACK_IMPORTED_MODULE_3__components_StyleEditor___default","__WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor__","__WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor___default","__WEBPACK_IMPORTED_MODULE_5__components_ThankEditor__","__WEBPACK_IMPORTED_MODULE_5__components_ThankEditor___default","__WEBPACK_IMPORTED_MODULE_6__assets_reset_css__","name","components","StyleEditor","a","ResumeEditor","ThankEditor","data","interval","currentStyle","fullStyle","currentMarkdown","currentThankMarkdown","fullMarkdown","thanksMarkdown","created","makeResume","methods","_ref","apply","arguments","mark","_callee","wrap","_context","prev","next","progressivelyShowStyle","progressivelyShowResume","showHtml","progressivelyShowThanks","stop","_this","resolve","reject","_this2","showStyle","_callee2","style","length","prefixLength","l","char","_this3","_context2","abrupt","filter","_","index","map","item","reduce","p","c","substring","$refs","styleEditor","$nextTick","goBottom","setTimeout","bind","_this4","showResume","resumeEditor","_this5","showThanks","thankEditor","48","__WEBPACK_IMPORTED_MODULE_5__assets_reset_css__","goTop","49","__WEBPACK_IMPORTED_MODULE_0_marked__","__WEBPACK_IMPORTED_MODULE_0_marked___default","props","computed","markdown","container","scrollTop","50","__WEBPACK_IMPORTED_MODULE_0_prismjs__","__WEBPACK_IMPORTED_MODULE_0_prismjs___default","highlightedCode","highlight","code","languages","css","codeInStyleTag","51","52","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_1__App__","__WEBPACK_IMPORTED_MODULE_1__App___default","__WEBPACK_IMPORTED_MODULE_2__Mobile__","__WEBPACK_IMPORTED_MODULE_2__Mobile___default","width","document","documentElement","clientWidth","el","h","87","88","89","90","91","95","96","attrs","id","97","98","99"],"mappings":"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","file":"static/js/app.c4b2e14682ed119846b5.js","sourcesContent":["webpackJsonp([1],{\n\n/***/ 100:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"resumeEditor\",\n class: {\n htmlMode: _vm.enableHtml\n }\n }, [(_vm.enableHtml) ? _c('div', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.result)\n }\n }) : _c('pre', [_vm._v(_vm._s(_vm.result))])])\n},staticRenderFns: []}\n\n/***/ }),\n\n/***/ 40:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 42:\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(91)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(49),\n /* template */\n __webpack_require__(100),\n /* scopeId */\n \"data-v-647e008b\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 43:\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(89)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(50),\n /* template */\n __webpack_require__(98),\n /* scopeId */\n \"data-v-35c047fd\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 44:\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(87)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(47),\n /* template */\n __webpack_require__(96),\n /* scopeId */\n \"data-v-22ce9519\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 45:\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(90)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(48),\n /* template */\n __webpack_require__(99),\n /* scopeId */\n \"data-v-53c8d54c\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__components_StyleEditor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_ThankEditor__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_ThankEditor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__components_ThankEditor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__assets_reset_css__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__assets_reset_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6__assets_reset_css__);\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'app',\n components: {\n StyleEditor: __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor___default.a,\n ResumeEditor: __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor___default.a,\n ThankEditor: __WEBPACK_IMPORTED_MODULE_5__components_ThankEditor___default.a\n },\n data: function data() {\n return {\n interval: 5,\n currentStyle: '',\n enableHtml: false,\n fullStyle: ['/*\\n* Inspired by http://strml.net/\\n* \\u6E90\\u7801\\u5730\\u5740 https://github.com/sitexa/anires\\n* \\u5927\\u5BB6\\u597D\\uFF0C\\u6211\\u662F\\u5357\\u65B9\\u3002\\n* \\u6211\\u6765\\u5199\\u4E00\\u4EFD\\u7B80\\u5386\\uFF01\\n*/\\n\\n/* \\u7ED9\\u6240\\u6709\\u5143\\u7D20\\u52A0\\u4E0A\\u8FC7\\u6E21\\u6548\\u679C */\\n* {\\n transition: all .1s;\\n}\\n/* \\u8BBE\\u7F6E\\u80CC\\u666F\\u989C\\u8272 */\\nhtml {\\n color: rgb(222,222,222); background: rgb(0,64,64);\\n}\\n#content{\\n height:70vh;\\n margin:0;\\n}\\n#foot{\\n height:29vh;\\n margin:0;\\n}\\n\\n/* \\u8BBE\\u7F6E\\u8FB9\\u6846 */\\n.styleEditor {\\n padding: .5em;\\n border: 1px solid;\\n margin: .5em;\\n overflow: auto;\\n width: 50vw; height: 70vh;\\n background: rgb(20,20,20);\\n}\\n/* \\u4EE3\\u7801\\u9AD8\\u4EAE */\\n.token.selector{ color: rgb(130,150,0); }\\n.token.property{ color: rgb(190,140,0); }\\n.token.punctuation{ color: yellow; }\\n.token.function{ color: rgb(40,160,150); }\\n\\n/* \\u52A03D\\u6548\\u679C */\\nhtml{\\n perspective: 1000px;\\n}\\n.styleEditor {\\n position: fixed; left: 0; top: 0;\\n -webkit-transition: none;\\n transition: none;\\n -webkit-transform: rotateY(10deg) translateZ(-100px) ;\\n transform: rotateY(10deg) translateZ(-100px) ;\\n}\\n\\n/* \\u51C6\\u5907\\u4E00\\u4E2A\\u7F16\\u8F91\\u5668 */\\n.resumeEditor{\\n position: fixed; right: 0; top: 0;\\n padding: .5em; margin: .5em;\\n width: 50vw; height: 70vh;\\n border: 1px solid;\\n background: rgb(200,200,200); color: #222;\\n overflow: auto;\\n -webkit-transition: none;\\n transition: none;\\n -webkit-transform: rotateY(-10deg) translateZ(-100px) ;\\n transform: rotateY(-10deg) translateZ(-100px) ;\\n}\\n/* \\u5F00\\u59CB\\u5199\\u7B80\\u5386 */\\n', '\\n/*\\u5C06Markdown\\u683C\\u5F0F\\u7FFB\\u8BD1\\u6210HTML\\n *\\u518D\\u5BF9HTML\\u52A0\\u70B9\\u6837\\u5F0F\\n*/\\n.resumeEditor{\\n padding: 2em;\\n}\\n.resumeEditor h2{\\n display: inline-block;\\n border-bottom: 1px solid;\\n margin: 1em 0 .5em;\\n}\\n.resumeEditor ul,.resumeEditor ol{\\n list-style: none;\\n}\\n.resumeEditor ul> li::before{\\n content: \\'\\u2022\\';\\n margin-right: .5em;\\n}\\n.resumeEditor ol {\\n counter-reset: section;\\n}\\n.resumeEditor ol li::before {\\n counter-increment: section;\\n content: counters(section, \".\") \" \";\\n margin-right: .5em;\\n}\\n.resumeEditor blockquote {\\n margin: 1em;\\n padding: .5em;\\n background: #ddd;\\n}\\n', '/* \\u5199\\u5C01\\u611F\\u8C22\\u4FE1\\u3002\\n * \\u611F\\u8C22\\u5927\\u5BB6\\u5BF9\\u6211\\u7684\\u5173\\u6CE8\\u3002\\n */\\n.styleEditor{\\n width:50vw;height:70vh;\\n}\\n\\n.resumeEditor{\\n width:50vw;height:70vh;\\n}\\n\\n.thankEditor{\\n position: relative; left: 0; top: 0;\\n background: #E9D9BB;\\n color: #001C42;\\n overflow: auto;\\n}\\n\\n.thankEditor {\\n width: 99vw; height: 45vh;\\n border: 1px solid #ccc;\\n font-size: .9em;\\n}\\n', '\\n.thankEditor{\\n padding: .5em; margin: .5em; margin-top:1em;\\n}\\n\\n.thankEditor ul,.thankEditor ol{\\n list-style: none;\\n}\\n.thankEditor ul> li::before{\\n content: \\'\\u261E\\'; color: red;\\n margin-right: .5em;\\n}\\n.thankEditor ol {\\n counter-reset: section;\\n}\\n.thankEditor ol li::before {\\n counter-increment: section;\\n content: counters(section, \"\\u261E\") \" \";\\n margin-right: .5em;\\n}\\n\\n.thankEditor{\\n width: 99vw; height: 45vh;\\n -webkit-transition: none;\\n transition: none;\\n -webkit-transform: rotateX(-10deg) translateZ(-200px);\\n transform: rotateX(-10deg) translateZ(-200px);\\n}\\n\\n'],\n currentMarkdown: '',\n currentThankMarkdown: '',\n fullMarkdown: '\\u5357\\u65B9\\n====\\n\\n\\u5750\\u6807\\uFF1A\\u6E56\\u5357\\u957F\\u6C99\\u3002\\n\\n\\u8D44\\u6DF1\\u8F6F\\u4EF6\\u5DE5\\u7A0B\\u5E08\\uFF0C\\u8D44\\u6DF1\\u4EA7\\u54C1\\u7ECF\\u7406\\uFF0C\\u9AD8\\u7EA7\\u9879\\u76EE\\u7ECF\\u7406\\u3002\\u73B0\\u4E3A\\u81EA\\u7531\\u804C\\u4E1A\\u3002\\n\\n\\u6280\\u80FD\\n====\\n\\n\\u6570\\u636E\\u5E93\\u8BBE\\u8BA1\\n----\\n - \\u7ED3\\u6784\\u5316\\u6570\\u636E\\u5E93\\u8BBE\\u8BA1\\n - noSQL\\u8BBE\\u8BA1\\n\\n\\u540E\\u7AEF\\u5F00\\u53D1\\n----\\n - \\u7528\\u6237\\u7BA1\\u7406\\n - \\u5355\\u70B9\\u767B\\u5F55\\n - \\u7B2C\\u4E09\\u65B9\\u767B\\u5F55\\n - \\u6743\\u9650\\u7BA1\\u7406\\n - \\u4EA4\\u6613\\u7CFB\\u7EDF\\n - \\u652F\\u4ED8\\u7CFB\\u7EDF\\n - \\u793E\\u533A\\u7CFB\\u7EDF\\n - \\u535A\\u5BA2\\u7CFB\\u7EDF\\n - \\u516C\\u4F17\\u53F7\\u5F00\\u53D1\\n - \\u5C0F\\u7A0B\\u5E8F\\u5F00\\u53D1\\n - API\\u63A5\\u53E3\\u5F00\\u53D1\\n\\n\\u524D\\u7AEF\\u5F00\\u53D1\\n----\\n - Web\\u524D\\u7AEF\\u5F00\\u53D1\\n - \\u79FB\\u52A8\\u7EC8\\u7AEF(Native App, Hybrid App)\\n\\n\\u4EA7\\u54C1\\u8BBE\\u8BA1\\n----\\n - \\u667A\\u6167\\u65C5\\u6E38\\u9879\\u76EE\\n - \\u8FD0\\u52A8\\u5065\\u5EB7\\u4E91\\u5E73\\u53F0\\n - \\u793E\\u533A\\u652F\\u6301\\u519C\\u4E1AO2O\\u9879\\u76EE\\n - \\u7701\\u7EA7\\u73AF\\u5883\\u76D1\\u63A7\\u5E73\\u53F0\\n - \\u9AD8\\u901F\\u516C\\u8DEF\\u5F02\\u5730\\u5904\\u7F5A\\u7CFB\\u7EDF\\n - \\u73AF\\u4FDD\\u5C40\\u529E\\u516C\\u81EA\\u52A8\\u5316\\u7CFB\\u7EDF\\n - \\u4FDD\\u9669\\u516C\\u53F8\\u6570\\u636E\\u8FC1\\u79FB\\u9879\\u76EE\\n - \\u5564\\u9152\\u5382\\u4F9B\\u5E94\\u94FE\\u9879\\u76EE\\n - \\u8D27\\u8FD0\\u4EE3\\u7406\\u7CFB\\u7EDF\\n - \\u96C6\\u88C5\\u7BB1\\u7BA1\\u7406\\u7CFB\\u7EDF\\n - \\u6EDE\\u671F\\u8D39\\u7BA1\\u7406\\u9879\\u76EE\\n\\n\\u6280\\u672F\\u53CA\\u8BED\\u8A00\\n----\\n - Java: SpringMVC, SpringCloud, Hibernate, iBatis, spark, sql2o, HikariCP, freemarker, okHttp, retrofit, RxJava\\n - Kotlin: ktor, exposed, anko\\n - Node.js: express, angular, ionic, react, cordova, meteor, electron, axios\\n - Swift: Vapor, ReactiveSwift\\n - Golang: hugo, beego, gorm, sqlx, matcha\\n - Python: tushare, pandas, numpy, matplotlib\\n - DotNet and PHP\\n - DB: SQLServer, Oracle, MySQL/MariaDB, MongoDB, graphQL, redis, memcached\\n - WebServer: apache, nginx, tomcat, netty, jetty\\n - OS: Ubuntu, CentOS, MacOS, Windows\\n - Others: Docker, git, Xmind\\uFF0CAxure\\n\\n\\u5DE5\\u4F5C\\u7ECF\\u5386\\n----\\n\\n1. \\u6E56\\u5357\\u878D\\u8000\\u5065\\u5EB7\\u7BA1\\u7406\\u6709\\u9650\\u516C\\u53F8\\n2. \\u6E56\\u5357\\u4E09\\u82F1\\u7279\\u65C5\\u6E38\\u667A\\u80FD\\u6280\\u672F\\u6709\\u9650\\u516C\\u53F8\\n3. \\u5408\\u80A5\\u84DD\\u76FE\\u79D1\\u6280\\u6709\\u9650\\u516C\\u53F8\\n4. \\u4E0A\\u6D77\\u6613\\u4FDD\\u7F51\\u7EDC\\u6709\\u9650\\u516C\\u53F8\\n5. \\u53A6\\u95E8\\u6D77\\u73AF\\u8BA1\\u7B97\\u673A\\u8F6F\\u4EF6\\u6709\\u9650\\u516C\\u53F8\\n\\n\\u6559\\u80B2\\u7ECF\\u5386\\n----\\n\\n1. \\u534E\\u4E1C\\u7406\\u5DE5\\u5927\\u5B66 \\u73AF\\u5883\\u5DE5\\u7A0B\\u5B66\\u58EB\\n2. \\u53A6\\u95E8\\u5927\\u5B66 \\u7CFB\\u7EDF\\u5DE5\\u7A0B\\u7855\\u58EB\\n\\n\\u6587\\u7AE0\\n----\\n\\n* [\\u6545\\u571F\\u96BE\\u79BB\\uFF08\\u6211\\u7684\\u7236\\u4EB2\\u6BCD\\u4EB2\\uFF09](https://www.meipian.cn/qacqfbz?uuid=d541c15eef694065bc9d1ac9a07925a2)\\n* [\\u6CB9\\u817B\\u817B\\u7684\\u4E2D\\u5E74\\uFF08\\u5C0F\\u8BD7\\uFF09](https://www.meipian.cn/wjaz3zh?uuid=ca1cd053b717451da781786de44e66e7)\\n* [\\u751F\\u547D\\uFF08\\u8001\\u56DB\\u4EEC\\u7684\\u877C\\u8681\\u4EBA\\u751F\\uFF09](https://www.meipian.cn/vc4pr59?uuid=799c98f5a187405c94c86f7da7788869)\\n* [\\u5927\\u5065\\u5EB7\\u5546\\u4E1A\\u6A21\\u5F0F](http://www.sitexa.org/technology/%E5%A4%A7%E5%81%A5%E5%BA%B7%E5%95%86%E4%B8%9A%E6%A8%A1%E5%BC%8F.html)\\n* [\\u793E\\u533A\\u793E\\u4EA4\\u5546\\u4E1A\\u6A21\\u578B](http://www.sitexa.org/other/%E7%A4%BE%E5%8C%BA%E7%A4%BE%E4%BA%A4%E5%95%86%E4%B8%9A%E6%A8%A1%E5%9E%8B.html)\\n\\n\\u94FE\\u63A5\\n----\\n\\n* [GitHub](https://github.com/sitexa)\\n* [\\u6280\\u672F\\u535A\\u5BA2](http://www.sitexa.org)\\n* [\\u5357\\u65B9\\u65F6\\u4EE3](http://www.sitexa.net)\\n* [\\u795E\\u79D8\\u6E58\\u9102\\u897F](http://www.sitexa.cn)\\n* [\\u6211\\u7684\\u7B80\\u5386\\u6545\\u4E8B(\\u7A0B\\u5E8F\\u4EBA\\u751F\\u516C\\u4F17\\u53F7\\u6587\\u7AE0)](https://mp.weixin.qq.com/s/5rsB956EPVm0FoFOe6xYTg)\\n\\n\\u52FE\\u5F15\\u65B9\\u5F0F\\n----\\n\\n* \\u5FAE\\u4FE1\\uFF1Axnpeng\\n\\n', thanksMarkdown: '\\n\\u9E23\\u8C22\\n----\\n\\n* \\u8FD9\\u6BB5\\u65F6\\u95F4\\uFF0C\\u6211\\u6709\\u4E9B\\u8BDA\\u714C\\u8BDA\\u6050\\u3002\\u6211\\u7684\\u7B80\\u5386\\u88AB\\u5F88\\u591A\\u4EBA\\u5173\\u6CE8(49842\\uFF09\\uFF0C\\u6211\\u7801\\u7684\\u90A3\\u51E0\\u7BC7\\u6587\\u7AE0\\u4E5F\\u6709\\u5F88\\u591A\\u4EBA\\u70B9\\u51FB(20095\\uFF09\\uFF0C\\u5FAE\\u4FE1\\u597D\\u53CB\\u589E\\u52A0\\u4E862000\\u591A\\u4EBA\\u3002\"\\u7A0B\\u5E8F\\u4EBA\\u751F\"\\u516C\\u4F17\\u53F7\\u6587\\u7AE0\\uFF08\\u6211\\u7684\\u7B80\\u5386\\u6545\\u4E8B\\uFF09\\u9605\\u8BFB\\u91CF\\u8D85\\u8FC7\\u5341\\u4E07+\\u3002\\n* \\u6709\\u5F88\\u591A\\u4F01\\u4E1A\\u5411\\u6211\\u53D1\\u51FA\\u4E86\\u9762\\u8BD5\\u9080\\u8BF7\\uFF0C\\u6709\\u5F88\\u591A\\u521B\\u4E1A\\u56E2\\u961F\\u5411\\u6211\\u4F38\\u51FA\\u4E86\\u6A44\\u6984\\u679D\\uFF0C\\u4E00\\u4E9B\\u670B\\u53CB\\u7ED9\\u6211\\u63D0\\u51FA\\u975E\\u5E38\\u597D\\u7684\\u5EFA\\u8BAE\\uFF0C\\u8FD8\\u6709\\u5F88\\u591A\\u540C\\u5B66\\u5E0C\\u671B\\u8DDF\\u6211\\u8FDB\\u884C\\u6280\\u672F\\u4EA4\\u6D41\\uFF0C\\u751A\\u81F3\\u6709\\u4E9B\\u4F01\\u4E1A\\u95EE\\u6211\\u80FD\\u5426\\u627F\\u63A5\\u5916\\u5305\\u4E1A\\u52A1\\u3002\\n* \\u4E8E\\u662F\\uFF0C\\u6211\\u53D7\\u547D\\u4E0B\\u5C71\\uFF0C\\u5230\\u4E86\\u6DF1\\u5733\\u3001\\u73E0\\u6D77\\u3001\\u5317\\u4EAC\\u3001\\u5929\\u6D25\\u7B49\\u5730\\uFF0C\\u62DC\\u8BBF\\u4E86\\u4E00\\u4E9B\\u8001\\u677F\\uFF0C\\u7ED3\\u8BC6\\u4E86\\u4E00\\u4E9B\\u65B0\\u670B\\u53CB\\uFF0C\\u89C1\\u4E86\\u4E00\\u4E9B\\u540C\\u5B66\\u548C\\u8001\\u540C\\u4E8B\\uFF0C\\u611F\\u89E6\\u5F88\\u591A\\uFF0C\\u6536\\u83B7\\u5F88\\u5927\\u3002IT\\u884C\\u4E1A\\u6B63\\u5728\\u53D1\\u751F\\u6DF1\\u523B\\u7684\\u53D8\\u5316\\uFF0C\\u65B0\\u6280\\u672F\\u3001\\u65B0\\u6A21\\u5F0F\\u3001\\u65B0\\u601D\\u7EF4\\u3001\\u65B0\\u4E1A\\u6001\\uFF0C\\u5C42\\u51FA\\u4E0D\\u7A77\\uFF0C\\u5404\\u79CD\\u63A2\\u7D22\\uFF0C\\u5404\\u79CD\\u7092\\u4F5C\\uFF0C\\u8BA9\\u4EBA\\u773C\\u82B1\\u7F2D\\u4E71\\u3002\\n* \\u6211\\u5BF9\\u81EA\\u5DF1\\u4E5F\\u6709\\u4E86\\u4E00\\u4E2A\\u65B0\\u7684\\u8BA4\\u8BC6\\u3002\\u6211\\u9010\\u6E10\\u53D1\\u73B0\\uFF0C\\u6211\\u4E0D\\u662F\\u53BB\\u627E\\u4E00\\u4EFD\\u5DE5\\u4F5C\\uFF0C\\u800C\\u662F\\u5728\\u5BFB\\u627E\\u4E00\\u4E9B\\u673A\\u4F1A\\uFF0C\\u4E00\\u4E9B\\u5FD7\\u540C\\u9053\\u5408\\u7684\\u4F19\\u4F34\\uFF0C\\u4E00\\u4EFD\\u6FC0\\u52A8\\u4EBA\\u5FC3\\u7684\\u4E8B\\u4E1A\\u3002\\u5F88\\u8363\\u5E78\\uFF0C\\u5DF2\\u7ECF\\u6709\\u51E0\\u4E2A\\u670B\\u53CB\\u8DDF\\u6211\\u8FBE\\u6210\\u4E86\\u610F\\u5411\\uFF0C\\u51C6\\u5907\\u7EC4\\u5EFA\\u56E2\\u961F\\u3002\\n* \\u5230\\u5E95\\u505A\\u4EC0\\u4E48\\u9879\\u76EE\\u5462\\uFF1F\\u6211\\u53EA\\u80FD\\u7B80\\u5355\\u5730\\u8BF4\\uFF0C\\u793E\\u4EA4+\\u7535\\u5546+\\u533A\\u5757\\u94FE\\u3002\\u80AF\\u5B9A\\u6709\\u4EBA\\u8981\\u8BF4\\uFF0C\\u8FD9\\u4E2A\\u9898\\u76EE\\u592A\\u5927\\u4E86\\uFF0C\\u662F\\u8E6D\\u70ED\\u5EA6\\u3002\\u6211\\u4E0D\\u8FD9\\u6837\\u60F3\\u3002\\u6211\\u4EE5\\u524D\\u5BF9\\u793E\\u4EA4\\u7684\\u601D\\u8003\\u4E2D\\uFF0C\\u4E00\\u4E2A\\u91CD\\u8981\\u7684\\u56E0\\u7D20\\u5C31\\u662F\\u4FE1\\u4EFB\\u5173\\u7CFB\\uFF0C\\u800C\\u5BF9\\u7535\\u5546\\u7684\\u601D\\u8003\\u4E2D\\uFF0C\\u53BB\\u4E2D\\u5FC3\\u5316\\u662F\\u4E00\\u4E2A\\u6838\\u5FC3\\u8003\\u91CF\\u3002\\u800C\\u533A\\u5757\\u94FE\\u6280\\u672F\\u4E0D\\u6B63\\u662F\\u89E3\\u51B3\\u4FE1\\u4EFB\\u673A\\u5236\\u548C\\u53BB\\u4E2D\\u5FC3\\u5316\\u7684\\u5229\\u5668\\u4E48\\uFF1F\\n* \\u5728\\u6B64\\uFF0C\\u6211\\u6B22\\u8FCE\\u6709\\u5174\\u8DA3\\u7684\\u670B\\u53CB\\u52A0\\u5165\\u6211\\u4EEC\\uFF0C\\u5C3D\\u5FEB\\u63A8\\u8FDB\\u9879\\u76EE\\u7684\\u5B9E\\u65BD\\u3002\\uFF08\\u5FAE\\u4FE1\\uFF1Axnpeng\\uFF09\\n\\n '\n };\n },\n created: function created() {\n this.makeResume();\n },\n\n\n methods: {\n makeResume: function () {\n var _ref = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default()(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.mark(function _callee() {\n return __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.progressivelyShowStyle(0);\n\n case 2:\n _context.next = 4;\n return this.progressivelyShowResume();\n\n case 4:\n _context.next = 6;\n return this.progressivelyShowStyle(1);\n\n case 6:\n _context.next = 8;\n return this.showHtml();\n\n case 8:\n _context.next = 10;\n return this.progressivelyShowStyle(2);\n\n case 10:\n _context.next = 12;\n return this.progressivelyShowThanks();\n\n case 12:\n _context.next = 14;\n return this.progressivelyShowStyle(3);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function makeResume() {\n return _ref.apply(this, arguments);\n }\n\n return makeResume;\n }(),\n showHtml: function showHtml() {\n var _this = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n _this.enableHtml = true;\n resolve();\n });\n },\n progressivelyShowStyle: function progressivelyShowStyle(n) {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n var interval = _this2.interval;\n var showStyle = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default()(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.mark(function _callee2() {\n var _this3 = this;\n\n var style, length, prefixLength, l, char;\n return __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n style = this.fullStyle[n];\n\n if (style) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 3:\n length = this.fullStyle.filter(function (_, index) {\n return index <= n;\n }).map(function (item) {\n return item.length;\n }).reduce(function (p, c) {\n return p + c;\n }, 0);\n prefixLength = length - style.length;\n\n if (this.currentStyle.length < length) {\n l = this.currentStyle.length - prefixLength;\n char = style.substring(l, l + 1) || ' ';\n\n this.currentStyle += char;\n if (style.substring(l - 1, l) === '\\n' && this.$refs.styleEditor) {\n this.$nextTick(function () {\n _this3.$refs.styleEditor.goBottom();\n });\n }\n setTimeout(showStyle, interval);\n } else {\n resolve();\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n })).bind(_this2);\n showStyle();\n });\n },\n progressivelyShowResume: function progressivelyShowResume() {\n var _this4 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n var length = _this4.fullMarkdown.length;\n var interval = _this4.interval;\n var showResume = function showResume() {\n if (_this4.currentMarkdown.length < length) {\n _this4.currentMarkdown = _this4.fullMarkdown.substring(0, _this4.currentMarkdown.length + 1);\n var lastChar = _this4.currentMarkdown[_this4.currentMarkdown.length - 1];\n var prevChar = _this4.currentMarkdown[_this4.currentMarkdown.length - 2];\n if (prevChar === '\\n' && _this4.$refs.resumeEditor) {\n _this4.$nextTick(function () {\n return _this4.$refs.resumeEditor.goBottom();\n });\n }\n setTimeout(showResume, interval);\n } else {\n resolve();\n }\n };\n showResume();\n });\n },\n progressivelyShowThanks: function progressivelyShowThanks() {\n var _this5 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n var length = _this5.thanksMarkdown.length;\n var interval = _this5.interval;\n var showThanks = function showThanks() {\n if (_this5.currentThankMarkdown.length < length) {\n _this5.currentThankMarkdown = _this5.thanksMarkdown.substring(0, _this5.currentThankMarkdown.length + 1);\n var lastChar = _this5.currentThankMarkdown[_this5.currentThankMarkdown.length - 1];\n var prevChar = _this5.currentThankMarkdown[_this5.currentThankMarkdown.length - 2];\n if (prevChar === '\\n' && _this5.$refs.thankEditor) {\n _this5.$nextTick(function () {\n return _this5.$refs.thankEditor.goBottom();\n });\n }\n setTimeout(showThanks, interval);\n } else {\n resolve();\n }\n };\n showThanks();\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ 48:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__components_StyleEditor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__assets_reset_css__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__assets_reset_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__assets_reset_css__);\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'app',\n components: {\n StyleEditor: __WEBPACK_IMPORTED_MODULE_3__components_StyleEditor___default.a,\n ResumeEditor: __WEBPACK_IMPORTED_MODULE_4__components_ResumeEditor___default.a\n },\n data: function data() {\n return {\n interval: 5,\n currentStyle: '',\n enableHtml: false,\n fullStyle: ['/*\\n* Inspired by http://strml.net/\\n* \\u6E90\\u7801\\u5730\\u5740 https://github.com/sitexa/anires\\n* \\u5927\\u5BB6\\u597D\\uFF0C\\u6211\\u662F\\u5357\\u65B9\\u3002\\n* \\u6211\\u6765\\u5199\\u4E00\\u4EFD\\u7B80\\u5386\\uFF01\\n*/\\n\\n/* \\u7ED9\\u6240\\u6709\\u5143\\u7D20\\u52A0\\u4E0A\\u8FC7\\u6E21\\u6548\\u679C */\\n* {\\n transition: all .2s;\\n}\\n/* \\u8BBE\\u7F6E\\u80CC\\u666F\\u989C\\u8272 */\\nhtml {\\n color: rgb(222,222,222);\\n background: rgb(0,43,54);\\n}\\n/* \\u8BBE\\u7F6E\\u8FB9\\u6846 */\\n.styleEditor {\\n padding: .5em;\\n border: 1px solid;\\n overflow: auto;\\n width: 90vw;\\n margin: 2.5vh 5vw;\\n height: 90vh;\\n}\\n/* \\u592A\\u9AD8\\u4E86 */\\n.styleEditor {\\n height: 45vh;\\n}\\n/* \\u4EE3\\u7801\\u9AD8\\u4EAE */\\n.token.selector{\\n color: rgb(133,153,0);\\n}\\n.token.property{\\n color: rgb(187,137,0);\\n}\\n.token.punctuation{\\n color: yellow;\\n}\\n.token.function{\\n color: rgb(42,161,152);\\n}\\n\\n/* \\u52A03D\\u6548\\u679C */\\nhtml{\\n perspective: 1000px;\\n}\\n.styleEditor {\\n position: fixed; left: 0; top: 0;\\n transform: rotateX(-10deg) translateZ(-50px) ;\\n}\\n\\n/* \\u51C6\\u5907\\u4E00\\u4E2A\\u7F16\\u8F91\\u5668 */\\n.resumeEditor{\\n position: fixed;\\n top: 50%; left: 0;\\n padding: .5em; margin: 2.5vh;\\n width: 95vw; height: 45vh;\\n border: 1px solid;\\n background: white; color: #222;\\n overflow: auto;\\n}\\n/* \\u5F00\\u59CB\\u5199\\u7B80\\u5386 */\\n\\n\\n', '\\n/*\\u5C06Markdown\\u683C\\u5F0F\\u7FFB\\u8BD1\\u6210HTML\\n *\\u518D\\u5BF9HTML\\u52A0\\u70B9\\u6837\\u5F0F\\n*/\\n', '\\n.resumeEditor{\\n padding: 2em;\\n}\\n.resumeEditor h2{\\n display: inline-block;\\n border-bottom: 1px solid;\\n margin: 1em 0 .5em;\\n}\\n.resumeEditor ul,.resumeEditor ol{\\n list-style: none;\\n}\\n.resumeEditor ul> li::before{\\n content: \\'\\u2022\\';\\n margin-right: .5em;\\n}\\n.resumeEditor ol {\\n counter-reset: section;\\n}\\n.resumeEditor ol li::before {\\n counter-increment: section;\\n content: counters(section, \".\") \" \";\\n margin-right: .5em;\\n}\\n.resumeEditor blockquote {\\n margin: 1em;\\n padding: .5em;\\n background: #ddd;\\n}\\n'],\n currentMarkdown: '',\n fullMarkdown: '\\u5357\\u65B9\\n====\\n\\u5750\\u6807\\uFF1A\\u6E56\\u5357\\u957F\\u6C99\\u3002\\n\\n\\u8D44\\u6DF1\\u8F6F\\u4EF6\\u5DE5\\u7A0B\\u5E08\\uFF0C\\u8D44\\u6DF1\\u4EA7\\u54C1\\u7ECF\\u7406\\uFF0C\\u9AD8\\u7EA7\\u9879\\u76EE\\u7ECF\\u7406\\u3002\\u73B0\\u4E3A\\u81EA\\u7531\\u804C\\u4E1A\\u3002\\n\\n\\u6280\\u80FD\\n====\\n\\n\\u6570\\u636E\\u5E93\\u8BBE\\u8BA1\\n----\\n - \\u7ED3\\u6784\\u5316\\u6570\\u636E\\u5E93\\u8BBE\\u8BA1\\n - noSQL\\u8BBE\\u8BA1\\n\\n\\u540E\\u7AEF\\u5F00\\u53D1\\n----\\n - \\u7528\\u6237\\u7BA1\\u7406\\n - \\u5355\\u70B9\\u767B\\u5F55\\n - \\u7B2C\\u4E09\\u65B9\\u767B\\u5F55\\n - \\u6743\\u9650\\u7BA1\\u7406\\n - \\u4EA4\\u6613\\u7CFB\\u7EDF\\n - \\u652F\\u4ED8\\u7CFB\\u7EDF\\n - \\u793E\\u533A\\u7CFB\\u7EDF\\n - \\u535A\\u5BA2\\u7CFB\\u7EDF\\n - \\u516C\\u4F17\\u53F7\\u5F00\\u53D1\\n - \\u5C0F\\u7A0B\\u5E8F\\u5F00\\u53D1\\n - API\\u63A5\\u53E3\\n\\n\\u524D\\u7AEF\\u5F00\\u53D1\\n----\\n - Web\\u524D\\u7AEF\\u5F00\\u53D1\\n - \\u79FB\\u52A8\\u7EC8\\u7AEF(Native App, Hybrid App)\\n\\n\\u4EA7\\u54C1\\u8BBE\\u8BA1\\n----\\n - \\u667A\\u6167\\u65C5\\u6E38\\u9879\\u76EE\\n - \\u8FD0\\u52A8\\u5065\\u5EB7\\u4E91\\u5E73\\u53F0\\n - \\u793E\\u533A\\u652F\\u6301\\u519C\\u4E1AO2O\\u9879\\u76EE\\n - \\u7701\\u7EA7\\u73AF\\u5883\\u76D1\\u63A7\\u5E73\\u53F0\\n - \\u9AD8\\u901F\\u516C\\u8DEF\\u5F02\\u5730\\u5904\\u7F5A\\u7CFB\\u7EDF\\n - \\u73AF\\u4FDD\\u5C40\\u529E\\u516C\\u81EA\\u52A8\\u5316\\u7CFB\\u7EDF\\n - \\u4FDD\\u9669\\u516C\\u53F8\\u6570\\u636E\\u8FC1\\u79FB\\u9879\\u76EE\\n - \\u5564\\u9152\\u5382\\u4F9B\\u5E94\\u94FE\\u9879\\u76EE\\n - \\u8D27\\u8FD0\\u4EE3\\u7406\\u7CFB\\u7EDF\\n - \\u96C6\\u88C5\\u7BB1\\u7BA1\\u7406\\u7CFB\\u7EDF\\n - \\u6EDE\\u671F\\u8D39\\u7BA1\\u7406\\u9879\\u76EE\\n\\n\\u6280\\u672F\\u53CA\\u8BED\\u8A00\\n----\\n - Java: SpringMVC, SpringCloud, Hibernate, iBatis, spark, sql2o, HikariCP, freemarker, okHttp, retrofit, RxJava\\n - Kotlin: ktor, exposed, anko\\n - Node.js: express, angular, ionic, react, cordova, meteor, electron, axios\\n - Swift: Vapor, ReactiveSwift\\n - Golang: hugo, beego, gorm, sqlx, matcha\\n - Python: tushare, pandas, numpy, matplotlib\\n - DotNet and PHP\\n - DB: SQLServer, Oracle, MySQL/MariaDB, MongoDB, graphQL, redis, memcached\\n - WebServer: apache, nginx, tomcat, netty, jetty\\n - OS: Ubuntu, CentOS, MacOS, Windows\\n - Others: Docker, git, Xmind\\uFF0CAxure\\n\\n\\u5DE5\\u4F5C\\u7ECF\\u5386\\n====\\n\\n1. \\u6E56\\u5357\\u878D\\u8000\\u5065\\u5EB7\\u7BA1\\u7406\\u6709\\u9650\\u516C\\u53F8\\n2. \\u6E56\\u5357\\u4E09\\u82F1\\u7279\\u65C5\\u6E38\\u667A\\u80FD\\u6280\\u672F\\u6709\\u9650\\u516C\\u53F8\\n3. \\u5408\\u80A5\\u84DD\\u76FE\\u79D1\\u6280\\u6709\\u9650\\u516C\\u53F8\\n4. \\u4E0A\\u6D77\\u6613\\u4FDD\\u7F51\\u7EDC\\u6709\\u9650\\u516C\\u53F8\\n5. \\u53A6\\u95E8\\u6D77\\u73AF\\u8BA1\\u7B97\\u673A\\u8F6F\\u4EF6\\u6709\\u9650\\u516C\\u53F8\\n\\n\\u6559\\u80B2\\u7ECF\\u5386\\n====\\n\\n1. \\u534E\\u4E1C\\u7406\\u5DE5\\u5927\\u5B66 \\u73AF\\u5883\\u5DE5\\u7A0B\\u5B66\\u58EB\\n2. \\u53A6\\u95E8\\u5927\\u5B66 \\u7CFB\\u7EDF\\u5DE5\\u7A0B\\u7855\\u58EB\\n\\n\\u6587\\u7AE0\\n====\\n\\n* [\\u6545\\u571F\\u96BE\\u79BB\\uFF08\\u6211\\u7684\\u7236\\u4EB2\\u6BCD\\u4EB2\\uFF09](https://www.meipian.cn/qacqfbz?uuid=d541c15eef694065bc9d1ac9a07925a2)\\n* [\\u6CB9\\u817B\\u817B\\u7684\\u4E2D\\u5E74\\uFF08\\u5C0F\\u8BD7\\uFF09](https://www.meipian.cn/wjaz3zh?uuid=ca1cd053b717451da781786de44e66e7)\\n* [\\u751F\\u547D\\uFF08\\u8001\\u56DB\\u4EEC\\u7684\\u877C\\u8681\\u4EBA\\u751F\\uFF09](https://www.meipian.cn/vc4pr59?uuid=799c98f5a187405c94c86f7da7788869)\\n* [\\u5927\\u5065\\u5EB7\\u5546\\u4E1A\\u6A21\\u5F0F](http://www.sitexa.org/technology/%E5%A4%A7%E5%81%A5%E5%BA%B7%E5%95%86%E4%B8%9A%E6%A8%A1%E5%BC%8F.html)\\n* [\\u793E\\u533A\\u793E\\u4EA4\\u5546\\u4E1A\\u6A21\\u578B](http://www.sitexa.org/other/%E7%A4%BE%E5%8C%BA%E7%A4%BE%E4%BA%A4%E5%95%86%E4%B8%9A%E6%A8%A1%E5%9E%8B.html)\\n\\n\\u94FE\\u63A5\\n====\\n\\n* [GitHub](https://github.com/sitexa)\\n* [\\u6280\\u672F\\u535A\\u5BA2](http://www.sitexa.org)\\n* [\\u5357\\u65B9\\u65F6\\u4EE3](http://www.sitexa.net)\\n* [\\u795E\\u79D8\\u6E58\\u9102\\u897F](http://www.sitexa.cn)\\n* [\\u6211\\u7684\\u7B80\\u5386\\u6545\\u4E8B(\\u7A0B\\u5E8F\\u4EBA\\u751F\\u516C\\u4F17\\u53F7\\u6587\\u7AE0)](https://mp.weixin.qq.com/s/5rsB956EPVm0FoFOe6xYTg)\\n\\n\\u52FE\\u5F15\\u65B9\\u5F0F\\n====\\n\\n* \\u5FAE\\u4FE1\\uFF1Axnpeng\\n\\n\\u9E23\\u8C22\\n----\\n\\n* \\u8FD9\\u6BB5\\u65F6\\u95F4\\uFF0C\\u6211\\u6709\\u4E9B\\u8BDA\\u714C\\u8BDA\\u6050\\u3002\\u6211\\u7684\\u7B80\\u5386\\u88AB\\u5F88\\u591A\\u4EBA\\u5173\\u6CE8(49842\\uFF09\\uFF0C\\u6211\\u7801\\u7684\\u90A3\\u51E0\\u7BC7\\u6587\\u7AE0\\u4E5F\\u6709\\u5F88\\u591A\\u4EBA\\u70B9\\u51FB(20095\\uFF09\\uFF0C\\u5FAE\\u4FE1\\u597D\\u53CB\\u589E\\u52A0\\u4E862000\\u591A\\u4EBA\\u3002\"\\u7A0B\\u5E8F\\u4EBA\\u751F\"\\u516C\\u4F17\\u53F7\\u6587\\u7AE0\\uFF08\\u6211\\u7684\\u7B80\\u5386\\u6545\\u4E8B\\uFF09\\u9605\\u8BFB\\u91CF\\u8D85\\u8FC7\\u5341\\u4E07+\\u3002\\n* \\u6709\\u5F88\\u591A\\u4F01\\u4E1A\\u5411\\u6211\\u53D1\\u51FA\\u4E86\\u9762\\u8BD5\\u9080\\u8BF7\\uFF0C\\u6709\\u5F88\\u591A\\u521B\\u4E1A\\u56E2\\u961F\\u5411\\u6211\\u4F38\\u51FA\\u4E86\\u6A44\\u6984\\u679D\\uFF0C\\u4E00\\u4E9B\\u670B\\u53CB\\u7ED9\\u6211\\u63D0\\u51FA\\u975E\\u5E38\\u597D\\u7684\\u5EFA\\u8BAE\\uFF0C\\u8FD8\\u6709\\u5F88\\u591A\\u540C\\u5B66\\u5E0C\\u671B\\u8DDF\\u6211\\u8FDB\\u884C\\u6280\\u672F\\u4EA4\\u6D41\\uFF0C\\u751A\\u81F3\\u6709\\u4E9B\\u4F01\\u4E1A\\u95EE\\u6211\\u80FD\\u5426\\u627F\\u63A5\\u5916\\u5305\\u4E1A\\u52A1\\u3002\\n* \\u4E8E\\u662F\\uFF0C\\u6211\\u53D7\\u547D\\u4E0B\\u5C71\\uFF0C\\u5230\\u4E86\\u6DF1\\u5733\\u3001\\u73E0\\u6D77\\u3001\\u5317\\u4EAC\\u3001\\u5929\\u6D25\\u7B49\\u5730\\uFF0C\\u62DC\\u8BBF\\u4E86\\u4E00\\u4E9B\\u8001\\u677F\\uFF0C\\u7ED3\\u8BC6\\u4E86\\u4E00\\u4E9B\\u65B0\\u670B\\u53CB\\uFF0C\\u89C1\\u4E86\\u4E00\\u4E9B\\u540C\\u5B66\\u548C\\u8001\\u540C\\u4E8B\\uFF0C\\u611F\\u89E6\\u5F88\\u591A\\uFF0C\\u6536\\u83B7\\u5F88\\u5927\\u3002IT\\u884C\\u4E1A\\u6B63\\u5728\\u53D1\\u751F\\u6DF1\\u523B\\u7684\\u53D8\\u5316\\uFF0C\\u65B0\\u6280\\u672F\\u3001\\u65B0\\u6A21\\u5F0F\\u3001\\u65B0\\u601D\\u7EF4\\u3001\\u65B0\\u4E1A\\u6001\\uFF0C\\u5C42\\u51FA\\u4E0D\\u7A77\\uFF0C\\u5404\\u79CD\\u63A2\\u7D22\\uFF0C\\u5404\\u79CD\\u7092\\u4F5C\\uFF0C\\u8BA9\\u4EBA\\u773C\\u82B1\\u7F2D\\u4E71\\u3002\\n* \\u6211\\u5BF9\\u81EA\\u5DF1\\u4E5F\\u6709\\u4E86\\u4E00\\u4E2A\\u65B0\\u7684\\u8BA4\\u8BC6\\u3002\\u6211\\u9010\\u6E10\\u53D1\\u73B0\\uFF0C\\u6211\\u4E0D\\u662F\\u53BB\\u627E\\u4E00\\u4EFD\\u5DE5\\u4F5C\\uFF0C\\u800C\\u662F\\u5728\\u5BFB\\u627E\\u4E00\\u4E9B\\u673A\\u4F1A\\uFF0C\\u4E00\\u4E9B\\u5FD7\\u540C\\u9053\\u5408\\u7684\\u4F19\\u4F34\\uFF0C\\u4E00\\u4EFD\\u6FC0\\u52A8\\u4EBA\\u5FC3\\u7684\\u4E8B\\u4E1A\\u3002\\u5F88\\u8363\\u5E78\\uFF0C\\u5DF2\\u7ECF\\u6709\\u51E0\\u4E2A\\u670B\\u53CB\\u8DDF\\u6211\\u8FBE\\u6210\\u4E86\\u610F\\u5411\\uFF0C\\u51C6\\u5907\\u7EC4\\u5EFA\\u56E2\\u961F\\u3002\\n* \\u5230\\u5E95\\u505A\\u4EC0\\u4E48\\u9879\\u76EE\\u5462\\uFF1F\\u6211\\u53EA\\u80FD\\u7B80\\u5355\\u5730\\u8BF4\\uFF0C\\u793E\\u4EA4+\\u7535\\u5546+\\u533A\\u5757\\u94FE\\u3002\\u80AF\\u5B9A\\u6709\\u4EBA\\u8981\\u8BF4\\uFF0C\\u8FD9\\u4E2A\\u9898\\u76EE\\u592A\\u5927\\u4E86\\uFF0C\\u662F\\u8E6D\\u70ED\\u5EA6\\u3002\\u6211\\u4E0D\\u8FD9\\u6837\\u60F3\\u3002\\u6211\\u4EE5\\u524D\\u5BF9\\u793E\\u4EA4\\u7684\\u601D\\u8003\\u4E2D\\uFF0C\\u4E00\\u4E2A\\u91CD\\u8981\\u7684\\u56E0\\u7D20\\u5C31\\u662F\\u4FE1\\u4EFB\\u5173\\u7CFB\\uFF0C\\u800C\\u5BF9\\u7535\\u5546\\u7684\\u601D\\u8003\\u4E2D\\uFF0C\\u53BB\\u4E2D\\u5FC3\\u5316\\u662F\\u4E00\\u4E2A\\u6838\\u5FC3\\u8003\\u91CF\\u3002\\u800C\\u533A\\u5757\\u94FE\\u6280\\u672F\\u4E0D\\u6B63\\u662F\\u89E3\\u51B3\\u4FE1\\u4EFB\\u673A\\u5236\\u548C\\u53BB\\u4E2D\\u5FC3\\u5316\\u7684\\u5229\\u5668\\u4E48\\uFF1F\\n* \\u5728\\u6B64\\uFF0C\\u6211\\u6B22\\u8FCE\\u6709\\u5174\\u8DA3\\u7684\\u670B\\u53CB\\u52A0\\u5165\\u6211\\u4EEC\\uFF0C\\u5C3D\\u5FEB\\u63A8\\u8FDB\\u9879\\u76EE\\u7684\\u5B9E\\u65BD\\u3002\\n\\n'\n };\n },\n created: function created() {\n this.makeResume();\n },\n\n\n methods: {\n makeResume: function () {\n var _ref = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default()(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.mark(function _callee() {\n return __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.progressivelyShowStyle(0);\n\n case 2:\n _context.next = 4;\n return this.progressivelyShowResume();\n\n case 4:\n _context.next = 6;\n return this.progressivelyShowStyle(1);\n\n case 6:\n _context.next = 8;\n return this.showHtml();\n\n case 8:\n _context.next = 10;\n return this.progressivelyShowStyle(2);\n\n case 10:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function makeResume() {\n return _ref.apply(this, arguments);\n }\n\n return makeResume;\n }(),\n showHtml: function showHtml() {\n var _this = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n _this.enableHtml = true;\n _this.$nextTick(function () {\n _this.$refs.resumeEditor.goTop();\n });\n resolve();\n });\n },\n progressivelyShowStyle: function progressivelyShowStyle(n) {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n var interval = _this2.interval;\n var showStyle = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_asyncToGenerator___default()(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.mark(function _callee2() {\n var _this3 = this;\n\n var style, length, prefixLength, l, char;\n return __WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n style = this.fullStyle[n];\n\n if (style) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 3:\n length = this.fullStyle.filter(function (_, index) {\n return index <= n;\n }).map(function (item) {\n return item.length;\n }).reduce(function (p, c) {\n return p + c;\n }, 0);\n prefixLength = length - style.length;\n\n if (this.currentStyle.length < length) {\n l = this.currentStyle.length - prefixLength;\n char = style.substring(l, l + 1) || ' ';\n\n this.currentStyle += char;\n if (style.substring(l - 1, l) === '\\n' && this.$refs.styleEditor) {\n this.$nextTick(function () {\n _this3.$refs.styleEditor.goBottom();\n });\n }\n setTimeout(showStyle, interval);\n } else {\n resolve();\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n })).bind(_this2);\n showStyle();\n });\n },\n progressivelyShowResume: function progressivelyShowResume() {\n var _this4 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a(function (resolve, reject) {\n var length = _this4.fullMarkdown.length;\n var interval = _this4.interval;\n var showResume = function showResume() {\n if (_this4.currentMarkdown.length < length) {\n _this4.currentMarkdown = _this4.fullMarkdown.substring(0, _this4.currentMarkdown.length + 1);\n var lastChar = _this4.currentMarkdown[_this4.currentMarkdown.length - 1];\n var prevChar = _this4.currentMarkdown[_this4.currentMarkdown.length - 2];\n if (prevChar === '\\n' && _this4.$refs.resumeEditor) {\n _this4.$nextTick(function () {\n return _this4.$refs.resumeEditor.goBottom();\n });\n }\n setTimeout(showResume, interval);\n } else {\n resolve();\n }\n };\n showResume();\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ 49:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_marked__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['markdown', 'enableHtml'],\n name: 'ResumeEditor',\n computed: {\n result: function result() {\n return this.enableHtml ? __WEBPACK_IMPORTED_MODULE_0_marked___default()(this.markdown) : this.markdown;\n }\n },\n methods: {\n goBottom: function goBottom() {\n this.$refs.container.scrollTop = 100000;\n },\n goTop: function goTop() {\n this.$refs.container.scrollTop = 0;\n }\n }\n});\n\n/***/ }),\n\n/***/ 50:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prismjs__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prismjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prismjs__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Editor',\n props: ['code'],\n computed: {\n highlightedCode: function highlightedCode() {\n return __WEBPACK_IMPORTED_MODULE_0_prismjs___default.a.highlight(this.code, __WEBPACK_IMPORTED_MODULE_0_prismjs___default.a.languages.css);\n },\n codeInStyleTag: function codeInStyleTag() {\n return '';\n }\n },\n methods: {\n goBottom: function goBottom() {\n this.$refs.container.scrollTop = 100000;\n }\n }\n});\n\n/***/ }),\n\n/***/ 51:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_marked__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['markdown', 'enableHtml'],\n name: 'ThankEditor',\n computed: {\n result: function result() {\n return this.enableHtml ? __WEBPACK_IMPORTED_MODULE_0_marked___default()(this.markdown) : this.markdown;\n }\n },\n methods: {\n goBottom: function goBottom() {\n this.$refs.container.scrollTop = 100000;\n },\n goTop: function goTop() {\n this.$refs.container.scrollTop = 0;\n }\n }\n});\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__App__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Mobile__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Mobile___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__Mobile__);\n\n\n\n\nvar width = document.documentElement.clientWidth;\n\nnew __WEBPACK_IMPORTED_MODULE_0_vue__[\"a\" /* default */]({\n el: '#app',\n render: function render(h) {\n return h(width > 500 ? __WEBPACK_IMPORTED_MODULE_1__App___default.a : __WEBPACK_IMPORTED_MODULE_2__Mobile___default.a);\n }\n});\n\n/***/ }),\n\n/***/ 87:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 88:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 89:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 90:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 91:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 95:\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(88)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(51),\n /* template */\n __webpack_require__(97),\n /* scopeId */\n \"data-v-29ad1df6\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 96:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('div', {\n attrs: {\n \"id\": \"content\"\n }\n }, [_c('StyleEditor', {\n ref: \"styleEditor\",\n attrs: {\n \"code\": _vm.currentStyle\n }\n }), _vm._v(\" \"), _c('ResumeEditor', {\n ref: \"resumeEditor\",\n attrs: {\n \"markdown\": _vm.currentMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1), _vm._v(\" \"), _c('div', {\n attrs: {\n \"id\": \"foot\"\n }\n }, [_c('ThankEditor', {\n ref: \"thankEditor\",\n attrs: {\n \"markdown\": _vm.currentThankMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1)])\n},staticRenderFns: []}\n\n/***/ }),\n\n/***/ 97:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"thankEditor\",\n class: {\n htmlMode: _vm.enableHtml\n }\n }, [(_vm.enableHtml) ? _c('div', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.result)\n }\n }) : _c('pre', [_vm._v(_vm._s(_vm.result))])])\n},staticRenderFns: []}\n\n/***/ }),\n\n/***/ 98:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"styleEditor\"\n }, [_c('div', {\n staticClass: \"code\",\n domProps: {\n \"innerHTML\": _vm._s(_vm.codeInStyleTag)\n }\n }), _vm._v(\" \"), _c('pre', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.highlightedCode)\n }\n })])\n},staticRenderFns: []}\n\n/***/ }),\n\n/***/ 99:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('StyleEditor', {\n ref: \"styleEditor\",\n attrs: {\n \"code\": _vm.currentStyle\n }\n }), _vm._v(\" \"), _c('ResumeEditor', {\n ref: \"resumeEditor\",\n attrs: {\n \"markdown\": _vm.currentMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1)\n},staticRenderFns: []}\n\n/***/ })\n\n},[52]);\n\n\n// WEBPACK FOOTER //\n// static/js/app.c4b2e14682ed119846b5.js","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"resumeEditor\",\n class: {\n htmlMode: _vm.enableHtml\n }\n }, [(_vm.enableHtml) ? _c('div', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.result)\n }\n }) : _c('pre', [_vm._v(_vm._s(_vm.result))])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-647e008b!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/ResumeEditor.vue\n// module id = 100\n// module chunks = 1","\n/* styles */\nrequire(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!../../node_modules/vue-loader/lib/style-rewriter?id=data-v-647e008b&scoped=true!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ResumeEditor.vue\")\n\nvar Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ResumeEditor.vue\"),\n /* template */\n require(\"!!../../node_modules/vue-loader/lib/template-compiler?id=data-v-647e008b!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ResumeEditor.vue\"),\n /* scopeId */\n \"data-v-647e008b\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ResumeEditor.vue\n// module id = 42\n// module chunks = 1","\n/* styles */\nrequire(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!../../node_modules/vue-loader/lib/style-rewriter?id=data-v-35c047fd&scoped=true!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./StyleEditor.vue\")\n\nvar Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./StyleEditor.vue\"),\n /* template */\n require(\"!!../../node_modules/vue-loader/lib/template-compiler?id=data-v-35c047fd!../../node_modules/vue-loader/lib/selector?type=template&index=0!./StyleEditor.vue\"),\n /* scopeId */\n \"data-v-35c047fd\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/StyleEditor.vue\n// module id = 43\n// module chunks = 1","\n/* styles */\nrequire(\"!!../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!../node_modules/vue-loader/lib/style-rewriter?id=data-v-22ce9519&scoped=true!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n\nvar Component = require(\"!../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"),\n /* template */\n require(\"!!../node_modules/vue-loader/lib/template-compiler?id=data-v-22ce9519!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"),\n /* scopeId */\n \"data-v-22ce9519\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = 44\n// module chunks = 1","\n/* styles */\nrequire(\"!!../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!../node_modules/vue-loader/lib/style-rewriter?id=data-v-53c8d54c&scoped=true!../node_modules/vue-loader/lib/selector?type=styles&index=0!./Mobile.vue\")\n\nvar Component = require(\"!../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./Mobile.vue\"),\n /* template */\n require(\"!!../node_modules/vue-loader/lib/template-compiler?id=data-v-53c8d54c!../node_modules/vue-loader/lib/selector?type=template&index=0!./Mobile.vue\"),\n /* scopeId */\n \"data-v-53c8d54c\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Mobile.vue\n// module id = 45\n// module chunks = 1","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?56fe36c8","\n \n \n \n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Mobile.vue?65f72bc7","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ResumeEditor.vue?0122220a","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// StyleEditor.vue?e1441254","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ThankEditor.vue?e5218dd2","import Vue from 'vue'\nimport App from './App'\nimport Mobile from './Mobile'\n\nvar width = document.documentElement.clientWidth\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n render: h => h(width > 500 ? App : Mobile)\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","\n/* styles */\nrequire(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!../../node_modules/vue-loader/lib/style-rewriter?id=data-v-29ad1df6&scoped=true!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ThankEditor.vue\")\n\nvar Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ThankEditor.vue\"),\n /* template */\n require(\"!!../../node_modules/vue-loader/lib/template-compiler?id=data-v-29ad1df6!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ThankEditor.vue\"),\n /* scopeId */\n \"data-v-29ad1df6\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ThankEditor.vue\n// module id = 95\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('div', {\n attrs: {\n \"id\": \"content\"\n }\n }, [_c('StyleEditor', {\n ref: \"styleEditor\",\n attrs: {\n \"code\": _vm.currentStyle\n }\n }), _vm._v(\" \"), _c('ResumeEditor', {\n ref: \"resumeEditor\",\n attrs: {\n \"markdown\": _vm.currentMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1), _vm._v(\" \"), _c('div', {\n attrs: {\n \"id\": \"foot\"\n }\n }, [_c('ThankEditor', {\n ref: \"thankEditor\",\n attrs: {\n \"markdown\": _vm.currentThankMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1)])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-22ce9519!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = 96\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"thankEditor\",\n class: {\n htmlMode: _vm.enableHtml\n }\n }, [(_vm.enableHtml) ? _c('div', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.result)\n }\n }) : _c('pre', [_vm._v(_vm._s(_vm.result))])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29ad1df6!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/ThankEditor.vue\n// module id = 97\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"container\",\n staticClass: \"styleEditor\"\n }, [_c('div', {\n staticClass: \"code\",\n domProps: {\n \"innerHTML\": _vm._s(_vm.codeInStyleTag)\n }\n }), _vm._v(\" \"), _c('pre', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.highlightedCode)\n }\n })])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-35c047fd!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/StyleEditor.vue\n// module id = 98\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('StyleEditor', {\n ref: \"styleEditor\",\n attrs: {\n \"code\": _vm.currentStyle\n }\n }), _vm._v(\" \"), _c('ResumeEditor', {\n ref: \"resumeEditor\",\n attrs: {\n \"markdown\": _vm.currentMarkdown,\n \"enableHtml\": _vm.enableHtml\n }\n })], 1)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-53c8d54c!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Mobile.vue\n// module id = 99\n// module chunks = 1"],"sourceRoot":""}
\ No newline at end of file
diff --git a/public/static/js/manifest.22a4ae013e2ceb48b7dd.js b/public/static/js/manifest.22a4ae013e2ceb48b7dd.js
new file mode 100644
index 0000000..a6f50d6
--- /dev/null
+++ b/public/static/js/manifest.22a4ae013e2ceb48b7dd.js
@@ -0,0 +1,2 @@
+!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var u,a,f,s=0,l=[];s0?r:n)(t)}},function(t,e,n){var r=n(60),i=n(16);t.exports=function(t){return r(i(t))}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";e.__esModule=!0;var r=n(15),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t){return function(){var e=t.apply(this,arguments);return new i.default(function(t,n){function r(o,a){try{var s=e[o](a),c=s.value}catch(t){return void n(t)}if(!s.done)return i.default.resolve(c).then(function(t){r("next",t)},function(t){r("throw",t)});t(c)}return r("next")})}}},function(t,e,n){t.exports=n(93)},function(t,e,n){var r=n(10),i=n(1)("toStringTag"),o="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),i))?n:o?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){"use strict";var r=n(31),i=n(12),o=n(73),a=n(4),s=n(13),c=n(7),u=n(63),l=n(19),f=n(69),p=n(1)("iterator"),h=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,v,g,m,y){u(n,e,v);var _,b,x,w=function(t){if(!h&&t in $)return $[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",A="values"==g,C=!1,$=t.prototype,O=$[p]||$["@@iterator"]||g&&$[g],S=O||w(g),j=g?A?w("entries"):S:void 0,E="Array"==e?$.entries||O:O;if(E&&(x=f(E.call(new t)))!==Object.prototype&&x.next&&(l(x,k,!0),r||s(x,p)||a(x,p,d)),A&&O&&"values"!==O.name&&(C=!0,S=function(){return O.call(this)}),r&&!y||!h&&!C&&$[p]||a($,p,S),c[e]=S,c[k]=d,g)if(_={values:A?S:w("values"),keys:m?S:w("keys"),entries:j},y)for(b in _)b in $||o($,b,_[b]);else i(i.P+i.F*(h||C),e,_);return _}},function(t,e){t.exports=!0},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var r=n(2),i=n(6),o=n(18);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(0),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e,n){var r=n(2),i=n(9),o=n(1)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[o])?e:i(n)}},function(t,e,n){var r,i,o,a=n(11),s=n(59),c=n(29),u=n(17),l=n(0),f=l.process,p=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,v=l.Dispatch,g=0,m={},y=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},_=function(t){y.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++g]=function(){s("function"==typeof t?t:Function(t),e)},r(g),g},h=function(t){delete m[t]},"process"==n(10)(f)?r=function(t){f.nextTick(a(y,t,1))}:v&&v.now?r=function(t){v.now(a(y,t,1))}:d?(i=new d,o=i.port2,i.port1.onmessage=_,r=a(o.postMessage,o,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",_,!1)):r="onreadystatechange"in u("script")?function(t){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:p,clear:h}},function(t,e,n){var r=n(21),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},,function(t,e,n){(function(e){!function(e){"use strict";function n(t){this.tokens=[],this.tokens.links={},this.options=t||h.defaults,this.rules=d.normal,this.options.gfm&&(this.options.tables?this.rules=d.tables:this.rules=d.gfm)}function r(t,e){if(this.options=e||h.defaults,this.links=t,this.rules=v.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=v.breaks:this.rules=v.gfm:this.options.pedantic&&(this.rules=v.pedantic)}function i(t){this.options=t||{}}function o(){}function a(t){this.tokens=[],this.token=null,this.options=t||h.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options}function s(t,e){return t.replace(e?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function c(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(t,e){return e=e.toLowerCase(),"colon"===e?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}function u(t,e){return t=t.source,e=e||"",{replace:function(e,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(e,n),this},getRegex:function(){return new RegExp(t,e)}}}function l(t,e){return g[" "+t]||(/^[^:]+:\/*[^\/]*$/.test(t)?g[" "+t]=t+"/":g[" "+t]=t.replace(/[^\/]*$/,"")),t=g[" "+t],"//"===e.slice(0,2)?t.replace(/:[\s\S]*/,":")+e:"/"===e.charAt(0)?t.replace(/(:\/*[^\/]*)[\s\S]*/,"$1")+e:t+e}function f(){}function p(t){for(var e,n,r=1;rAn error occurred:
"+s(t.message+"",!0)+"
";throw t}}var d={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:f,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:f,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ {0,3}\[(label)\]: *\n? *([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n?(?!hr|heading|lheading| {0,3}>|tag)[^\n]+)+)/,text:/^[^\n]+/};d._label=/(?:\\[\[\]]|[^\[\]])+/,d._title=/(?:"(?:\\"|[^"]|"[^"\n]*")*"|'\n?(?:[^'\n]+\n?)*'|\([^()]*\))/,d.def=u(d.def).replace("label",d._label).replace("title",d._title).getRegex(),d.bullet=/(?:[*+-]|\d+\.)/,d.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,d.item=u(d.item,"gm").replace(/bull/g,d.bullet).getRegex(),d.list=u(d.list).replace(/bull/g,d.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+d.def.source+")").getRegex(),d._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b",d.html=u(d.html).replace("comment",//).replace("closed",/<(tag)[\s\S]+?<\/\1>/).replace("closing",/\s]*)*?\/?>/).replace(/tag/g,d._tag).getRegex(),d.paragraph=u(d.paragraph).replace("hr",d.hr).replace("heading",d.heading).replace("lheading",d.lheading).replace("tag","<"+d._tag).getRegex(),d.blockquote=u(d.blockquote).replace("paragraph",d.paragraph).getRegex(),d.normal=p({},d),d.gfm=p({},d.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),d.gfm.paragraph=u(d.paragraph).replace("(?!","(?!"+d.gfm.fences.source.replace("\\1","\\2")+"|"+d.list.source.replace("\\1","\\3")+"|").getRegex(),d.tables=p({},d.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),n.rules=d,n.lex=function(t,e){return new n(e).lex(t)},n.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},n.prototype.token=function(t,e){t=t.replace(/^ +$/gm,"");for(var n,r,i,o,a,s,c,u,l,f;t;)if((i=this.rules.newline.exec(t))&&(t=t.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(t))t=t.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:i.replace(/\n+$/,"")});else if(i=this.rules.fences.exec(t))t=t.substring(i[0].length),this.tokens.push({type:"code",lang:i[2],text:i[3]||""});else if(i=this.rules.heading.exec(t))t=t.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(e&&(i=this.rules.nptable.exec(t))){for(t=t.substring(i[0].length),s={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),this.token(i,e),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(t)){for(t=t.substring(i[0].length),o=i[2],this.tokens.push({type:"list_start",ordered:o.length>1}),i=i[0].match(this.rules.item),n=!1,f=i.length,u=0;u1&&a.length>1||(t=i.slice(u+1).join("\n")+t,u=f-1)),r=n||/\n\n(?!\s*$)/.test(s),u!==f-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),this.tokens.push({type:r?"loose_item_start":"list_item_start"}),this.token(s,!1),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(t))t=t.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===i[1]||"script"===i[1]||"style"===i[1]),text:i[0]});else if(e&&(i=this.rules.def.exec(t)))t=t.substring(i[0].length),i[3]&&(i[3]=i[3].substring(1,i[3].length-1)),l=i[1].toLowerCase(),this.tokens.links[l]||(this.tokens.links[l]={href:i[2],title:i[3]});else if(e&&(i=this.rules.table.exec(t))){for(t=t.substring(i[0].length),s={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:/^|^<\/?[a-zA-Z0-9\-]+(?:"[^"]*"|'[^']*'|\s[^<'">\/\s]*)*?\/?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^_([^\s_](?:[^_]|__)+?[^\s_])_\b|^\*((?:\*\*|[^*])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:f,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,v.link=u(v.link).replace("inside",v._inside).replace("href",v._href).getRegex(),v.reflink=u(v.reflink).replace("inside",v._inside).getRegex(),v.normal=p({},v),v.pedantic=p({},v.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),v.gfm=p({},v.normal,{escape:u(v.escape).replace("])","~|])").getRegex(),url:u(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("email",v._email).getRegex(),_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:u(v.text).replace("]|","~]|").replace("|","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|").getRegex()}),v.breaks=p({},v.gfm,{br:u(v.br).replace("{2,}","*").getRegex(),text:u(v.gfm.text).replace("{2,}","*").getRegex()}),r.rules=v,r.output=function(t,e,n){return new r(e,n).output(t)},r.prototype.output=function(t){for(var e,n,r,i,o="";t;)if(i=this.rules.escape.exec(t))t=t.substring(i[0].length),o+=i[1];else if(i=this.rules.autolink.exec(t))t=t.substring(i[0].length),"@"===i[2]?(n=s(this.mangle(i[1])),r="mailto:"+n):(n=s(i[1]),r=n),o+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(t))){if(i=this.rules.tag.exec(t))!this.inLink&&/^/i.test(i[0])&&(this.inLink=!1),t=t.substring(i[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):s(i[0]):i[0];else if(i=this.rules.link.exec(t))t=t.substring(i[0].length),this.inLink=!0,o+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(t))||(i=this.rules.nolink.exec(t))){if(t=t.substring(i[0].length),e=(i[2]||i[1]).replace(/\s+/g," "),!(e=this.links[e.toLowerCase()])||!e.href){o+=i[0].charAt(0),t=i[0].substring(1)+t;continue}this.inLink=!0,o+=this.outputLink(i,e),this.inLink=!1}else if(i=this.rules.strong.exec(t))t=t.substring(i[0].length),o+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(t))t=t.substring(i[0].length),o+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(t))t=t.substring(i[0].length),o+=this.renderer.codespan(s(i[2].trim(),!0));else if(i=this.rules.br.exec(t))t=t.substring(i[0].length),o+=this.renderer.br();else if(i=this.rules.del.exec(t))t=t.substring(i[0].length),o+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(t))t=t.substring(i[0].length),o+=this.renderer.text(s(this.smartypants(i[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else i[0]=this.rules._backpedal.exec(i[0])[0],t=t.substring(i[0].length),"@"===i[2]?(n=s(i[0]),r="mailto:"+n):(n=s(i[0]),r="www."===i[1]?"http://"+n:n),o+=this.renderer.link(r,null,n);return o},r.prototype.outputLink=function(t,e){var n=s(e.href),r=e.title?s(e.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,r,this.output(t[1])):this.renderer.image(n,r,s(t[1]))},r.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},r.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var e,n="",r=t.length,i=0;i.5&&(e="x"+e.toString(16)),n+=""+e+";";return n},i.prototype.code=function(t,e,n){if(this.options.highlight){var r=this.options.highlight(t,e);null!=r&&r!==t&&(n=!0,t=r)}return e?''+(n?t:s(t,!0))+"\n
\n":""+(n?t:s(t,!0))+"\n
"},i.prototype.blockquote=function(t){return"\n"+t+"
\n"},i.prototype.html=function(t){return t},i.prototype.heading=function(t,e,n){return"\n"},i.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},i.prototype.list=function(t,e){var n=e?"ol":"ul";return"<"+n+">\n"+t+""+n+">\n"},i.prototype.listitem=function(t){return""+t+"\n"},i.prototype.paragraph=function(t){return""+t+"
\n"},i.prototype.table=function(t,e){return"\n"},i.prototype.tablerow=function(t){return"\n"+t+"
\n"},i.prototype.tablecell=function(t,e){var n=e.header?"th":"td";return(e.align?"<"+n+' style="text-align:'+e.align+'">':"<"+n+">")+t+""+n+">\n"},i.prototype.strong=function(t){return""+t+""},i.prototype.em=function(t){return""+t+""},i.prototype.codespan=function(t){return""+t+""},i.prototype.br=function(){return this.options.xhtml?"
":"
"},i.prototype.del=function(t){return""+t+""},i.prototype.link=function(t,e,n){if(this.options.sanitize){try{var r=decodeURIComponent(c(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return n}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return n}this.options.baseUrl&&!m.test(t)&&(t=l(this.options.baseUrl,t));var i='"+n+""},i.prototype.image=function(t,e,n){this.options.baseUrl&&!m.test(t)&&(t=l(this.options.baseUrl,t));var r='
":">"},i.prototype.text=function(t){return t},o.prototype.strong=o.prototype.em=o.prototype.codespan=o.prototype.del=o.prototype.text=function(t){return t},o.prototype.link=o.prototype.image=function(t,e,n){return""+n},o.prototype.br=function(){return""},a.parse=function(t,e){return new a(e).parse(t)},a.prototype.parse=function(t){this.inline=new r(t.links,this.options),this.inlineText=new r(t.links,p({},this.options,{renderer:new o})),this.tokens=t.reverse();for(var e="";this.next();)e+=this.tok();return e},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var t=this.token.text;"text"===this.peek().type;)t+="\n"+this.next().text;return this.inline.output(t)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)));case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var t,e,n,r,i="",o="";for(n="",t=0;t=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function p(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}function v(t,e){return rr.call(t,e)}function g(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function m(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function y(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function _(t,e){for(var n in e)t[n]=e[n];return t}function b(t){for(var e={},n=0;nri&&Xr[n].id>t.id;)n--;Xr.splice(n+1,0,t)}else Xr.push(t);ei||(ei=!0,Nr(jt))}}function It(t){ai.clear(),Nt(t,ai)}function Nt(t,e){var n,r,i=Array.isArray(t);if((i||s(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(i)for(n=t.length;n--;)Nt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)Nt(t[r[n]],e)}}function Mt(t,e,n){si.get=function(){return this[e][n]},si.set=function(t){this[e][n]=t},Object.defineProperty(t,n,si)}function Rt(t){t._watchers=[];var e=t.$options;e.props&&Dt(t,e.props),e.methods&&qt(t,e.methods),e.data?Ft(t):I(t._data={},!0),e.computed&&Ut(t,e.computed),e.watch&&e.watch!==Or&&Ht(t,e.watch)}function Dt(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[],o=!t.$parent;Br.shouldConvert=o;for(var a in e)!function(o){i.push(o);var a=Z(o,e,n,t);N(r,o,a),o in t||Mt(t,"_props",o)}(a);Br.shouldConvert=!0}function Ft(t){var e=t.$options.data;e=t._data="function"==typeof e?zt(e,t):e||{},c(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);i--;){var o=n[i];r&&v(r,o)||C(o)||Mt(t,"_data",o)}I(e,!0)}function zt(t,e){try{return t.call(e)}catch(t){return S(t,e,"data()"),{}}}function Ut(t,e){var n=t._computedWatchers=Object.create(null);for(var r in e){var i=e[r],o="function"==typeof i?i:i.get;n[r]=new oi(t,o||x,x,ci),r in t||Bt(t,r,i)}}function Bt(t,e,n){"function"==typeof n?(si.get=Wt(e),si.set=x):(si.get=n.get?!1!==n.cache?Wt(e):n.get:x,si.set=n.set?n.set:x),Object.defineProperty(t,e,si)}function Wt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),Rr.target&&e.depend(),e.value}}function qt(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?x:m(e[n],t)}function Ht(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function xe(t){this._init(t)}function we(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=y(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function ke(t){t.mixin=function(t){return this.options=V(this.options,t),this}}function Ae(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=V(n.options,t),a.super=n,a.options.props&&Ce(a),a.options.computed&&$e(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,pr.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=_({},a.options),i[r]=a,a}}function Ce(t){var e=t.options.props;for(var n in e)Mt(t.prototype,"_props",n)}function $e(t){var e=t.options.computed;for(var n in e)Bt(t.prototype,n,e[n])}function Oe(t){pr.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&c(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function Se(t){return t&&(t.Ctor.options.name||t.tag)}function je(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!u(t)&&t.test(e)}function Ee(t,e,n){for(var r in t){var i=t[r];if(i){var o=Se(i.componentOptions);o&&!n(o)&&(i!==e&&Le(i),t[r]=null)}}}function Le(t){t&&t.componentInstance.$destroy()}function Te(t){for(var e=t.data,n=t,i=t;r(i.componentInstance);)i=i.componentInstance._vnode,i.data&&(e=Pe(i.data,e));for(;r(n=n.parent);)n.data&&(e=Pe(e,n.data));return Ie(e.staticClass,e.class)}function Pe(t,e){return{staticClass:Ne(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Ie(t,e){return r(t)||r(e)?Ne(t,Me(e)):""}function Ne(t,e){return t?e?t+" "+e:t:e||""}function Me(t){return Array.isArray(t)?Re(t):s(t)?De(t):"string"==typeof t?t:""}function Re(t){for(var e,n="",i=0,o=t.length;i-1?Ti[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Ti[t]=/HTMLUnknownElement/.test(e.toString())}function Ue(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Be(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function We(t,e){return document.createElementNS(Si[t],e)}function qe(t){return document.createTextNode(t)}function He(t){return document.createComment(t)}function Ve(t,e,n){t.insertBefore(e,n)}function Ge(t,e){t.removeChild(e)}function Ze(t,e){t.appendChild(e)}function Ke(t){return t.parentNode}function Je(t){return t.nextSibling}function Ye(t){return t.tagName}function Xe(t,e){t.textContent=e}function Qe(t,e,n){t.setAttribute(e,n)}function tn(t,e){var n=t.data.ref;if(n){var r=t.context,i=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?d(o[n],i):o[n]===i&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}function en(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&r(t.data)===r(e.data)&&nn(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&n(e.asyncFactory.error))}function nn(t,e){if("input"!==t.tag)return!0;var n;return(r(n=t.data)&&r(n=n.attrs)&&n.type)===(r(n=e.data)&&r(n=n.attrs)&&n.type)}function rn(t,e,n){var i,o,a={};for(i=e;i<=n;++i)o=t[i].key,r(o)&&(a[o]=i);return a}function on(t,e){(t.data.directives||e.data.directives)&&an(t,e)}function an(t,e){var n,r,i,o=t===Ni,a=e===Ni,s=sn(t.data.directives,t.context),c=sn(e.data.directives,e.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,un(i,"update",e,t),i.def&&i.def.componentUpdated&&l.push(i)):(un(i,"bind",e,t),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function $n(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function On(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&_(e,Qi(t.name||"v")),_(e,t),e}return"string"==typeof t?Qi(t):void 0}}function Sn(t){so(function(){so(t)})}function jn(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Cn(t,e))}function En(t,e){t._transitionClasses&&d(t._transitionClasses,e),$n(t,e)}function Ln(t,e,n){var r=Tn(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===eo?io:ao,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=eo,l=a,f=o.length):e===no?u>0&&(n=no,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?eo:no:null,f=n?n===eo?o.length:c.length:0),{type:n,timeout:l,propCount:f,hasTransform:n===eo&&co.test(r[ro+"Property"])}}function Pn(t,e){for(;t.length1}function Fn(t,e){!0!==e.data.show&&Nn(e)}function zn(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=t.options.length;s-1,a.selected!==o&&(a.selected=o);else if(w(Un(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function Un(t){return"_value"in t?t._value:t.value}function Bn(t){t.target.composing=!0}function Wn(t){t.target.composing&&(t.target.composing=!1,qn(t.target,"input"))}function qn(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Hn(t){return!t.componentInstance||t.data&&t.data.transition?t:Hn(t.componentInstance._vnode)}function Vn(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Vn(ht(e.children)):t}function Gn(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[or(o)]=i[o];return e}function Zn(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Kn(t){for(;t=t.parent;)if(t.data.transition)return!0}function Jn(t,e){return e.key===t.key&&e.tag===t.tag}function Yn(t){return t.isComment&&t.asyncFactory}function Xn(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Qn(t){t.data.newPos=t.elm.getBoundingClientRect()}function tr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}var er=Object.prototype.toString,nr=(h("slot,component",!0),h("key,ref,slot,is")),rr=Object.prototype.hasOwnProperty,ir=/-(\w)/g,or=g(function(t){return t.replace(ir,function(t,e){return e?e.toUpperCase():""})}),ar=g(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),sr=/([^-])([A-Z])/g,cr=g(function(t){return t.replace(sr,"$1-$2").replace(sr,"$1-$2").toLowerCase()}),ur=function(t,e,n){return!1},lr=function(t){return t},fr="data-server-rendered",pr=["component","directive","filter"],hr=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],dr={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:ur,isReservedAttr:ur,isUnknownElement:ur,getTagNamespace:x,parsePlatformTagName:lr,mustUseProp:ur,_lifecycleHooks:hr},vr=Object.freeze({}),gr=/[^\w.$]/,mr=x,yr="__proto__"in{},_r="undefined"!=typeof window,br=_r&&window.navigator.userAgent.toLowerCase(),xr=br&&/msie|trident/.test(br),wr=br&&br.indexOf("msie 9.0")>0,kr=br&&br.indexOf("edge/")>0,Ar=br&&br.indexOf("android")>0,Cr=br&&/iphone|ipad|ipod|ios/.test(br),$r=br&&/chrome\/\d+/.test(br)&&!kr,Or={}.watch,Sr=!1;if(_r)try{var jr={};Object.defineProperty(jr,"passive",{get:function(){Sr=!0}}),window.addEventListener("test-passive",null,jr)}catch(t){}var Er,Lr,Tr=function(){return void 0===Er&&(Er=!_r&&void 0!==t&&"server"===t.process.env.VUE_ENV),Er},Pr=_r&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Ir="undefined"!=typeof Symbol&&j(Symbol)&&"undefined"!=typeof Reflect&&j(Reflect.ownKeys),Nr=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e1?y(n):n;for(var r=y(arguments,1),i=0,o=n.length;i1&&(e[n[0].trim()]=n[1].trim())}}),e}),Gi=/^--/,Zi=/\s*!important$/,Ki=function(t,e,n){if(Gi.test(e))t.style.setProperty(e,n);else if(Zi.test(n))t.style.setProperty(e,n.replace(Zi,""),"important");else{var r=Yi(e);if(Array.isArray(n))for(var i=0,o=n.length;id?(f=n(i[m+1])?null:i[m+1].elm,y(t,f,i,h,m,o)):h>m&&b(t,e,p,d)}function k(t,e,o,a){if(t!==e){var s=e.elm=t.elm;if(i(t.isAsyncPlaceholder))return void(r(e.asyncFactory.resolved)?C(t.elm,e,o):e.isAsyncPlaceholder=!0);if(i(e.isStatic)&&i(t.isStatic)&&e.key===t.key&&(i(e.isCloned)||i(e.isOnce)))return void(e.componentInstance=t.componentInstance);var c,u=e.data;r(u)&&r(c=u.hook)&&r(c=c.prepatch)&&c(t,e);var l=t.children,f=e.children;if(r(u)&&v(e)){for(c=0;cl;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(11),i=n(62),o=n(61),a=n(2),s=n(38),c=n(79),u={},l={},e=t.exports=function(t,e,n,f,p){var h,d,v,g,m=p?function(){return t}:c(t),y=r(n,f,e?2:1),_=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(o(m)){for(h=s(t.length);h>_;_++)if((g=e?y(a(d=t[_])[0],d[1]):y(t[_]))===u||g===l)return g}else for(v=m.call(t);!(d=v.next()).done;)if((g=i(v,y,d.value,e))===u||g===l)return g};e.BREAK=u,e.RETURN=l},function(t,e,n){t.exports=!n(5)&&!n(28)(function(){return 7!=Object.defineProperty(n(17)("div"),"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var r=n(10);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(7),i=n(1)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){var r=n(2);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){"use strict";var r=n(67),i=n(34),o=n(19),a={};n(4)(a,n(1)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(1)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:n=!0}},o[r]=function(){return a},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(0),i=n(37).set,o=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,c="process"==n(10)(a);t.exports=function(){var t,e,n,u=function(){var r,i;for(c&&(r=a.domain)&&r.exit();t;){i=t.fn,t=t.next;try{i()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(c)n=function(){a.nextTick(u)};else if(o){var l=!0,f=document.createTextNode("");new o(u).observe(f,{characterData:!0}),n=function(){f.data=l=!l}}else if(s&&s.resolve){var p=s.resolve();n=function(){p.then(u)}}else n=function(){i.call(r,u)};return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},function(t,e,n){var r=n(2),i=n(68),o=n(27),a=n(20)("IE_PROTO"),s=function(){},c=function(){var t,e=n(17)("iframe"),r=o.length;for(e.style.display="none",n(29).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("
+
+
diff --git a/src/Mobile.vue b/src/Mobile.vue
new file mode 100644
index 0000000..ca8ae42
--- /dev/null
+++ b/src/Mobile.vue
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..f3d2503
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/reset.css b/src/assets/reset.css
new file mode 100644
index 0000000..3714efc
--- /dev/null
+++ b/src/assets/reset.css
@@ -0,0 +1,4 @@
+*{margin: 0; padding: 0;}
+*{box-sizing: border-box;}
+*::before{box-sizing: border-box;}
+*::after{box-sizing: border-box;}
diff --git a/src/components/ResumeEditor.vue b/src/components/ResumeEditor.vue
new file mode 100644
index 0000000..2325676
--- /dev/null
+++ b/src/components/ResumeEditor.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
diff --git a/src/components/StyleEditor.vue b/src/components/StyleEditor.vue
new file mode 100644
index 0000000..d5b48e6
--- /dev/null
+++ b/src/components/StyleEditor.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
diff --git a/src/components/ThankEditor.vue b/src/components/ThankEditor.vue
new file mode 100644
index 0000000..7c5046c
--- /dev/null
+++ b/src/components/ThankEditor.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..cd9b719
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,7 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import Mobile from './Mobile.vue'
+
+const width = document.documentElement.clientWidth
+const app = createApp(width > 500 ? App : Mobile)
+app.mount('#app')
diff --git a/static/.gitkeep b/static/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..7aca413
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,31 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import { resolve } from 'path'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, 'src'),
+ 'src': resolve(__dirname, 'src'),
+ 'assets': resolve(__dirname, 'src/assets'),
+ 'components': resolve(__dirname, 'src/components')
+ }
+ },
+ server: {
+ port: 8080,
+ open: true
+ },
+ build: {
+ outDir: 'dist',
+ assetsDir: 'static',
+ rollupOptions: {
+ output: {
+ chunkFileNames: 'static/js/[name]-[hash].js',
+ entryFileNames: 'static/js/[name]-[hash].js',
+ assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
+ }
+ }
+ }
+})
\ No newline at end of file