vite.config.mjs.timestamp-1744168519478-aa67734a05e2d.mjs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. // vite.config.mjs
  2. import { defineConfig } from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/vite/dist/node/index.js";
  3. import vue from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/@vitejs/plugin-vue/dist/index.mjs";
  4. import { visualizer } from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
  5. import viteCompression from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/vite-plugin-compression/dist/index.mjs";
  6. import viteImagemin from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/vite-plugin-imagemin/dist/index.mjs";
  7. import AutoImport from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/unplugin-auto-import/dist/vite.js";
  8. import Components from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/unplugin-vue-components/dist/vite.js";
  9. import { ArcoResolver } from "file:///D:/hyWorkSpace/pro/%E5%A4%A7%E6%A8%A1%E5%9E%8B/smartai2dian0/node_modules/unplugin-vue-components/dist/resolvers.js";
  10. // scripts/vite-conf.js
  11. var config_compression = {
  12. verbose: true,
  13. // 是否在控制台中输出压缩结果
  14. disable: false,
  15. threshold: 10240,
  16. // 如果体积大于阈值,将被压缩,单位为b,体积过小时请不要压缩,以免适得其反
  17. algorithm: "gzip",
  18. // 压缩算法,可选['gzip',' brotliccompress ','deflate ','deflateRaw']
  19. ext: ".gz",
  20. deleteOriginFile: false
  21. // 源文件压缩后是否删除
  22. };
  23. var config_imagemin = {
  24. gifsicle: {
  25. optimizationLevel: 7,
  26. interlaced: false
  27. },
  28. optipng: {
  29. optimizationLevel: 7
  30. },
  31. mozjpeg: {
  32. quality: 20
  33. },
  34. pngquant: {
  35. quality: [0.8, 0.9],
  36. speed: 4
  37. },
  38. svgo: {
  39. plugins: [
  40. {
  41. name: "removeViewBox"
  42. },
  43. {
  44. name: "removeEmptyAttrs",
  45. active: false
  46. }
  47. ]
  48. }
  49. };
  50. // vite.config.mjs
  51. var vite_config_default = defineConfig(({ mode }) => {
  52. return {
  53. /**
  54. * 项目根目录
  55. * @see https://cn.vite.dev/config/shared-options.html#root
  56. */
  57. root: "./src",
  58. /**
  59. * 静态资源目录,相对于 src/index.html 文件
  60. * @see https://cn.vite.dev/config/shared-options.html#publicdir
  61. */
  62. publicDir: "../public",
  63. server: {
  64. port: 5173,
  65. host: "0.0.0.0",
  66. // IP配置,支持从IP启动
  67. proxy: {
  68. "/api/": {
  69. // target: 'http://smartai.com:8401',
  70. // target: 'http://192.168.20.119:9301',
  71. target: "http://192.168.20.116:28004",
  72. // target: 'http://smartai.com:8164',
  73. changeOrigin: true,
  74. secure: false,
  75. ws: true,
  76. cors: true,
  77. rewrite: (path) => path.replace(/^\/proxy_url/, "")
  78. },
  79. "/dify": {
  80. // target: 'http://192.168.20.119:28003/',
  81. target: "http://47.96.40.148:8163",
  82. changeOrigin: true,
  83. secure: false,
  84. ws: true,
  85. rewrite: (path) => path.replace(/^\/dify/, "")
  86. },
  87. "/rgflow": {
  88. // target: 'http://192.168.20.119:11080',
  89. // target: 'http://smartai.com:8294/', //119 rag
  90. // target: 'http://192.168.20.116:28002/',
  91. target: "http://47.96.40.148:8162/",
  92. changeOrigin: true,
  93. secure: false,
  94. ws: true,
  95. rewrite: (path) => path.replace(/^\/rgflow/, "")
  96. }
  97. }
  98. },
  99. build: {
  100. /**
  101. * 构建输出目录,相对于 src/index.html 文件
  102. * @see https://cn.vite.dev/config/build-options.html#build-outdir
  103. */
  104. outDir: "../dist",
  105. emptyOutDir: true,
  106. rollupOptions: {
  107. output: {
  108. manualChunks: {
  109. "vue-vendor": ["vue", "vue-router", "pinia"]
  110. }
  111. }
  112. },
  113. terserOptions: {
  114. output: {
  115. // 去掉注释内容
  116. comments: true
  117. }
  118. }
  119. },
  120. plugins: [
  121. vue(),
  122. // /**
  123. // * @see https://devtools.vuejs.org/guide/vite-plugin
  124. // */
  125. // vueDevTools({
  126. // launchEditor: 'code'
  127. // }),
  128. visualizer({ open: false }),
  129. viteCompression(config_compression),
  130. viteImagemin(config_imagemin),
  131. /**
  132. * 按需加载
  133. * @see https://arco.design/vue/docs/start#%E6%8C%89%E9%9C%80%E5%8A%A0%E8%BD%BD%EF%BC%88%E6%A8%A1%E6%9D%BF%EF%BC%89
  134. */
  135. AutoImport({
  136. resolvers: [ArcoResolver()]
  137. }),
  138. Components({
  139. resolvers: [
  140. ArcoResolver({
  141. sideEffect: true
  142. })
  143. ]
  144. })
  145. ]
  146. };
  147. });
  148. export {
  149. vite_config_default as default
  150. };
  151. //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubWpzIiwgInNjcmlwdHMvdml0ZS1jb25mLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcaHlXb3JrU3BhY2VcXFxccHJvXFxcXFx1NTkyN1x1NkEyMVx1NTc4QlxcXFxzbWFydGFpMmRpYW4wXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxoeVdvcmtTcGFjZVxcXFxwcm9cXFxcXHU1OTI3XHU2QTIxXHU1NzhCXFxcXHNtYXJ0YWkyZGlhbjBcXFxcdml0ZS5jb25maWcubWpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9oeVdvcmtTcGFjZS9wcm8vJUU1JUE0JUE3JUU2JUE4JUExJUU1JTlFJThCL3NtYXJ0YWkyZGlhbjAvdml0ZS5jb25maWcubWpzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5cbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJztcbi8vIGltcG9ydCB2dWVEZXZUb29scyBmcm9tICd2aXRlLXBsdWdpbi12dWUtZGV2dG9vbHMnO1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcic7XG5pbXBvcnQgdml0ZUNvbXByZXNzaW9uIGZyb20gJ3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uJztcbmltcG9ydCB2aXRlSW1hZ2VtaW4gZnJvbSAndml0ZS1wbHVnaW4taW1hZ2VtaW4nO1xuXG4vKipcbiAqIFx1NjMwOVx1OTcwMFx1NTJBMFx1OEY3RFxuICogQHNlZSBodHRwczovL2FyY28uZGVzaWduL3Z1ZS9kb2NzL3N0YXJ0IyVFNiU4QyU4OSVFOSU5QyU4MCVFNSU4QSVBMCVFOCVCRCVCRCVFRiVCQyU4OCVFNiVBOCVBMSVFNiU5RCVCRiVFRiVCQyU4OVxuICovXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJztcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnO1xuaW1wb3J0IHsgQXJjb1Jlc29sdmVyIH0gZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvcmVzb2x2ZXJzJztcblxuaW1wb3J0IHsgY29uZmlnX2NvbXByZXNzaW9uLCBjb25maWdfaW1hZ2VtaW4gfSBmcm9tICcuL3NjcmlwdHMvdml0ZS1jb25mJztcblxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoeyBtb2RlIH0pID0+IHtcbiAgcmV0dXJuIHtcbiAgICAvKipcbiAgICAgKiBcdTk4NzlcdTc2RUVcdTY4MzlcdTc2RUVcdTVGNTVcbiAgICAgKiBAc2VlIGh0dHBzOi8vY24udml0ZS5kZXYvY29uZmlnL3NoYXJlZC1vcHRpb25zLmh0bWwjcm9vdFxuICAgICAqL1xuICAgIHJvb3Q6ICcuL3NyYycsXG4gICAgLyoqXG4gICAgICogXHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXHU3NkVFXHU1RjU1XHVGRjBDXHU3NkY4XHU1QkY5XHU0RThFIHNyYy9pbmRleC5odG1sIFx1NjU4N1x1NEVGNlxuICAgICAqIEBzZWUgaHR0cHM6Ly9jbi52aXRlLmRldi9jb25maWcvc2hhcmVkLW9wdGlvbnMuaHRtbCNwdWJsaWNkaXJcbiAgICAgKi9cbiAgICBwdWJsaWNEaXI6ICcuLi9wdWJsaWMnLFxuICAgIHNlcnZlcjoge1xuICAgICAgcG9ydDogNTE3MyxcbiAgICAgIGhvc3Q6ICcwLjAuMC4wJywgLy8gSVBcdTkxNERcdTdGNkVcdUZGMENcdTY1MkZcdTYzMDFcdTRFQ0VJUFx1NTQyRlx1NTJBOFxuICAgICAgcHJveHk6IHtcbiAgICAgICAgJy9hcGkvJzoge1xuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly9zbWFydGFpLmNvbTo4NDAxJyxcblxuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly8xOTIuMTY4LjIwLjExOTo5MzAxJyxcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTkyLjE2OC4yMC4xMTY6MjgwMDQnLFxuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly9zbWFydGFpLmNvbTo4MTY0JyxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgc2VjdXJlOiBmYWxzZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICBjb3JzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9wcm94eV91cmwvLCAnJylcbiAgICAgICAgfSxcblxuICAgICAgICAnL2RpZnknOiB7XG4gICAgICAgICAgLy8gdGFyZ2V0OiAnaHR0cDovLzE5Mi4xNjguMjAuMTE5OjI4MDAzLycsXG4gICAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzQ3Ljk2LjQwLjE0ODo4MTYzJyxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgc2VjdXJlOiBmYWxzZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvZGlmeS8sICcnKVxuICAgICAgICB9LFxuICAgICAgICAnL3JnZmxvdyc6IHtcbiAgICAgICAgICAvLyB0YXJnZXQ6ICdodHRwOi8vMTkyLjE2OC4yMC4xMTk6MTEwODAnLFxuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly9zbWFydGFpLmNvbTo4Mjk0LycsIC8vMTE5IHJhZ1xuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly8xOTIuMTY4LjIwLjExNjoyODAwMi8nLFxuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly80Ny45Ni40MC4xNDg6ODE2Mi8nLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICBzZWN1cmU6IGZhbHNlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9yZ2Zsb3cvLCAnJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIC8qKlxuICAgICAgICogXHU2Nzg0XHU1RUZBXHU4RjkzXHU1MUZBXHU3NkVFXHU1RjU1XHVGRjBDXHU3NkY4XHU1QkY5XHU0RThFIHNyYy9pbmRleC5odG1sIFx1NjU4N1x1NEVGNlxuICAgICAgICogQHNlZSBodHRwczovL2NuLnZpdGUuZGV2L2NvbmZpZy9idWlsZC1vcHRpb25zLmh0bWwjYnVpbGQtb3V0ZGlyXG4gICAgICAgKi9cbiAgICAgIG91dERpcjogJy4uL2Rpc3QnLFxuXG4gICAgICBlbXB0eU91dERpcjogdHJ1ZSxcbiAgICAgIHJvbGx1cE9wdGlvbnM6IHtcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgbWFudWFsQ2h1bmtzOiB7XG4gICAgICAgICAgICAndnVlLXZlbmRvcic6IFsndnVlJywgJ3Z1ZS1yb3V0ZXInLCAncGluaWEnXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlcnNlck9wdGlvbnM6IHtcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgLy8gXHU1M0JCXHU2Mzg5XHU2Q0U4XHU5MUNBXHU1MTg1XHU1QkI5XG4gICAgICAgICAgY29tbWVudHM6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgcGx1Z2luczogW1xuICAgICAgdnVlKCksXG4gICAgICAvLyAvKipcbiAgICAgIC8vICAqIEBzZWUgaHR0cHM6Ly9kZXZ0b29scy52dWVqcy5vcmcvZ3VpZGUvdml0ZS1wbHVnaW5cbiAgICAgIC8vICAqL1xuICAgICAgLy8gdnVlRGV2VG9vbHMoe1xuICAgICAgLy8gICBsYXVuY2hFZGl0b3I6ICdjb2RlJ1xuICAgICAgLy8gfSksXG4gICAgICB2aXN1YWxpemVyKHsgb3BlbjogZmFsc2UgfSksXG4gICAgICB2aXRlQ29tcHJlc3Npb24oY29uZmlnX2NvbXByZXNzaW9uKSxcbiAgICAgIHZpdGVJbWFnZW1pbihjb25maWdfaW1hZ2VtaW4pLFxuXG4gICAgICAvKipcbiAgICAgICAqIFx1NjMwOVx1OTcwMFx1NTJBMFx1OEY3RFxuICAgICAgICogQHNlZSBodHRwczovL2FyY28uZGVzaWduL3Z1ZS9kb2NzL3N0YXJ0IyVFNiU4QyU4OSVFOSU5QyU4MCVFNSU4QSVBMCVFOCVCRCVCRCVFRiVCQyU4OCVFNiVBOCVBMSVFNiU5RCVCRiVFRiVCQyU4OVxuICAgICAgICovXG4gICAgICBBdXRvSW1wb3J0KHtcbiAgICAgICAgcmVzb2x2ZXJzOiBbQXJjb1Jlc29sdmVyKCldXG4gICAgICB9KSxcbiAgICAgIENvbXBvbmVudHMoe1xuICAgICAgICByZXNvbHZlcnM6IFtcbiAgICAgICAgICBBcmNvUmVzb2x2ZXIoe1xuICAgICAgICAgICAgc2lkZUVmZmVjdDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgXVxuICB9O1xufSk7XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGh5V29ya1NwYWNlXFxcXHByb1xcXFxcdTU5MjdcdTZBMjFcdTU3OEJcXFxcc21hcnRhaTJkaWFuMFxcXFxzY3JpcHRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxoeVdvcmtTcGFjZVxcXFxwcm9cXFxcXHU1OTI3XHU2QTIxXHU1NzhCXFxcXHNtYXJ0YWkyZGlhbjBcXFxcc2NyaXB0c1xcXFx2aXRlLWNvbmYuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L2h5V29ya1NwYWNlL3Byby8lRTUlQTQlQTclRTYlQTglQTElRTUlOUUlOEIvc21hcnRhaTJkaWFuMC9zY3JpcHRzL3ZpdGUtY29uZi5qc1wiOy8qKlxyXG4gKiBcdThENDRcdTZFOTBcdTUzOEJcdTdGMjlcdTkxNERcdTdGNkVcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb25maWdfY29tcHJlc3Npb24gPSB7XHJcbiAgdmVyYm9zZTogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU1NzI4XHU2M0E3XHU1MjM2XHU1M0YwXHU0RTJEXHU4RjkzXHU1MUZBXHU1MzhCXHU3RjI5XHU3RUQzXHU2NzlDXHJcbiAgZGlzYWJsZTogZmFsc2UsXHJcbiAgdGhyZXNob2xkOiAxMDI0MCwgLy8gXHU1OTgyXHU2NzlDXHU0RjUzXHU3OUVGXHU1OTI3XHU0RThFXHU5NjA4XHU1MDNDXHVGRjBDXHU1QzA2XHU4OEFCXHU1MzhCXHU3RjI5XHVGRjBDXHU1MzU1XHU0RjREXHU0RTNBYlx1RkYwQ1x1NEY1M1x1NzlFRlx1OEZDN1x1NUMwRlx1NjVGNlx1OEJGN1x1NEUwRFx1ODk4MVx1NTM4Qlx1N0YyOVx1RkYwQ1x1NEVFNVx1NTE0RFx1OTAwMlx1NUY5N1x1NTE3Nlx1NTNDRFxyXG4gIGFsZ29yaXRobTogJ2d6aXAnLCAvLyBcdTUzOEJcdTdGMjlcdTdCOTdcdTZDRDVcdUZGMENcdTUzRUZcdTkwMDlbJ2d6aXAnXHVGRjBDJyBicm90bGljY29tcHJlc3MgJ1x1RkYwQydkZWZsYXRlICdcdUZGMEMnZGVmbGF0ZVJhdyddXHJcbiAgZXh0OiAnLmd6JyxcclxuICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZSAvLyBcdTZFOTBcdTY1ODdcdTRFRjZcdTUzOEJcdTdGMjlcdTU0MEVcdTY2MkZcdTU0MjZcdTUyMjBcdTk2NjRcclxufTtcclxuXHJcbi8qKlxyXG4gKiBcdTU2RkVcdTcyNDdcdTUzOEJcdTdGMjlcdTkxNERcdTdGNkVcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb25maWdfaW1hZ2VtaW4gPSB7XHJcbiAgZ2lmc2ljbGU6IHtcclxuICAgIG9wdGltaXphdGlvbkxldmVsOiA3LFxyXG4gICAgaW50ZXJsYWNlZDogZmFsc2VcclxuICB9LFxyXG4gIG9wdGlwbmc6IHtcclxuICAgIG9wdGltaXphdGlvbkxldmVsOiA3XHJcbiAgfSxcclxuICBtb3pqcGVnOiB7XHJcbiAgICBxdWFsaXR5OiAyMFxyXG4gIH0sXHJcbiAgcG5ncXVhbnQ6IHtcclxuICAgIHF1YWxpdHk6IFswLjgsIDAuOV0sXHJcbiAgICBzcGVlZDogNFxyXG4gIH0sXHJcbiAgc3Znbzoge1xyXG4gICAgcGx1Z2luczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3JlbW92ZVZpZXdCb3gnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncmVtb3ZlRW1wdHlBdHRycycsXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG59O1xyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQWtVLFNBQVMsb0JBQW9CO0FBRS9WLE9BQU8sU0FBUztBQUVoQixTQUFTLGtCQUFrQjtBQUMzQixPQUFPLHFCQUFxQjtBQUM1QixPQUFPLGtCQUFrQjtBQU16QixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjs7O0FDWHRCLElBQU0scUJBQXFCO0FBQUEsRUFDaEMsU0FBUztBQUFBO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxXQUFXO0FBQUE7QUFBQSxFQUNYLFdBQVc7QUFBQTtBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsa0JBQWtCO0FBQUE7QUFDcEI7QUFLTyxJQUFNLGtCQUFrQjtBQUFBLEVBQzdCLFVBQVU7QUFBQSxJQUNSLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxtQkFBbUI7QUFBQSxFQUNyQjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFNBQVMsQ0FBQyxLQUFLLEdBQUc7QUFBQSxJQUNsQixPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osU0FBUztBQUFBLE1BQ1A7QUFBQSxRQUNFLE1BQU07QUFBQSxNQUNSO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOzs7QUR0QkEsSUFBTyxzQkFBUSxhQUFhLENBQUMsRUFBRSxLQUFLLE1BQU07QUFDeEMsU0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLTCxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUtOLFdBQVc7QUFBQSxJQUNYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQTtBQUFBLE1BQ04sT0FBTztBQUFBLFFBQ0wsU0FBUztBQUFBO0FBQUE7QUFBQSxVQUlQLFFBQVE7QUFBQTtBQUFBLFVBRVIsY0FBYztBQUFBLFVBQ2QsUUFBUTtBQUFBLFVBQ1IsSUFBSTtBQUFBLFVBQ0osTUFBTTtBQUFBLFVBQ04sU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLGdCQUFnQixFQUFFO0FBQUEsUUFDcEQ7QUFBQSxRQUVBLFNBQVM7QUFBQTtBQUFBLFVBRVAsUUFBUTtBQUFBLFVBQ1IsY0FBYztBQUFBLFVBQ2QsUUFBUTtBQUFBLFVBQ1IsSUFBSTtBQUFBLFVBQ0osU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLFdBQVcsRUFBRTtBQUFBLFFBQy9DO0FBQUEsUUFDQSxXQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFJVCxRQUFRO0FBQUEsVUFDUixjQUFjO0FBQUEsVUFDZCxRQUFRO0FBQUEsVUFDUixJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsYUFBYSxFQUFFO0FBQUEsUUFDakQ7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLTCxRQUFRO0FBQUEsTUFFUixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixjQUFjO0FBQUEsWUFDWixjQUFjLENBQUMsT0FBTyxjQUFjLE9BQU87QUFBQSxVQUM3QztBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsTUFDQSxlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUE7QUFBQSxVQUVOLFVBQVU7QUFBQSxRQUNaO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLElBQUk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQU9KLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUFBLE1BQzFCLGdCQUFnQixrQkFBa0I7QUFBQSxNQUNsQyxhQUFhLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTTVCLFdBQVc7QUFBQSxRQUNULFdBQVcsQ0FBQyxhQUFhLENBQUM7QUFBQSxNQUM1QixDQUFDO0FBQUEsTUFDRCxXQUFXO0FBQUEsUUFDVCxXQUFXO0FBQUEsVUFDVCxhQUFhO0FBQUEsWUFDWCxZQUFZO0FBQUEsVUFDZCxDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K