diff --git a/app-store-ui/src/dist/luci-static/istore/i18n/en.json b/app-store-ui/src/dist/luci-static/istore/i18n/en.json index b3c0e4a6e..1ce01e969 100644 --- a/app-store-ui/src/dist/luci-static/istore/i18n/en.json +++ b/app-store-ui/src/dist/luci-static/istore/i18n/en.json @@ -1 +1 @@ -{"en":{"%{ num } download":["%{ num } download","%{ num } downloads"],"%{ num } like":["%{ num } like","%{ num } likes"],"all app":"all app","app backup":"app backup","are you sure you want to uninstall %{name}?":"are you sure you want to uninstall %{name}?","author":"author","backup fail":"backup fail","backup now":"backup now","backup now backs up installed software (unlimited installation sources) to external storage":"backup now backs up installed software (unlimited installation sources) to external storage","backup now will download a list of iStore installed software":"backup now will download a list of iStore installed software","backup success":"backup success","backuping":"backuping","By download":"By download","By rating":"By rating","checking for latest version":"checking for latest version","choose":"choose","choose backup file":"choose backup file","click to download":"click to download","click to update":"click to update","closed":"closed","customize":"customize","default":"default","do not refresh this page during plugin installation/uninstallation":"do not refresh this page during plugin installation/uninstallation","download":"Download","explain":"explain","external storage directory":"external storage directory","from this page, you can upload plugin packages to install plugins":"from this page, you can upload plugin packages to install plugins","Icon is gone":"Icon is gone","install":"install","installation failed, error code":"installation failed, error code","installation is complete, please close the current window":"installation is complete, please close the current window","installed":"installed","installing plugin":"installing plugin","last version":"last version","light backup":"light backup","like":"like","liked":"liked","loading data":"loading data","local backup":"local backup","maintain":"maintain","manual install":"manual install","monitor":"Monitor","multimedia":"Multimedia","nas":"NAS","net":"Net","networking":"Networking","no files selected":"no files selected","no internet required for recovery":"no internet required for recovery","offline install":"offline install","offline installation failed with error code":"offline installation failed with error code","offline installation is successful, please close the current window":"offline installation is successful, please close the current window","open":"open","order":"order","please enter an absolute path starting with %{name}":"please enter an absolute path starting with %{name}","please enter the path, give up the input, please clear the input box":"please enter the path, give up the input, please clear the input box","please enter the search keyword":"please enter the search keyword","please fill in the external storage directory":"please fill in the external storage directory","please select a backup file to restore":"please select a backup file to restore","restore backup":"restore backup","restore now":"restore now","restoring backup":"restoring backup","select or drag and drop files":"select or drag and drop files","service":"Service","support .ipk plug-in, .run self-extracting format":"support .ipk plug-in, .run self-extracting format","system":"System","tag":"Tag","the backup was restored fail":"the backup was restored fail","the backup was restored success":"the backup was restored success","the is last version":"the is last version","the update is success, please close the current window":"the update is success, please close the current window","there are no backup files in this path":"there are no backup files in this path","tool":"Tool","uninstall":"uninstall","uninstall failed, error code":"uninstall failed, error code","uninstallation succeeded, please close the current window":"uninstallation succeeded, please close the current window","uninstalling plugin":"uninstalling plugin","update date":"update date","update error":"update error","update failed with error code":"update failed with error code","update success":"update success","updateing":"updateing","updating plugin":"updating plugin","upgrade":"upgrade","upload software list and install from iStore when restoring backup":"upload software list and install from iStore when restoring backup","uploading plugin":"uploading plugin","website":"website","you have already liked":"you have already liked"}} \ No newline at end of file +{"en":{"%{ num } download":["%{ num } download","%{ num } downloads"],"%{ num } like":["%{ num } like","%{ num } likes"],"all app":"all app","app backup":"app backup","are you sure you want to uninstall %{name}?":"are you sure you want to uninstall %{name}?","author":"author","backup fail":"backup fail","backup fail with error code":"backup fail with error code","backup now":"backup now","backup now backs up installed software (unlimited installation sources) to external storage":"backup now backs up installed software (unlimited installation sources) to external storage","backup now will download a list of iStore installed software":"backup now will download a list of iStore installed software","backup success":"backup success","backuping":"backuping","By download":"By download","By rating":"By rating","checking for latest version":"checking for latest version","choose":"choose","choose backup file":"choose backup file","click to download":"click to download","click to update":"click to update","closed":"closed","customize":"customize","default":"default","download":"Download","explain":"explain","external storage directory":"external storage directory","from this page, you can upload plugin packages to install plugins":"from this page, you can upload plugin packages to install plugins","Icon is gone":"Icon is gone","install":"install","installation failed, error code":"installation failed, error code","installed":"installed","last version":"last version","light backup":"light backup","like":"like","liked":"liked","loading data":"loading data","local backup":"local backup","maintain":"maintain","manual install":"manual install","monitor":"Monitor","multimedia":"Multimedia","nas":"NAS","net":"Net","networking":"Networking","no files selected":"no files selected","no internet required for recovery":"no internet required for recovery","offline install":"offline install","offline installation failed with error code":"offline installation failed with error code","open":"open","order":"order","please enter an absolute path starting with %{name}":"please enter an absolute path starting with %{name}","please enter the path, give up the input, please clear the input box":"please enter the path, give up the input, please clear the input box","please enter the search keyword":"please enter the search keyword","please fill in the external storage directory":"please fill in the external storage directory","please select a backup file to restore":"please select a backup file to restore","restore backup":"restore backup","restore failed with error code":"restore failed with error code","restore now":"restore now","select or drag and drop files":"select or drag and drop files","service":"Service","support .ipk plug-in, .run self-extracting format":"support .ipk plug-in, .run self-extracting format","system":"System","tag":"Tag","the is last version":"the is last version","there are no backup files in this path":"there are no backup files in this path","tool":"Tool","uninstall":"uninstall","uninstall failed, error code":"uninstall failed, error code","update date":"update date","update error":"update error","update failed with error code":"update failed with error code","update success, reloading":"update success, reloading","updateing":"updateing","upgrade":"upgrade","upload software list and install from iStore when restoring backup":"upload software list and install from iStore when restoring backup","uploading":"uploading","website":"website","you have already liked":"you have already liked"}} \ No newline at end of file diff --git a/app-store-ui/src/dist/luci-static/istore/i18n/zh-cn.json b/app-store-ui/src/dist/luci-static/istore/i18n/zh-cn.json index 24f2a4354..8d33f7cbc 100644 --- a/app-store-ui/src/dist/luci-static/istore/i18n/zh-cn.json +++ b/app-store-ui/src/dist/luci-static/istore/i18n/zh-cn.json @@ -1 +1 @@ -{"zh-cn":{"%{ num } download":["%{ num } 次下载","%{ num } 次下载"],"%{ num } like":["%{ num } 次点赞","%{ num } 次点赞"],"all app":"全部软件","app backup":"软件备份","are you sure you want to uninstall %{name}?":"确定要卸载 %{name} 吗?","author":"作者","backup fail":"备份失败","backup now":"立即备份","backup now backs up installed software (unlimited installation sources) to external storage":"立即备份将备份已安装软件(不限安装来源)到外部存储","backup now will download a list of iStore installed software":"立即备份将下载iStore已安装的软件列表","backup success":"备份成功","backuping":"正在备份","By download":"按下载","By rating":"按评分","checking for latest version":"正在检查最新版本","choose":"请选择","choose backup file":"选择备份文件","click to download":"点此下载","click to update":"点我更新","closed":"关闭","customize":"自定义","default":"默认","do not refresh this page during plugin installation/uninstallation":"插件安装/卸载过程中请勿刷新此页面","download":"下载","explain":"说明","external storage directory":"外部存储目录","from this page, you can upload plugin packages to install plugins":"通过本页,你可以上传插件包来安装插件","Icon is gone":"图标出走啦","install":"安装","installation failed, error code":"安装失败,错误码","installation is complete, please close the current window":"安装完成,请关闭当前窗口","installed":"已安装","installing plugin":"正在安装插件","last version":"最新版本","light backup":"轻量备份","like":"点赞","liked":"已点赞","loading data":"正在努力的获取数据","local backup":"本地备份","maintain":"维护","manual install":"手动安装","monitor":"监控","multimedia":"多媒体","nas":"NAS","net":"网络","networking":"组网","no files selected":"未选择任何文件","no internet required for recovery":"恢复时不需要网络","offline install":"离线安装","offline installation failed with error code":"离线安装失败,错误码","offline installation is successful, please close the current window":"离线安装成功,请关闭当前窗口","open":"打开","order":"排序","please enter an absolute path starting with %{name}":"请输入 %{name} 开头的绝对路径","please enter the path, give up the input, please clear the input box":"请输入路径,放弃输入请清空输入框","please enter the search keyword":"请输入搜索关键词","please fill in the external storage directory":"请填写外部存储目录","please select a backup file to restore":"请选择要恢复的备份文件","restore backup":"恢复备份","restore now":"立即恢复","restoring backup":"正在恢复备份","select or drag and drop files":"选择或拖放文件","service":"服务","support .ipk plug-in, .run self-extracting format":"支持 .ipk 插件,.run 自解压格式","system":"系统","tag":"标签","the backup was restored fail":"恢复备份失败","the backup was restored success":"恢复备份成功","the is last version":"当前已经是最新版本","the update is success, please close the current window":"更新成功,请关闭当前窗口","there are no backup files in this path":"此路径下没有备份文件","tool":"工具","uninstall":"卸载","uninstall failed, error code":"卸载失败,错误码","uninstallation succeeded, please close the current window":"卸载完成,请关闭当前窗口","uninstalling plugin":"正在卸载插件","update date":"更新日期","update error":"更新失败","update failed with error code":"更新失败,错误代码","update success":"更新成功","updateing":"正在更新中","updating plugin":"正在更新插件","upgrade":"更新","upload software list and install from iStore when restoring backup":"复备份时上传软件列表并从iStore安装","uploading plugin":"正在上传插件","website":"官网","you have already liked":"您已经点赞过啦"}} \ No newline at end of file +{"zh-cn":{"%{ num } download":["%{ num } 次下载","%{ num } 次下载"],"%{ num } like":["%{ num } 次点赞","%{ num } 次点赞"],"all app":"全部软件","app backup":"软件备份","are you sure you want to uninstall %{name}?":"确定要卸载 %{name} 吗?","author":"作者","backup fail":"备份失败","backup fail with error code":"备份失败,错误代码","backup now":"立即备份","backup now backs up installed software (unlimited installation sources) to external storage":"立即备份将备份已安装软件(不限安装来源)到外部存储","backup now will download a list of iStore installed software":"立即备份将下载iStore已安装的软件列表","backup success":"备份成功","backuping":"正在备份","By download":"按下载","By rating":"按评分","checking for latest version":"正在检查最新版本","choose":"请选择","choose backup file":"选择备份文件","click to download":"点此下载","click to update":"点我更新","closed":"关闭","customize":"自定义","default":"默认","download":"下载","explain":"说明","external storage directory":"外部存储目录","from this page, you can upload plugin packages to install plugins":"通过本页,你可以上传插件包来安装插件","Icon is gone":"图标出走啦","install":"安装","installation failed, error code":"安装失败,错误码","installed":"已安装","last version":"最新版本","light backup":"轻量备份","like":"点赞","liked":"已点赞","loading data":"正在努力的获取数据","local backup":"本地备份","maintain":"维护","manual install":"手动安装","monitor":"监控","multimedia":"多媒体","nas":"NAS","net":"网络","networking":"组网","no files selected":"未选择任何文件","no internet required for recovery":"恢复时不需要网络","offline install":"离线安装","offline installation failed with error code":"离线安装失败,错误码","open":"打开","order":"排序","please enter an absolute path starting with %{name}":"请输入 %{name} 开头的绝对路径","please enter the path, give up the input, please clear the input box":"请输入路径,放弃输入请清空输入框","please enter the search keyword":"请输入搜索关键词","please fill in the external storage directory":"请填写外部存储目录","please select a backup file to restore":"请选择要恢复的备份文件","restore backup":"恢复备份","restore failed with error code":"恢复失败,错误代码","restore now":"立即恢复","select or drag and drop files":"选择或拖放文件","service":"服务","support .ipk plug-in, .run self-extracting format":"支持 .ipk 插件,.run 自解压格式","system":"系统","tag":"标签","the is last version":"当前已经是最新版本","there are no backup files in this path":"此路径下没有备份文件","tool":"工具","uninstall":"卸载","uninstall failed, error code":"卸载失败,错误码","update date":"更新日期","update error":"更新失败","update failed with error code":"更新失败,错误代码","update success, reloading":"更新成功,重新加载页面","updateing":"正在更新中","upgrade":"更新","upload software list and install from iStore when restoring backup":"复备份时上传软件列表并从iStore安装","uploading":"上传中","website":"官网","you have already liked":"您已经点赞过啦"}} \ No newline at end of file diff --git a/app-store-ui/src/dist/luci-static/istore/index.js b/app-store-ui/src/dist/luci-static/istore/index.js index efc130224..063d6769f 100644 --- a/app-store-ui/src/dist/luci-static/istore/index.js +++ b/app-store-ui/src/dist/luci-static/istore/index.js @@ -1,35 +1,8 @@ -var Ee=Object.defineProperty,Ie=Object.defineProperties;var De=Object.getOwnPropertyDescriptors;var be=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable;var $e=(t,e,n)=>e in t?Ee(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Z=(t,e)=>{for(var n in e||(e={}))Pe.call(e,n)&&$e(t,n,e[n]);if(be)for(var n of be(e))Be.call(e,n)&&$e(t,n,e[n]);return t},_e=(t,e)=>Ie(t,De(e));var Ve=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var A=(t,e,n)=>new Promise((a,o)=>{var l=c=>{try{i(n.next(c))}catch(h){o(h)}},u=c=>{try{i(n.throw(c))}catch(h){o(h)}},i=c=>c.done?a(c.value):Promise.resolve(c.value).then(l,u);i((n=n.apply(t,e)).next())});import{a as he,c as Fe,u as R,b as H,d as B,r as re,o as d,e as _,F as U,f as K,g as X,w as Me,h as r,p as le,i as ce,j as s,t as f,k as z,n as j,l as ze,m as S,q as xe,s as Ue,v as N,x as ge,y as Ce,z as ue,A as Se,B as Le,C as Oe,D as ye,E as Re,G as Ne,H as Ge}from"./vendor.js?v=64c6a109";var jo=Ve(I=>{const He=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const u of l.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&a(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerpolicy&&(l.referrerPolicy=o.referrerpolicy),o.crossorigin==="use-credentials"?l.credentials="include":o.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}};He();const pe={tagMap:{},numberFormat:new Intl.NumberFormat("en",{notation:"compact"})},Ke=t=>A(I,null,function*(){const e=window.vue_lang;new Date().getTime();let n={};try{const l=yield he({url:window.vue_lang_data,method:"GET"});l.data&&(n=l.data)}catch(l){console.log(l)}const a=Fe({defaultLanguage:e,translations:n,setGlobalProperties:!1,provideDirective:!1,provideComponent:!1});t.use(a);const{$gettext:o}=a;window.$i18n=o,pe.tagMap={net:o("net"),tool:o("tool"),download:o("download"),service:o("service"),multimedia:o("multimedia"),nas:o("nas"),monitor:o("monitor"),system:o("system"),networking:o("networking")};try{pe.numberFormat=new Intl.NumberFormat(e,{notation:"compact"})}catch(l){console.error("Intl.NumberFormat unsupported lang",e,l)}}),Ae=t=>pe.tagMap[t]||t,ke=t=>typeof t=="number"?pe.numberFormat.format(t):"?";var E=(t,e)=>{const n=t.__vccOpts||t;for(const[a,o]of e)n[a]=o;return n};const We=t=>(le("data-v-13251538"),t=t(),ce(),t),qe={class:"tabs"},Ze=["href","onClick"],Ye={key:0},Je=We(()=>s("div",{class:"auto"},null,-1)),Qe={setup(t){const{$gettext:e}=R(),n=H(),a=B(()=>n.state.version),o=B(()=>[{to:"/installed",name:e("installed")},{to:"/store",name:e("all app")},{to:"/upload",name:e("manual install")},{to:"/maintance",name:e("maintain"),up:a.value}]);return(l,u)=>{const i=re("router-link");return d(),_("ul",qe,[(d(!0),_(U,null,K(r(o),c=>(d(),X(i,{to:c.to,custom:"",key:c.to},{default:Me(({href:h,navigate:y,isActive:k})=>[s("li",{class:j(k&&"active cbi-tab")},[s("a",{href:h,onClick:y},f(c.name),9,Ze),c.up?(d(),_("span",Ye)):z("",!0)],2)]),_:2},1032,["to"]))),128)),Je])}}};var Xe=E(Qe,[["__scopeId","data-v-13251538"]]);const je=()=>window.vue_base,et=()=>window.istore_api_base||"https://istore.linkease.com",tt=t=>{if(t)return ze(t).format("YYYY-MM-DD HH:mm:ss")},nt=()=>new Date().getTime(),at=t=>{if(t<1024)return""+t+"KB";let n=1024,a=0;for(let l=t/1024;l>=1024;l/=1024)n*=1024,a++;let o=["M","G","T","P","E"];return(t/100/(n/100)).toFixed(2)+o[a]},ot=t=>{if(t==null)return 0;if(t<1e4)return t;let n=parseInt(`${t/1e4}`),a=t%1e4;return`${n}\u4E07${a}`},st=()=>window.token||"",rt=()=>{var t;return((t=window==null?void 0:window.device_id)==null?void 0:t.uid)||""},lt=()=>{var t;return((t=window==null?void 0:window.device_id)==null?void 0:t.version)||""},ct=()=>{var t;return((t=window==null?void 0:window.device_id)==null?void 0:t.arch)||""},it=()=>"https://www.kooldns.cn/bind";var ut=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",BasePage:je,ApiBaseURL:et,formatDate:tt,UnixDate:nt,numberToSize:at,numberToSum:ot,getToken:st,getDeviceId:rt,getVersion:lt,modelArch:ct,getIframeURL:it}),O=Z({},ut);const P=he.create({});P.interceptors.request.use(t=>(t.params==null&&(t.params={}),t.params=_e(Z({},t.params),{token:O.getToken(),_t:O.UnixDate()}),t),t=>t);P.interceptors.response.use(t=>t,t=>t);const Y=he.create({baseURL:O.ApiBaseURL()});Y.interceptors.request.use(t=>(t.params==null&&(t.params={}),t.params=_e(Z({},t.params),{modelArch:O.modelArch(),deviceId:O.getDeviceId(),_t:O.UnixDate()}),t),t=>t);Y.interceptors.response.use(t=>t);const dt=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/installed"});if(n.status==200){t(n.data);return}e(n.status);return}catch(n){e(n);return}})),pt=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/install",params:{package:t}});if(a.status==200){e(a.data);return}n(a.status);return}catch(a){n(a);return}})),_t=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/upgrade",params:{package:t}});if(a.status==200){e(a.data);return}n(a.status);return}catch(a){n(a);return}})),ht=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/remove",params:{package:t}});if(a.status==200){e(a.data);return}n(a.status);return}catch(a){n(a);return}})),gt=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/update"});if(n.status==200){t(n.data);return}e(n.status);return}catch(n){e(n);return}})),ft=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/status",params:{package:t}});if(a.status==200){e(a.data);return}n(a.status);return}catch(a){n(a);return}})),vt=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/log"});if(n.status==200){t(n.data);return}e(n.status);return}catch(n){e(n);return}})),mt=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/upload",headers:{"Content-Type":"multipart/form-data"},data:t});if(a.data){e(a.data);return}}catch(a){n(a);return}n("not found soft")})),wt=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/light_backup"});if(n.status==200){t(n.data);return}e(n.status);return}catch(n){e(n);return}})),bt=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/light_restore",headers:{"Content-Type":"multipart/form-data"},data:t});if(a.data){e(a.data);return}}catch(a){n(a);return}n("not found soft")})),$t=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/get_available_backup_file_list",params:{path:t}});if(a.status==200){e(a==null?void 0:a.data);return}n(a.status);return}catch(a){n(a);return}})),yt=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/get_local_backup_dir_path"});if(n.status==200){t(n==null?void 0:n.data);return}e(n.status);return}catch(n){e(n);return}})),kt=(t,e)=>new Promise((n,a)=>A(I,null,function*(){try{const o=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/local_backup",params:{path:t,force:e}});if(o.status==200){n(o==null?void 0:o.data);return}a(o.status);return}catch(o){a(o);return}})),xt=t=>new Promise((e,n)=>A(I,null,function*(){try{const a=yield P({method:"POST",url:"/cgi-bin/luci/admin/store/local_restore",params:{path:t}});if(a.status==200){e(a.data);return}n(a.status);return}catch(a){n(a);return}})),Ct=()=>new Promise((t,e)=>A(I,null,function*(){try{const n=yield P({method:"GET",url:"/cgi-bin/luci/admin/store/get_block_devices"});if(n.status==200){t(n==null?void 0:n.data);return}e(n.status);return}catch(n){e(n);return}}));var St=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getInstalledApp:dt,installApp:pt,upgradeApp:_t,removeApp:ht,updateAppStore:gt,getAppStatus:ft,getLog:vt,uploadAppIPK:mt,lightBackup:wt,lightRestore:bt,backupFileList:$t,localBackupdirPath:yt,localBackup:kt,localRestore:xt,getBlockDevices:Ct});const Lt=t=>new Promise((e,n)=>A(I,null,function*(){var a,o,l,u;try{const i=yield Y({method:"GET",url:"/api/store/list",params:t});if(((a=i==null?void 0:i.data)==null?void 0:a.success)===0){e((o=i==null?void 0:i.data)==null?void 0:o.result);return}if((l=i==null?void 0:i.data)!=null&&l.message){n((u=i==null?void 0:i.data)==null?void 0:u.message);return}n("error")}catch(i){console.log(i),n(i);return}})),At=O.ApiBaseURL(),Tt=t=>`${At}${t}`,Et=()=>new Promise((t,e)=>A(I,null,function*(){var n,a,o,l;try{const u=yield Y({method:"GET",url:"/api/store/tags"});if(((n=u==null?void 0:u.data)==null?void 0:n.success)===0){t((a=u==null?void 0:u.data)==null?void 0:a.result);return}if((o=u==null?void 0:u.data)!=null&&o.message){e((l=u==null?void 0:u.data)==null?void 0:l.message);return}e("error")}catch(u){e(u);return}})),It=t=>new Promise((e,n)=>{Y({method:"POST",url:"/api/store/expand",data:{appsId:t||[],deviceId:O.getDeviceId()}}).then(a=>{var o,l,u;if(((o=a.data)==null?void 0:o.success)==0&&((l=a.data)==null?void 0:l.result)){e((u=a.data)==null?void 0:u.result);return}n("not found expand")}).catch(a=>{n(a)})}),Dt=t=>{Y({method:"POST",url:"/api/store/download",data:{appId:t,deviceId:O.getDeviceId()}}).then(e=>{var n;((n=e.data)==null?void 0:n.success)!=0})},Pt=t=>new Promise((e,n)=>{Y({method:"POST",url:"/api/store/star",data:{appId:t,deviceId:O.getDeviceId()}}).then(a=>{var o;if(((o=a.data)==null?void 0:o.success)==0){e(a.data);return}n("not found expand")}).catch(a=>{n(a)})});var Bt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getStoreAppList:Lt,getStoreAppIcon:Tt,getStoreTags:Et,getAppExpandData:It,increasingDownloadCount:Dt,postStarApp:Pt});const Vt=()=>P({method:"GET",url:"/cgi-bin/luci/admin/store/check_self_upgrade"}),Ft=()=>P({method:"POST",url:"/cgi-bin/luci/admin/store/do_self_upgrade"});var Mt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",updateIstore:Vt,selfUpdateIstore:Ft}),T=Z(Z(Z({},St),Bt),Mt);const zt={setup(){const t=H(),e=B(()=>t.state.log.action),n=B(()=>t.state.log.content),a=B(()=>t.state.log.end),o=B(()=>t.state.log.exitCode),l=S(!1),u=S(null);let i="",c=S(""),h=S("."),y="",k="";switch(e.value){case"install":i="\u6B63\u5728\u5B89\u88C5\u63D2\u4EF6",y="\u5B89\u88C5\u5B8C\u6210,\u8BF7\u5173\u95ED\u5F53\u524D\u7A97\u53E3",k="\u5B89\u88C5\u5931\u8D25,\u9519\u8BEF\u7801";break;case"uninstall":i="\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6",y="\u5378\u8F7D\u6210\u529F,\u8BF7\u5173\u95ED\u5F53\u524D\u7A97\u53E3",k="\u5378\u8F7D\u5931\u8D25,\u9519\u8BEF\u7801";break;case"upgrade":i="\u6B63\u5728\u66F4\u65B0\u63D2\u4EF6",y="\u66F4\u65B0\u6210\u529F,\u8BF7\u5173\u95ED\u5F53\u524D\u7A97\u53E3",k="\u66F4\u65B0\u5931\u8D25,\u9519\u8BEF\u7801";break;case"upload":i="\u6B63\u5728\u4E0A\u4F20\u63D2\u4EF6",y="\u79BB\u7EBF\u5B89\u88C5\u6210\u529F,\u8BF7\u5173\u95ED\u5F53\u524D\u7A97\u53E3",k="\u79BB\u7EBF\u5B89\u88C5\u5931\u8D25,\u9519\u8BEF\u7801";break}xe(()=>{document.body.setAttribute("lock-scroll",!0),V()}),Ue(()=>{document.body.removeAttribute("lock-scroll")});const D=()=>{var g;(g=u.value)!=null&&g.scrollHeight&&(u.value.scrollTop=u.value.scrollHeight)},V=()=>{setTimeout(()=>{if(a.value){b(),D();return}T.getLog().then(g=>{if(a.value){b(),D();return}switch(g==null?void 0:g.code){}const C=g==null?void 0:g.stdout,v=g==null?void 0:g.stderr;(C||v)&&(c.value=`${C}${v}`),h.value=`${h.value}.`,D(),V()}).catch(g=>{c.value=`${g}`,D(),V()})},500)},b=()=>{l.value=!0},p=()=>{location.reload()};return{logText:B(()=>l.value?o.value!==void 0&&o.value!==0?`${i} -${n.value} -${k} ${o.value} -`:`${i} -${n.value} -${y} -`:`${i} -${h.value} -${c.value} -${n.value} -`),Close:p,disabled:l,textDom:u}},mounted(){this.$nextTick(()=>{const t=document.querySelector("body");t.append?t.append(this.$el):t.appendChild(this.$el)})}},fe=t=>(le("data-v-6695545b"),t=t(),ce(),t),Ut={class:"software-log_shade"},Ot=fe(()=>s("div",{class:"software-log_shade__bg"},null,-1)),Rt={class:"software-log_shade__pannel"},Nt=fe(()=>s("div",{class:"software-log_shade__pannel-title"}," \u8F6F\u4EF6\u4E2D\u5FC3 - \u65E5\u5FD7\u8BB0\u5F55 ",-1)),Gt=fe(()=>s("div",{class:"software-log_shade__pannel-now"},[s("i",null,"\xA0\xA0\xA0\xA0\u63D2\u4EF6\u5B89\u88C5/\u5378\u8F7D\u8FC7\u7A0B\u4E2D\u8BF7\u52FF\u5237\u65B0\u6B64\u9875\u9762\uFF01")],-1)),Ht={class:"software-log_shade__pannel-content"},Kt=["value"],Wt={key:0,class:"software-log_shade__pannel-btn"};function qt(t,e,n,a,o,l){return d(),_("div",Ut,[Ot,s("div",Rt,[Nt,Gt,s("div",Ht,[s("textarea",{ref:"textDom",cols:"63",rows:"26",wrap:"on",readonly:"readonly",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false",value:a.logText},null,8,Kt)]),a.disabled?(d(),_("div",Wt,[s("button",{class:"close",onClick:e[0]||(e[0]=u=>a.Close())}," \u5173\u95ED ")])):z("",!0)])])}var Zt=E(zt,[["render",qt],["__scopeId","data-v-6695545b"]]);const Yt={setup(t){const e=H();e.dispatch("getData");const n=B(()=>e.state.log.status);return(a,o)=>{const l=re("router-view");return d(),_(U,null,[N(Xe),N(l),r(n)?(d(),X(Zt,{key:0})):z("",!0)],64)}}},Jt={class:"toast"},Qt=["title"],Xt={key:1,class:"msg"},jt=["innerHTML"],en={props:{content:String,type:String,Close:Function,keep:Boolean,html:Boolean},setup(t){const e=t,n=S(e.content),a=S(e.keep),o=S(e.html),l=S(window.$i18n);e.keep||setTimeout(()=>{e.Close()},2e3);const u=()=>{e.Close()};return(i,c)=>(d(),_("div",Jt,[a.value?(d(),_("div",{key:0,class:"toast-close",onClick:u,title:l.value("closed")},"x",8,Qt)):z("",!0),o.value?z("",!0):(d(),_("div",Xt,f(n.value),1)),o.value?(d(),_("div",{key:2,class:"msg",innerHTML:n.value},null,8,jt)):z("",!0)]))}};var tn=E(en,[["__scopeId","data-v-b05f92bc"]]);const M=t=>{let e={content:"",type:"",keep:!1,html:!1,Close:()=>{a.unmount(n),document.body.removeChild(n)}};t!=null&&(typeof t=="object"?(e.content=(t==null?void 0:t.content)||"",e.type=(t==null?void 0:t.type)||"",e.keep=(t==null?void 0:t.keep)||!1,e.html=(t==null?void 0:t.html)||!1):e.content=t);let n=document.createElement("div"),a=ge(tn,e);document.body.append(n),a.mount(n),Ce(()=>{a.unmount(n),document.body.removeChild(n)})},nn={props:{content:String,Close:Function},setup(t){return{message:t.content}}},an=t=>(le("data-v-6d7664a4"),t=t(),ce(),t),on={class:"loading"},sn=an(()=>s("div",{class:"icon"},null,-1)),rn={class:"msg"};function ln(t,e,n,a,o,l){return d(),_("div",on,[sn,s("div",rn,f(a.message),1)])}var cn=E(nn,[["render",ln],["__scopeId","data-v-6d7664a4"]]),G={props:{content:"",Close:()=>{}},Start(t){this.props={content:t,Close:()=>{e.unmount(n),document.body.removeChild(n)}};let e=ge(cn,this.props),n=document.createElement("div");document.body.append(n),e.mount(n),Ce(()=>{this.props.Close()})},Stop(){this.props.Close()}};const un=()=>` - - `,dn=()=>{const t=document.createElement("div");return t.className="software-log_shade",t.setAttribute("data-logger",""),t.innerHTML=un(),t},pn=()=>{const t=document.createElement("div");return t.className="software-log_shade__bg",t},_n=()=>{const t=document.createElement("div");return t.className="software-log_shade__pannel",t},hn=t=>{const e=document.createElement("div");return e.className="software-log_shade__pannel-title",e.textContent=t,e},gn=t=>{const e=document.createElement("div");return e.className="software-log_shade__pannel-now",e.innerHTML=`    ${t}`,e},fn=()=>{const t=document.createElement("div");return t.className="software-log_shade__pannel-content",t},vn=t=>{const e=document.createElement("textarea");return e.setAttribute("readonly",""),e.setAttribute("cols","63"),e.setAttribute("rows","26"),e.setAttribute("wrap","on"),e.setAttribute("autocomplete","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false"),e.className="software-log_shade__pannel-content-text",e.value=t,e},mn=(t,e)=>{const n=document.createElement("button");return n.className="software-log_shade__pannel-btn-close",n.textContent=t,n.addEventListener("click",e),n},wn=()=>{const t=document.createElement("div");return t.className="software-log_shade__pannel-btn",t},bn=t=>{const e=t.title!=null?t.title:"\u65E5\u5FD7\u8BB0\u5F55",n=t.description!=null?t.description:"\u63D2\u4EF6\u5B89\u88C5/\u5378\u8F7D\u8FC7\u7A0B\u4E2D\u8BF7\u52FF\u5237\u65B0\u6B64\u9875\u9762!",a=t.clearText!=null?t.clearText:"\u5173\u95ED",o=t.value!=null?t.value:"",l=t.callback!=null?t.callback:()=>{};return{title:e,description:n,clearText:a,valueText:o,callback:l}},de=t=>{const{title:e,description:n,clearText:a,valueText:o,callback:l}=bn(t);let u=!1,i="",c="",h=!1;const y=dn(),k=()=>{h||(document.body&&document.body.removeAttribute("lock-scroll"),l&&l(),y&&y.remove(),h=!0)},D=()=>{W.scrollTop=W.scrollHeight},V=L=>{W.value=`${i} -${L}`,D()},b=L=>{c=L,V(c)},p=L=>{b(c+L)},m=()=>{i+=".",b(c)},g=L=>{u=L,u?J.appendChild(te):J.removeChild(te)},C=()=>u,v=()=>{C()||setTimeout(()=>{T.getLog().then(L=>{switch(L==null?void 0:L.code){}const ne=L==null?void 0:L.stdout,ae=L==null?void 0:L.stderr;(ne||ae)&&b(`${ne}${ae}`),m()}).catch(L=>{b(`${L}`)}).finally(()=>{v()})},500)};v();const $=pn(),w=_n(),x=hn(e),F=gn(n),ee=fn(),W=vn(o);ee.appendChild(W);const J=wn(),te=mn(a,k);return w.append(x,F,ee,J),y.append($,w),document.body.appendChild(y),document.body.setAttribute("lock-scroll","true"),{close:k,setValue:b,addValue:p,setDisabled:g,getDisabled:C}},ie=t=>(le("data-v-42a2bb20"),t=t(),ce(),t),$n={class:"app-container"},yn={class:"app-info"},kn={class:"app-f"},xn={class:"app-icon"},Cn=["alt","src"],Sn={class:"app-tags"},Ln={class:"tag"},An=ie(()=>s("span",{class:"block"},"\uFF5C",-1)),Tn={class:"app-r"},En=["title"],In={class:"app-name"},Dn={class:"app-version"},Pn={class:"app-as"},Bn=ie(()=>s("span",{style:{margin:"0 10px"}},"|",-1)),Vn=["title"],Fn=["title"],Mn=["title"],zn={class:"app-author"},Un={class:"app-date"},On={class:"app-btns"},Rn=["href"],Nn=ie(()=>s("div",{class:"auto"},null,-1)),Gn=ie(()=>s("div",{class:"app-margin-left"},null,-1)),Hn=["href"],Kn=ie(()=>s("div",{class:"app-margin-left"},null,-1)),Wn={props:{col:{type:Object,default(){return{description:"",tags:[],entry:"",author:"",depends:[],installed:!1,hasupdate:!1,title:"",time:"",release:1,website:"",name:"",version:""}}}},setup(t){const e=t,{$gettext:n,$ngettext:a}=R(),o=B(()=>e.col),l=H(),u=O.formatDate,i=p=>{const m=de({title:n("updating plugin"),description:n("do not refresh this page during plugin installation/uninstallation"),clearText:n("closed"),valueText:"",callback:()=>{location.reload()}});T.upgradeApp(p).then(g=>{let C=g.stdout,v=g.stderr;g.code!==0?(m.addValue(`${v}`),m.addValue(` -${n("update failed with error code")}: ${g.code}`)):(m.addValue(`${C} -${v}`),m.addValue(` -${n("the update is success, please close the current window")}`))}).catch(g=>{m.addValue(`${g}`),m.addValue(` -${n("update failed with error code")}: ${500}`)}).finally(()=>{m.setDisabled(!0);try{window.L.ui.menu.flushCache()}catch(g){}})},c=p=>{const m=de({title:n("installing plugin"),description:n("do not refresh this page during plugin installation/uninstallation"),clearText:n("closed"),valueText:"",callback:()=>{location.reload()}});T.increasingDownloadCount(p),l.dispatch("apps/incrAppDownload",{name:p}),T.installApp(p).then(g=>{let C=g.stdout,v=g.stderr;g.code!==0?(m.addValue(`${v}`),m.addValue(` -${n("installation failed, error code")}: ${g.code}`)):(m.addValue(`${C} -${v}`),m.addValue(` -${n("installation is complete, please close the current window")}`))}).catch(g=>{m.addValue(`${g}`),m.addValue(` -${n("installation failed, error code")}: ${500}`)}).finally(()=>{m.setDisabled(!0);try{window.L.ui.menu.flushCache()}catch(g){}})},h=p=>{if(!confirm(n("are you sure you want to uninstall %{name}?",{name:p})))return;const g=de({title:n("uninstalling plugin"),description:n("do not refresh this page during plugin installation/uninstallation"),clearText:n("closed"),valueText:"",callback:()=>{location.reload()}});T.removeApp(p).then(C=>{let v=C.stdout,$=C.stderr;g.addValue(`${v} -${$}`),g.addValue(` -${n("uninstallation succeeded, please close the current window")}`)}).catch(C=>{g.addValue(`${C}`),g.addValue(` -${n("uninstall failed, error code")}: ${500}`)}).finally(()=>{g.setDisabled(!0);try{window.L.ui.menu.flushCache()}catch(C){}})},y=p=>A(this,null,function*(){G.Start();try{(yield T.postStarApp(p))&&l.dispatch("apps/incrAppStar",{name:p})}catch(m){}G.Stop()}),k=()=>{M(n("you have already liked"))},D=p=>o.value.installed?`/luci-static/resources/app-icons/${p}.png`:o.value.icon?T.getStoreAppIcon(o.value.icon):`/luci-static/resources/app-icons/${p}.png`,V=p=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return p.title}return p.title_en||p.title},b=p=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return p.description}return p.description_en||p.description};return(p,m)=>{var v,$,w,x,F,ee,W,J,te,L,ne,ae,ve,me,we;const g=re("svg-star-off"),C=re("svg-star-on");return d(),_("div",$n,[s("div",yn,[s("div",kn,[s("div",xn,[s("img",{alt:r(n)("Icon is gone")+"~",src:D(r(o).name)},null,8,Cn)]),s("div",Sn,[(d(!0),_(U,null,K(r(o).tags,q=>(d(),_(U,{key:q},[s("div",Ln,[s("span",null,f(r(Ae)(q)),1)]),An],64))),128))])]),s("div",Tn,[s("div",{class:"app-title",title:r(o).name},[s("span",In,f(V(r(o))),1),s("span",Dn,"v"+f(r(o).version),1)],8,En),s("div",Pn,[s("span",null,f(r(a)("%{ num } download","%{ num } downloads",(($=(v=r(o))==null?void 0:v.expand)==null?void 0:$.downloadCount)||0,{num:r(ke)((x=(w=r(o))==null?void 0:w.expand)==null?void 0:x.downloadCount)})),1),Bn,s("span",null,f(r(a)("%{ num } like","%{ num } likes",((ee=(F=r(o))==null?void 0:F.expand)==null?void 0:ee.starCount)||0,{num:r(ke)((J=(W=r(o))==null?void 0:W.expand)==null?void 0:J.starCount)})),1),((te=r(o))==null?void 0:te.expand)!=null?(d(),_(U,{key:0},[(ne=(L=r(o))==null?void 0:L.expand)!=null&&ne.isStar?(d(),_("a",{key:0,class:"star-btn",title:r(n)("liked"),onClick:m[0]||(m[0]=q=>k())},[N(g)],8,Vn)):(d(),_("a",{key:1,class:"star-btn",title:r(n)("like"),onClick:m[1]||(m[1]=q=>y(r(o).name))},[N(C)],8,Fn))],64)):z("",!0)]),s("div",{class:"app-description cbi-value-description",title:b(r(o))},[s("span",null,f(b(r(o))),1)],8,Mn),s("div",zn,[s("span",null,f(r(n)("author"))+": "+f(r(o).author||"null"),1)]),s("div",Un,[s("span",null,f(r(n)("update date"))+": "+f(r(u)(r(o).time*1e3)||"null"),1)])])]),s("div",On,[r(o).website?(d(),_("a",{key:0,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(o).website},f(r(n)("website")),9,Rn)):z("",!0),Nn,r(o).installed?(d(),_(U,{key:1},[((ae=r(o))==null?void 0:ae.curVersion)!=((ve=r(o))==null?void 0:ve.lastVersion)||((me=r(o))==null?void 0:me.curRelease)!=((we=r(o))==null?void 0:we.lastRelease)?(d(),_("a",{key:0,class:"app-btn cbi-button cbi-button-reload",onClick:m[2]||(m[2]=q=>i(r(o).name))},f(r(n)("upgrade")),1)):z("",!0),Gn,r(o).entry?(d(),_("a",{key:1,class:"app-btn cbi-button cbi-button-apply",href:r(o).entry},f(r(n)("open")),9,Hn)):z("",!0),Kn,s("a",{class:"app-btn cbi-button cbi-button-remove",onClick:m[3]||(m[3]=q=>h(r(o).name))},f(r(n)("uninstall")),1)],64)):(d(),_("a",{key:2,class:"app-btn cbi-button cbi-button-add",onClick:m[4]||(m[4]=q=>c(r(o).name))},f(r(n)("install")),1))])])}}};var Te=E(Wn,[["__scopeId","data-v-42a2bb20"]]);const qn={class:"cbi-section"},Zn={class:"containers"},Yn={setup(t){const e=H(),n=B(()=>e.getters["apps/LocalApps"]);return(a,o)=>(d(),_("fieldset",qn,[s("div",Zn,[(d(!0),_(U,null,K(r(n),l=>(d(),X(Te,{key:l.name,col:l},null,8,["col"]))),128))])]))}};var Jn=E(Yn,[["__scopeId","data-v-0046e0f2"]]);const Qn={class:"sort-container"},Xn={class:"sort-title"},jn={class:"sort-value"},ea=["value","onClick"],ta={setup(t){const{$gettext:e}=R(),n=S("default"),a=H(),o=S([{key:e("default"),value:"default"},{key:e("By download"),value:"download"},{key:e("By rating"),value:"star"}]),l=u=>{n.value=u,a.dispatch("apps/filterCurApps",{sort:u})};return(u,i)=>(d(),_("div",Qn,[s("div",Xn,f(r(e)("order"))+":",1),s("div",jn,[(d(!0),_(U,null,K(o.value,c=>(d(),_("input",{key:c.value,class:j(["cbi-button",{"cbi-button-apply":n.value==c.value}]),type:"button",value:c.key,onClick:h=>l(c.value)},null,10,ea))),128))])]))}};var na=E(ta,[["__scopeId","data-v-e3845a5c"]]);const aa={class:"tags-container"},oa={class:"tags-title"},sa={class:"tags-value"},ra=["value"],la=["value","onClick"],ca={setup(t){const{$gettext:e}=R(),n=S("default"),a=H(),o=B(()=>a.getters["tags/Tags"]),l=u=>{n.value=u,a.dispatch("apps/filterCurApps",{tag:u})};return(u,i)=>(d(),_("div",aa,[s("div",oa,f(r(e)("tag"))+": ",1),s("div",sa,[s("input",{class:j(["cbi-button",{"cbi-button-apply":n.value=="default"}]),type:"button",value:r(e)("default"),onClick:i[0]||(i[0]=c=>l("default"))},null,10,ra),(d(!0),_(U,null,K(r(o),c=>(d(),_("input",{key:c,class:j(["cbi-button",{"cbi-button-apply":n.value==c}]),type:"button",value:r(Ae)(c),onClick:h=>l(c)},null,10,la))),128))])]))}};var ia=E(ca,[["__scopeId","data-v-07bccc36"]]);const ua=["onSubmit"],da=["placeholder"],pa={setup(t){const{$gettext:e}=R(),n=S(""),a=H(),o=()=>{a.dispatch("apps/filterCurApps",{search:n.value})};return(l,u)=>{const i=re("svg-search");return d(),_("form",{class:"search",onSubmit:Le(o,["prevent"])},[s("a",{class:"search-btn",onClick:o},[N(i)]),ue(s("input",{type:"text",placeholder:r(e)("please enter the search keyword"),"onUpdate:modelValue":u[0]||(u[0]=c=>n.value=c)},null,8,da),[[Se,n.value,void 0,{trim:!0}]])],40,ua)}}};var _a=E(pa,[["__scopeId","data-v-c4e8a9f2"]]);const ha={class:"containers"},ga={key:1,style:{margin:"10px 0","text-align":"center",width:"100%"}},fa={setup(t){const{$gettext:e}=R(),n=H(),a=B(()=>n.getters["apps/StoreApps"]),o=B(()=>n.state.apps.Load);return(l,u)=>(d(),_("div",ha,[r(o)?(d(!0),_(U,{key:0},K(r(a),i=>(d(),X(Te,{key:i.name,col:i},null,8,["col"]))),128)):(d(),_("span",ga,f(r(e)("loading data"))+"...",1))]))}};var va=E(fa,[["__scopeId","data-v-1b494368"]]);const ma={class:"cbi-section"},wa={setup(t){return(e,n)=>(d(),_("fieldset",ma,[N(_a),N(ia),N(na),N(va)]))}};var ba=E(wa,[["__scopeId","data-v-74b0669f"]]);const $a=t=>(le("data-v-49941f68"),t=t(),ce(),t),ya={class:"cbi-section"},ka={class:"container_msg cbi-map-descr"},xa=["onSubmit"],Ca={class:"upload-file"},Sa={class:"button"},La=$a(()=>s("div",{class:"auto"},null,-1)),Aa={setup(t){const{$gettext:e}=R(),n=S(null),a=S(null);xe(()=>{if(n.value){const i=n.value;i.addEventListener("dragenter",c=>{(c.fromElement===null||!i.contains(c.fromElement))&&console.log("dragenter")},!1),i.addEventListener("dragleave",c=>{(c.fromElement===null||!i.contains(c.fromElement))&&console.log("dragleave")},!1),i.addEventListener("dragover",c=>{c.preventDefault(),c.dataTransfer.dropEffect="link"},!1),i.addEventListener("drop",c=>{console.log("drop"),c.preventDefault(),o(c)},!1)}});const o=i=>{const c=i.dataTransfer.files;if(c&&c.length>0){const h=c[0];u(h);return}},l=i=>{const c=i.target.files;if(c&&c.length>0){const h=c[0];u(h);return}},u=i=>{if(i.name.endsWith(".run")||i.name.endsWith(".ipk")){const c=de({title:e("uploading plugin"),description:e("do not refresh this page during plugin installation/uninstallation"),clearText:e("closed"),valueText:"",callback:()=>{location.reload()}});let h=new FormData;h.append(i.name,i),T.uploadAppIPK(h).then(y=>{let k=y.stdout,D=y.stderr;y.code!==0?(c.addValue(`${D}`),c.addValue(` -${e("offline installation failed with error code")}: ${y.code}`)):(c.addValue(`${k} -${D}`),c.addValue(` -${e("offline installation is successful, please close the current window")}`))}).catch(y=>{c.addValue(`${y}`),c.addValue(` -${e("offline installation failed with error code")}: ${500}`)}).finally(()=>{c.setDisabled(!0);try{window.L.ui.menu.flushCache()}catch(y){}})}};return(i,c)=>{var h;return d(),_("fieldset",ya,[s("div",ka,[s("span",null,f(r(e)("offline install")),1),s("span",null,"\xB7 "+f(r(e)("from this page, you can upload plugin packages to install plugins")),1),s("span",null,"\xB7 "+f(r(e)("support .ipk plug-in, .run self-extracting format")),1)]),s("form",{onSubmit:Le(u,["prevent"])},[s("div",{class:"flex",ref_key:"upl",ref:n},[s("label",Ca,[s("span",null,f(((h=a.value)==null?void 0:h.name)||r(e)("no files selected")),1),s("input",{type:"file",name:"file",accept:".ipk, .run",hidden:"",onChange:l},null,32),s("div",Sa,f(r(e)("select or drag and drop files")),1)]),La],512)],40,xa)])}}};var Ta=E(Aa,[["__scopeId","data-v-49941f68"]]);const Ea={class:"cbi-section"},Ia={class:"webapp-container"},Da=["src"],Pa={setup(t){const e=B(()=>""),n=B(()=>""),a=B(()=>`${O.getIframeURL()}/#/apps?token=${n.value}&deviceId=${e.value}`);return(o,l)=>(d(),_("fieldset",Ea,[s("div",Ia,[s("iframe",{src:r(a),sandbox:"allow-scripts allow-same-origin allow-popups",seamless:""},null,8,Da)])]))}};var Ba=E(Pa,[["__scopeId","data-v-8e330954"]]);const Va={class:"log-containers"},Fa={key:0,class:"containers-tit"},Ma={key:1,class:"containers-tit"},za=["value"],Ua={key:1},Oa={setup(t){const{$gettext:e}=R(),n=H(),a=B(()=>n.state.version),o=B(()=>n.state.versionLoad),l=()=>{G.Start(`${e("updateing")}...`),T.selfUpdateIstore().then(({data:u})=>{if(u){const{stdout:i,stderr:c,code:h}=u;if(h==0){M(e("update success")),n.dispatch("istoreUpdated");return}else throw c||"unknown error"}throw"unknown error"}).catch(u=>{M(`${e("update error")}: ${u}`)}).finally(()=>{G.Stop()})};return(u,i)=>(d(),_("div",Va,[r(o)?(d(),_("div",Ma,[r(a)?(d(),_(U,{key:0},[s("span",null,f(r(e)("last version"))+":"+f(r(a)),1),s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:i[0]||(i[0]=c=>l()),value:r(e)("click to update")},null,8,za)],64)):(d(),_("span",Ua,f(r(e)("the is last version"))+"...",1))])):(d(),_("div",Fa,f(r(e)("checking for latest version")),1))]))}};var Ra=E(Oa,[["__scopeId","data-v-8f2ad39a"]]),Na={namespaced:!0,state:{Load:!1,LocalApps:[],StoreApps:[],Expand:{},Cur:{tag:"default",sort:"default",search:"",limit:30,offset:0},LocalAppsMap:{},StoreAppsMap:{}},mutations:{setExpand(t,e){t.Expand=e},setLocalApps(t,e){t.LocalApps=e||[],e.forEach(n=>{t.LocalAppsMap[n.name]=n})},setStoreApps(t,e){t.StoreApps=e||[],e.forEach(n=>{t.StoreAppsMap[n.name]=n})},setCur(t,e){for(const n in e)Object.hasOwnProperty.call(e,n)&&(t.Cur[n]=e[n])}},getters:{Cur(t){return t.Cur},LocalApps(t){let e=[...t.LocalApps],n=t.Expand;for(let a=0;a{p.tags&&p.tags.forEach(m=>{m==a&&b.push(p)})}),e=b}let o=t.Cur.search;if(o){let b=[];e.forEach(p=>{let m=JSON.stringify(p);new RegExp(o,"i").test(m)&&b.push(p)}),e=b}let l=e.length;switch(t.Cur.sort){case"download":for(let b=0;b{n.forEach(a=>{a.installed=!0}),e("setLocalApps",n)})},getStoreApps(t,e){const{state:n,commit:a,dispatch:o}=t;let l=[];T.getStoreAppList(e).then(u=>{u.apps&&(u.apps.forEach(i=>{l.push(i.name)}),o("getStoreAppsExpand",l),a("setStoreApps",u.apps)),n.Load=!0}).catch(u=>{console.log(u)})},getStoreAppsExpand(t,e){const{commit:n}=t;T.getAppExpandData(e).then(a=>{a&&n("setExpand",a)})}}},Ga={namespaced:!0,state:{Tags:[],Total:0},mutations:{},getters:{Tags(t){return t.Tags},Total(t){return t.Total}},actions:{getTags(t){const{state:e,commit:n}=t;T.getStoreTags().then(a=>{e.Tags=(a==null?void 0:a.tags)||[],e.Total=(a==null?void 0:a.total)||0})}}},Ha={namespaced:!0,state:{status:!1,action:"install",content:"",end:!1,exitCode:void 0},mutations:{setStatus(t,e){t.status=e.status,t.action=(e==null?void 0:e.action)||"install",t.content=(e==null?void 0:e.content)||"",t.end=(e==null?void 0:e.end)||!1,t.exitCode=void 0},setContent(t,e){t.content=e},setEnd(t,e){t.end=!0,t.exitCode=e}},getters:{},actions:{}},se=Oe({state:{version:"",versionLoad:!1},mutations:{setVersion(t,e){t.version=e},setVersionLoad(t,e){t.versionLoad=e}},modules:{apps:Na,tags:Ga,log:Ha},actions:{getData(t){const{dispatch:e}=t;e("tags/getTags"),e("apps/getApps"),e("getVersion")},getVersion(t){return A(this,null,function*(){const{commit:e}=t;try{const n=yield T.updateIstore(),{code:a,msg:o}=n==null?void 0:n.data;a==200&&e("setVersion",o)}catch(n){console.log(n)}e("setVersionLoad",!0)})},istoreUpdated(t){const{commit:e}=t;e("setVersion","")}}}),oe={Start(t,e){se.commit("log/setStatus",{status:!0,action:t,content:""})},Stop(){se.commit("log/setStatus",{status:!1,action:"install",content:""})},Add(t){se.commit("log/setContent",t)},End(t){se.commit("log/setEnd",t)}};const Ka={class:"Lightweight"},Wa={class:"Lightweight-container"},qa={class:"model"},Za={class:"Lightweight-container1"},Ya={class:"container1-center"},Ja={class:"Lightweight-tit"},Qa={class:"Lightweight-backup"},Xa=["value"],ja=["value"],eo={setup(t){const{$gettext:e}=R(),n=S(null),a=()=>{const i=e("backuping"),c=e("backup success"),h=e("backup fail"),y=e("click to download");G.Start(`${i}...`),T.lightBackup().then(k=>{if(k){const{msg:D,code:V}=k;if(V==200){M({content:`${c}\uFF0C${y}

`,keep:!0,html:!0});return}else throw D||"unknown error"}throw"unknown error"}).catch(k=>{M(`${h} : ${k}`)}).finally(()=>{G.Stop()})},o=i=>{const c=i.target.files;if(c&&c.length>0){const h=c[0];l(h);return}},l=i=>{let c=new FormData;c.append(i.name,i),oe.Start("upload"),T.lightRestore(c).then(h=>{let y=h.stdout,k=h.stderr;oe.Add(`${y} -${k}`),oe.End(h.code)}).catch(h=>{oe.Add(h),oe.End(500)})},u=i=>{n.value.click(i),i.preventDefault()};return(i,c)=>(d(),_("div",Ka,[s("div",Wa,[s("div",qa,f(r(e)("explain")),1),s("div",Za,[s("div",Ya,[s("div",Ja,[s("span",null,"\xB7 "+f(r(e)("backup now will download a list of iStore installed software")),1),s("span",null,"\xB7 "+f(r(e)("upload software list and install from iStore when restoring backup")),1)]),s("div",Qa,[s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:a,value:r(e)("backup now")},null,8,Xa),s("input",{type:"file",name:"file",accept:".tar, .gz",hidden:"",onChange:o,ref_key:"upl",ref:n},null,544),s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:u,value:r(e)("restore backup")},null,8,ja)])])])])]))}};var to=E(eo,[["__scopeId","data-v-0f5d170b"]]);const no={class:"local"},ao={class:"local-container"},oo={class:"model"},so={class:"local-container1"},ro={class:"container1-center"},lo={class:"local-tit"},co={class:"local-device"},io={class:"local-input"},uo={value:"",disabled:""},po=["value"],_o={value:"-"},ho=["onKeyup","placeholder"],go={key:2,class:"local-btn"},fo=["value"],vo=["value"],mo={key:0,class:"device-list"},wo=["value"],bo=["value"],$o={setup(t){const{$gettext:e}=R(),n=e("backup now backs up installed software (unlimited installation sources) to external storage"),a=S([]),o=S("-");let l="-";const u=S(!1),i=S([]),c=S(""),h=S(""),y=S(),k=(v,$)=>{if(!($===""||$==="-"||v.find(w=>w.path===$))){let w;v.filter(x=>x.mount&&x.dev&&$.startsWith(x.mount)).forEach(x=>{w&&w.mount.length>x.mount.length||(w=x)}),v.push({path:$,size:w?w.size:void 0})}a.value=v,$!=="-"&&(o.value=$,D())};o.value=="-"&&(T.localBackupdirPath().then(v=>{if(v){const{code:$,msg:w}=v;$==200&&k(a.value,w)}}),T.getBlockDevices().then(v=>{if(v&&v.code==200){const $=v.data,w=[];for(let x in $){const F=$[x];F.mount&&F.mount!="/"&&F.mount!="/rom"&&F.mount!="/overlay"&&w.push(F)}w.forEach(x=>{x.path=x.mount+"/istore_backup"}),k(w,w.length>0&&o.value==="-"?"":o.value)}}));const D=v=>{u.value=!1,o.value==="-"?(l!="-"&&(h.value=l),y.value.focus()):l=o.value},V=v=>{h.value==""?l!="-"?o.value=l:o.value="":h.value.startsWith("/")?k(a.value,h.value):(M(e("please enter the path, give up the input, please clear the input box")),y.value.setSelectionRange(0,h.value.length),y.value.focus())},b=()=>o.value.length>1&&o.value.endsWith("/")?o.value.substring(0,o.value.length-1):o.value,p=()=>{let v=b();if(v==""){M(e("please fill in the external storage directory"));return}u.value=!1,T.backupFileList(v).then($=>{if($){const{code:w,msg:x}=$;if(w==200){let F=JSON.parse(x);F.length==0?(M(e("there are no backup files in this path")),u.value=!1):(i.value=F,u.value=!0);return}throw x||"unknown error"}throw"unknown error"}).catch($=>{M($)})},m=()=>{let v=b();if(v==""){M(e("please fill in the external storage directory"));return}G.Start(`${e("backuping")}...`),T.localBackup(v).then($=>{if($){const{msg:w,code:x,stderr:F}=$;if(x==0){M(e("backup success"));return}else throw x==500?w:F||"unknown error"}throw"unknown error"}).catch($=>{M(`${e("backup fail")}: ${$}`)}).finally(()=>{G.Stop()})},g=v=>o.value.endsWith("/")?o.value+v:o.value+"/"+v,C=()=>{if(c.value===""){M(e("please select a backup file to restore"));return}G.Start(`${e("restoring backup")}...`),T.localRestore(g(c.value)).then(v=>{if(v){const{msg:$,stderr:w,code:x}=v;if(x==0){M(e("the backup was restored success"));return}else throw $||w||"unknown error"}throw"unknown error"}).catch(v=>{M(`${e("the backup was restored fail")}: ${v}`)}).finally(()=>{G.Stop()})};return(v,$)=>(d(),_("div",no,[s("div",ao,[s("div",oo,f(r(e)("explain")),1),s("div",so,[s("div",ro,[s("div",lo,[s("span",null,"\xB7 "+f(r(e)(r(n))),1),s("span",null,"\xB7 "+f(r(e)("no internet required for recovery")),1)]),s("div",co,f(r(e)("external storage directory"))+" \uFF1A ",1),s("div",io,[o.value!="-"?ue((d(),_("select",{key:0,class:"local-input-field",onChange:D,"onUpdate:modelValue":$[0]||($[0]=w=>o.value=w)},[s("option",uo,f(r(e)("choose")),1),(d(!0),_(U,null,K(a.value,(w,x)=>(d(),_("option",{value:w.path,key:x},f(w.path+(w.size?"\uFF08"+w.size+"\uFF09":"")),9,po))),128)),s("option",_o,f(r(e)("customize")),1)],544)),[[ye,o.value,void 0,{trim:!0}]]):ue((d(),_("input",{key:1,class:"local-input-field",onBlur:V,onKeyup:Re(V,["enter"]),placeholder:r(e)("please enter an absolute path starting with %{name}",{name:"/"}),type:"text","onUpdate:modelValue":$[1]||($[1]=w=>h.value=w),ref_key:"user_input",ref:y},null,40,ho)),[[Se,h.value,void 0,{trim:!0}]]),o.value!="-"&&o.value!=""?(d(),_("div",go,[s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:m,value:r(e)("backup now")},null,8,fo),s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:p,value:r(e)("restore backup")},null,8,vo)])):z("",!0)]),u.value?(d(),_("div",mo,[s("div",null,f(r(e)("choose backup file"))+" \uFF1A",1),ue(s("select",{"onUpdate:modelValue":$[2]||($[2]=w=>c.value=w)},[(d(!0),_(U,null,K(i.value,w=>(d(),_("option",{key:w,value:w},f(w),9,wo))),128))],512),[[ye,c.value,void 0,{trim:!0}]]),s("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:C,value:r(e)("restore now")},null,8,bo)])):z("",!0)])])])]))}};var yo=E($o,[["__scopeId","data-v-745c433e"]]);const ko={class:"cbi-map"},xo={class:"cbi-section"},Co={class:"panel-title"},So={class:"cbi-section"},Lo={class:"panel-title"},Ao={class:"cbi-tabmenu"},To={onclick:"false",href:"#"},Eo={onclick:"false",href:"#"},Io={setup(t){const{$gettext:e}=R(),n=S(2);return(a,o)=>(d(),_("div",ko,[s("fieldset",xo,[s("span",Co,f(r(e)("upgrade"))+" iStore",1),N(Ra)]),s("fieldset",So,[s("span",Lo,f(r(e)("app backup")),1),s("ul",Ao,[s("li",{class:j(n.value==2?"cbi-tab":"cbi-tab-disabled"),onClick:o[0]||(o[0]=l=>n.value=2)},[s("a",To,f(r(e)("light backup")),1)],2),s("li",{class:j(n.value==3?"cbi-tab":"cbi-tab-disabled"),onClick:o[1]||(o[1]=l=>n.value=3)},[s("a",Eo,f(r(e)("local backup")),1)],2)]),n.value==2?(d(),X(to,{key:0})):z("",!0),n.value==3?(d(),X(yo,{key:1})):z("",!0)])]))}};var Do=E(Io,[["__scopeId","data-v-1d5c62fe"]]);const Po=Ne({history:Ge(O.BasePage()),routes:[{path:"/",redirect:"/installed"},{path:"/installed",name:"Installed",component:Jn},{path:"/store",name:"Store",component:ba},{path:"/upload",name:"Upload",component:Ta},{path:"/webapps",name:"Webapps",component:Ba},{path:"/maintance",name:"Maintance",component:Do},{path:"/:pathMatch(.*)*",name:"notfound",redirect:"/"}]}),Bo={},Vo={width:"16px",height:"16px",viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Fo=s("path",{d:"M14.9234958,14.5525054 L10.84453,10.4679606 C11.8849284,9.46327833 12.5294813,8.07823887 12.5294813,6.55073066 C12.5294813,3.48989918 9.94358337,1 6.76474066,1 C3.58589795,1 1,3.48989918 1,6.55073066 C1,9.61156213 3.58589795,12.1014613 6.76474066,12.1014613 C8.16008242,12.1014613 9.44067838,11.621191 10.438802,10.8242646 L14.5276502,14.9188536 C14.5814545,14.9730393 14.6533765,15 14.725573,15 C14.7942009,15 14.8625542,14.9754182 14.9158095,14.9262546 C15.025065,14.8250198 15.0283592,14.6577049 14.9234958,14.5525054 Z M6.76474066,11.5728203 C3.8886841,11.5728203 1.54902292,9.32001661 1.54902292,6.55073066 C1.54902292,3.7814447 3.8886841,1.52864101 6.76474066,1.52864101 C9.64079723,1.52864101 11.9804584,3.7814447 11.9804584,6.55073066 C11.9804584,9.32001661 9.64052272,11.5728203 6.76474066,11.5728203 Z",id:"Shape",stroke:"#FFFFFF","stroke-width":"1.3"},null,-1),Mo=[Fo];function zo(t,e,n,a,o,l){return d(),_("svg",Vo,Mo)}var Uo=E(Bo,[["render",zo]]);const Oo={},Ro={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},No=s("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.81814832,10.9090654 L9.43153778,10.9090654 C9.70352269,10.9121048 9.93620458,10.7143252 9.97712277,10.4445109 L10.7297188,5.53628009 C10.7537339,5.3780602 10.7070546,5.2172762 10.602045,5.09651513 C10.4970353,4.97575406 10.3442908,4.9072007 10.1780925,4.90904784 L7.09084687,4.90904784 C6.78960329,4.90904784 6.54539711,4.66484166 6.54539711,4.36359808 L6.54539711,2.18179904 C6.54539711,1.69494967 6.22647822,1.2825878 5.78615711,1.14223013 L3.81814832,5.57024992 L3.81814832,10.9090654 Z M2.7272488,5.99994736 L1.63634928,5.99994736 C1.33510569,5.99994736 1.09089952,6.24415353 1.09089952,6.54539711 L1.09089952,10.3635454 C1.09089952,10.664789 1.33510569,10.9089952 1.63634928,10.9089952 L2.7272488,10.9089952 L2.7272488,5.99994736 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 -1.03028697e-13,11.2672762 -1.03028697e-13,10.3635454 L-1.03028697e-13,6.54539711 C-1.03028697e-13,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFFFFF","fill-rule":"nonzero"},null,-1),Go=[No];function Ho(t,e,n,a,o,l){return d(),_("svg",Ro,Go)}var Ko=E(Oo,[["render",Ho]]);const Wo={},qo={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Zo=s("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 0,11.2672762 0,10.3635454 L0,6.54539711 C0,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFE45A","fill-rule":"nonzero"},null,-1),Yo=[Zo];function Jo(t,e,n,a,o,l){return d(),_("svg",qo,Yo)}var Qo=E(Wo,[["render",Jo]]);const Q=ge(Yt);Q.component("svg-search",Uo);Q.component("svg-star-on",Ko);Q.component("svg-star-off",Qo);const Xo=()=>A(I,null,function*(){yield Ke(Q),Q.use(Po).use(se),Q.mount("#app")});Xo()});export default jo(); +var Ct=Object.defineProperty,St=Object.defineProperties;var At=Object.getOwnPropertyDescriptors;var mt=Object.getOwnPropertySymbols;var Lt=Object.prototype.hasOwnProperty,Tt=Object.prototype.propertyIsEnumerable;var ft=(n,t,e)=>t in n?Ct(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Z=(n,t)=>{for(var e in t||(t={}))Lt.call(t,e)&&ft(n,e,t[e]);if(mt)for(var e of mt(t))Tt.call(t,e)&&ft(n,e,t[e]);return n},st=(n,t)=>St(n,At(t));var It=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var y=(n,t,e)=>new Promise((s,o)=>{var i=c=>{try{l(e.next(c))}catch(v){o(v)}},u=c=>{try{l(e.throw(c))}catch(v){o(v)}},l=c=>c.done?s(c.value):Promise.resolve(c.value).then(i,u);l((e=e.apply(n,t)).next())});import{a as ot,c as Pt,u as O,b as K,d as M,r as J,o as p,e as _,F as E,f as W,g as Q,w as Et,h as r,p as et,i as nt,j as a,t as h,k as D,n as Y,l as U,m as Dt,q as C,s as at,v as wt,x as j,y as bt,z as yt,A as Bt,B as gt,C as Mt,D as Ft,E as Ot,G as Ut}from"./vendor.js?v=3831f804";var Co=It(S=>{const Rt=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const u of i.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function e(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerpolicy&&(i.referrerPolicy=o.referrerpolicy),o.crossorigin==="use-credentials"?i.credentials="include":o.crossorigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=e(o);fetch(o.href,i)}};Rt();const tt={tagMap:{},numberFormat:new Intl.NumberFormat("en",{notation:"compact"})},Vt=n=>y(S,null,function*(){const t=window.vue_lang;new Date().getTime();let e={};try{const i=yield ot({url:window.vue_lang_data,method:"GET"});i.data&&(e=i.data)}catch(i){console.log(i)}const s=Pt({defaultLanguage:t,translations:e,setGlobalProperties:!1,provideDirective:!1,provideComponent:!1});n.use(s);const{$gettext:o}=s;window.$i18n=o,tt.tagMap={net:o("net"),tool:o("tool"),download:o("download"),service:o("service"),multimedia:o("multimedia"),nas:o("nas"),monitor:o("monitor"),system:o("system"),networking:o("networking")};try{tt.numberFormat=new Intl.NumberFormat(t,{notation:"compact"})}catch(i){console.error("Intl.NumberFormat unsupported lang",t,i)}}),kt=n=>tt.tagMap[n]||n,$t=n=>typeof n=="number"?tt.numberFormat.format(n):"?";var A=(n,t)=>{const e=n.__vccOpts||n;for(const[s,o]of t)e[s]=o;return e};const zt=n=>(et("data-v-13251538"),n=n(),nt(),n),Gt={class:"tabs"},Kt=["href","onClick"],Wt={key:0},Nt=zt(()=>a("div",{class:"auto"},null,-1)),Zt={setup(n){const{$gettext:t}=O(),e=K(),s=M(()=>e.state.version),o=M(()=>[{to:"/installed",name:t("installed")},{to:"/store",name:t("all app")},{to:"/upload",name:t("manual install")},{to:"/maintance",name:t("maintain"),up:s.value}]);return(i,u)=>{const l=J("router-link");return p(),_("ul",Gt,[(p(!0),_(E,null,W(r(o),c=>(p(),Q(l,{to:c.to,custom:"",key:c.to},{default:Et(({href:v,navigate:T,isActive:P})=>[a("li",{class:Y(P&&"active cbi-tab")},[a("a",{href:v,onClick:T},h(c.name),9,Kt),c.up?(p(),_("span",Wt)):D("",!0)],2)]),_:2},1032,["to"]))),128)),Nt])}}};var qt=A(Zt,[["__scopeId","data-v-13251538"]]);const Ht={setup(n){return K().dispatch("getData"),(e,s)=>{const o=J("router-view");return p(),_(E,null,[U(qt),U(o)],64)}}},Yt=()=>window.vue_base,Jt=()=>window.istore_api_base||"https://istore.linkease.com",Qt=n=>{if(n)return Dt(n).format("YYYY-MM-DD HH:mm:ss")},Xt=()=>new Date().getTime(),jt=n=>{if(n<1024)return""+n+"KB";let e=1024,s=0;for(let i=n/1024;i>=1024;i/=1024)e*=1024,s++;let o=["M","G","T","P","E"];return(n/100/(e/100)).toFixed(2)+o[s]},te=n=>{if(n==null)return 0;if(n<1e4)return n;let e=parseInt(`${n/1e4}`),s=n%1e4;return`${e}\u4E07${s}`},ee=()=>window.token||"",ne=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.uid)||""},se=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.version)||""},oe=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.arch)||""},ae=()=>"https://www.kooldns.cn/bind";var re=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",BasePage:Yt,ApiBaseURL:Jt,formatDate:Qt,UnixDate:Xt,numberToSize:jt,numberToSum:te,getToken:ee,getDeviceId:ne,getVersion:se,modelArch:oe,getIframeURL:ae}),B=Z({},re);const L=ot.create({});L.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=st(Z({},n.params),{token:B.getToken(),_t:B.UnixDate()}),n),n=>n);L.interceptors.response.use(n=>n,n=>n);const q=ot.create({baseURL:B.ApiBaseURL()});q.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=st(Z({},n.params),{modelArch:B.modelArch(),deviceId:B.getDeviceId(),_t:B.UnixDate()}),n),n=>n);q.interceptors.response.use(n=>n);const ie=()=>new Promise((n,t)=>y(S,null,function*(){try{const e=yield L({method:"GET",url:"/cgi-bin/luci/admin/store/installed"});if(e.status==200){n(e.data);return}t(e.status);return}catch(e){t(e);return}})),le=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/install",params:{package:n}});if(s.status==200){t(s.data);return}e(s.status);return}catch(s){e(s);return}})),ce=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/upgrade",params:{package:n}});if(s.status==200){t(s.data);return}e(s.status);return}catch(s){e(s);return}})),ue=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/remove",params:{package:n}});if(s.status==200){t(s.data);return}e(s.status);return}catch(s){e(s);return}})),pe=()=>new Promise((n,t)=>y(S,null,function*(){try{const e=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/update"});if(e.status==200){n(e.data);return}t(e.status);return}catch(e){t(e);return}})),de=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"GET",url:"/cgi-bin/luci/admin/store/status",params:{package:n}});if(s.status==200){t(s.data);return}e(s.status);return}catch(s){e(s);return}})),_e=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/upload",headers:{"Content-Type":"multipart/form-data"},data:n});if(s.data){t(s.data);return}}catch(s){e(s);return}e("not found soft")})),he=()=>new Promise((n,t)=>y(S,null,function*(){try{const e=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/light_backup"});if(e.status==200){n(e.data);return}t(e.status);return}catch(e){t(e);return}})),ve=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/light_restore",headers:{"Content-Type":"multipart/form-data"},data:n});if(s.data){t(s.data);return}}catch(s){e(s);return}e("not found soft")})),me=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"GET",url:"/cgi-bin/luci/admin/store/get_available_backup_file_list",params:{path:n}});if(s.status==200){t(s==null?void 0:s.data);return}e(s.status);return}catch(s){e(s);return}})),fe=()=>new Promise((n,t)=>y(S,null,function*(){try{const e=yield L({method:"GET",url:"/cgi-bin/luci/admin/store/get_local_backup_dir_path"});if(e.status==200){n(e==null?void 0:e.data);return}t(e.status);return}catch(e){t(e);return}})),ge=(n,t)=>new Promise((e,s)=>y(S,null,function*(){try{const o=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/local_backup",params:{path:n,force:t}});if(o.status==200){e(o==null?void 0:o.data);return}s(o.status);return}catch(o){s(o);return}})),$e=n=>new Promise((t,e)=>y(S,null,function*(){try{const s=yield L({method:"POST",url:"/cgi-bin/luci/admin/store/local_restore",params:{path:n}});if(s.status==200){t(s.data);return}e(s.status);return}catch(s){e(s);return}})),we=()=>new Promise((n,t)=>y(S,null,function*(){try{const e=yield L({method:"GET",url:"/cgi-bin/luci/admin/store/get_block_devices"});if(e.status==200){n(e==null?void 0:e.data);return}t(e.status);return}catch(e){t(e);return}}));var be=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getInstalledApp:ie,installApp:le,upgradeApp:ce,removeApp:ue,updateAppStore:pe,getAppStatus:de,uploadAppIPK:_e,lightBackup:he,lightRestore:ve,backupFileList:me,localBackupdirPath:fe,localBackup:ge,localRestore:$e,getBlockDevices:we});const ye=n=>new Promise((t,e)=>y(S,null,function*(){var s,o,i,u;try{const l=yield q({method:"GET",url:"/api/store/list",params:n});if(((s=l==null?void 0:l.data)==null?void 0:s.success)===0){t((o=l==null?void 0:l.data)==null?void 0:o.result);return}if((i=l==null?void 0:l.data)!=null&&i.message){e((u=l==null?void 0:l.data)==null?void 0:u.message);return}e("error")}catch(l){console.log(l),e(l);return}})),ke=B.ApiBaseURL(),xe=n=>`${ke}${n}`,Ce=()=>new Promise((n,t)=>y(S,null,function*(){var e,s,o,i;try{const u=yield q({method:"GET",url:"/api/store/tags"});if(((e=u==null?void 0:u.data)==null?void 0:e.success)===0){n((s=u==null?void 0:u.data)==null?void 0:s.result);return}if((o=u==null?void 0:u.data)!=null&&o.message){t((i=u==null?void 0:u.data)==null?void 0:i.message);return}t("error")}catch(u){t(u);return}})),Se=n=>new Promise((t,e)=>{q({method:"POST",url:"/api/store/expand",data:{appsId:n||[],deviceId:B.getDeviceId()}}).then(s=>{var o,i,u;if(((o=s.data)==null?void 0:o.success)==0&&((i=s.data)==null?void 0:i.result)){t((u=s.data)==null?void 0:u.result);return}e("not found expand")}).catch(s=>{e(s)})}),Ae=n=>{q({method:"POST",url:"/api/store/download",data:{appId:n,deviceId:B.getDeviceId()}}).then(t=>{var e;((e=t.data)==null?void 0:e.success)!=0})},Le=n=>new Promise((t,e)=>{q({method:"POST",url:"/api/store/star",data:{appId:n,deviceId:B.getDeviceId()}}).then(s=>{var o;if(((o=s.data)==null?void 0:o.success)==0){t(s.data);return}e("not found expand")}).catch(s=>{e(s)})});var Te=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getStoreAppList:ye,getStoreAppIcon:xe,getStoreTags:Ce,getAppExpandData:Se,increasingDownloadCount:Ae,postStarApp:Le});const Ie=()=>L({method:"GET",url:"/cgi-bin/luci/admin/store/check_self_upgrade"}),Pe=()=>L({method:"POST",url:"/cgi-bin/luci/admin/store/do_self_upgrade"});var Ee=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",updateIstore:Ie,selfUpdateIstore:Pe}),k=Z(Z(Z({},be),Te),Ee);const De={class:"toast"},Be=["title"],Me={key:1,class:"msg"},Fe=["innerHTML"],Oe={props:{content:String,type:String,Close:Function,keep:Boolean,html:Boolean},setup(n){const t=n,e=C(t.content),s=C(t.keep),o=C(t.html),i=C(window.$i18n);t.keep||setTimeout(()=>{t.Close()},2e3);const u=()=>{t.Close()};return(l,c)=>(p(),_("div",De,[s.value?(p(),_("div",{key:0,class:"toast-close",onClick:u,title:i.value("closed")},"x",8,Be)):D("",!0),o.value?D("",!0):(p(),_("div",Me,h(e.value),1)),o.value?(p(),_("div",{key:2,class:"msg",innerHTML:e.value},null,8,Fe)):D("",!0)]))}};var Ue=A(Oe,[["__scopeId","data-v-b05f92bc"]]);const b=n=>{let t={content:"",type:"",keep:!1,html:!1,Close:()=>{s.unmount(e),document.body.removeChild(e)}};n!=null&&(typeof n=="object"?(t.content=(n==null?void 0:n.content)||"",t.type=(n==null?void 0:n.type)||"",t.keep=(n==null?void 0:n.keep)||!1,t.html=(n==null?void 0:n.html)||!1):t.content=n);let e=document.createElement("div"),s=at(Ue,t);document.body.append(e),s.mount(e),wt(()=>{s.unmount(e),document.body.removeChild(e)})},Re={props:{content:String,Close:Function},setup(n){return{message:n.content}}},Ve=n=>(et("data-v-6d7664a4"),n=n(),nt(),n),ze={class:"loading"},Ge=Ve(()=>a("div",{class:"icon"},null,-1)),Ke={class:"msg"};function We(n,t,e,s,o,i){return p(),_("div",ze,[Ge,a("div",Ke,h(s.message),1)])}var Ne=A(Re,[["render",We],["__scopeId","data-v-6d7664a4"]]),R={props:{content:"",Close:()=>{}},Start(n){this.props={content:n,Close:()=>{t.unmount(e),document.body.removeChild(e)}};let t=at(Ne,this.props),e=document.createElement("div");document.body.append(e),t.mount(e),wt(()=>{this.props.Close()})},Stop(){this.props.Close()}};const X=n=>(et("data-v-1597f180"),n=n(),nt(),n),Ze={class:"app-container"},qe={class:"app-info"},He={class:"app-f"},Ye={class:"app-icon"},Je=["alt","src"],Qe={class:"app-tags"},Xe={class:"tag"},je=X(()=>a("span",{class:"block"},"\uFF5C",-1)),tn={class:"app-r"},en=["title"],nn={class:"app-name"},sn={class:"app-version"},on={class:"app-as"},an=X(()=>a("span",{style:{margin:"0 10px"}},"|",-1)),rn=["title"],ln=["title"],cn=["title"],un={class:"app-author"},pn={class:"app-date"},dn={class:"app-btns"},_n=["href"],hn=X(()=>a("div",{class:"auto"},null,-1)),vn=X(()=>a("div",{class:"app-margin-left"},null,-1)),mn=["href"],fn=X(()=>a("div",{class:"app-margin-left"},null,-1)),gn={props:{col:{type:Object,default(){return{description:"",tags:[],entry:"",author:"",depends:[],installed:!1,hasupdate:!1,title:"",time:"",release:1,website:"",name:"",version:""}}}},setup(n){const t=n,{$gettext:e,$ngettext:s}=O(),o=M(()=>t.col),i=K(),u=B.formatDate,l=d=>{k.upgradeApp(d).then(g=>{let I=g.stderr;g.code!==0?b({content:`${I} +${e("update failed with error code")}: ${g.code}`,keep:!0}):window.istore_log(!0)}).catch(g=>{b({content:`${e("update failed with error code")}: ${500}`,keep:!0})})},c=d=>{k.installApp(d).then(g=>{let I=g.stderr;g.code!==0?b({content:`${I} +${e("installation failed, error code")}: ${g.code}`,keep:!0}):(k.increasingDownloadCount(d),i.dispatch("apps/incrAppDownload",{name:d}),window.istore_log(!0))}).catch(g=>{b({content:`${e("installation failed, error code")}: ${500}`,keep:!0})})},v=d=>{!confirm(e("are you sure you want to uninstall %{name}?",{name:d}))||k.removeApp(d).then(I=>{let G=I.stderr;I.code!==0?b({content:`${G} +${e("uninstall failed, error code")}: ${I.code}`,keep:!0}):window.istore_log(!0)}).catch(I=>{b({content:`${e("uninstall failed, error code")}: ${500}`,keep:!0})})},T=d=>y(this,null,function*(){R.Start();try{(yield k.postStarApp(d))&&i.dispatch("apps/incrAppStar",{name:d})}catch(g){}R.Stop()}),P=()=>{b(e("you have already liked"))},V=d=>o.value.installed?`/luci-static/resources/app-icons/${d}.png`:o.value.icon?k.getStoreAppIcon(o.value.icon):`/luci-static/resources/app-icons/${d}.png`,z=d=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return d.title}return d.title_en||d.title},$=d=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return d.description}return d.description_en||d.description};return(d,g)=>{var w,f,m,x,F,rt,it,lt,ct,ut,pt,dt,_t,ht,vt;const I=J("svg-star-off"),G=J("svg-star-on");return p(),_("div",Ze,[a("div",qe,[a("div",He,[a("div",Ye,[a("img",{alt:r(e)("Icon is gone")+"~",src:V(r(o).name)},null,8,Je)]),a("div",Qe,[(p(!0),_(E,null,W(r(o).tags,N=>(p(),_(E,{key:N},[a("div",Xe,[a("span",null,h(r(kt)(N)),1)]),je],64))),128))])]),a("div",tn,[a("div",{class:"app-title",title:r(o).name},[a("span",nn,h(z(r(o))),1),a("span",sn,"v"+h(r(o).version),1)],8,en),a("div",on,[a("span",null,h(r(s)("%{ num } download","%{ num } downloads",((f=(w=r(o))==null?void 0:w.expand)==null?void 0:f.downloadCount)||0,{num:r($t)((x=(m=r(o))==null?void 0:m.expand)==null?void 0:x.downloadCount)})),1),an,a("span",null,h(r(s)("%{ num } like","%{ num } likes",((rt=(F=r(o))==null?void 0:F.expand)==null?void 0:rt.starCount)||0,{num:r($t)((lt=(it=r(o))==null?void 0:it.expand)==null?void 0:lt.starCount)})),1),((ct=r(o))==null?void 0:ct.expand)!=null?(p(),_(E,{key:0},[(pt=(ut=r(o))==null?void 0:ut.expand)!=null&&pt.isStar?(p(),_("a",{key:0,class:"star-btn",title:r(e)("liked"),onClick:g[0]||(g[0]=N=>P())},[U(I)],8,rn)):(p(),_("a",{key:1,class:"star-btn",title:r(e)("like"),onClick:g[1]||(g[1]=N=>T(r(o).name))},[U(G)],8,ln))],64)):D("",!0)]),a("div",{class:"app-description cbi-value-description",title:$(r(o))},[a("span",null,h($(r(o))),1)],8,cn),a("div",un,[a("span",null,h(r(e)("author"))+": "+h(r(o).author||"null"),1)]),a("div",pn,[a("span",null,h(r(e)("update date"))+": "+h(r(u)(r(o).time*1e3)||"null"),1)])])]),a("div",dn,[r(o).website?(p(),_("a",{key:0,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(o).website},h(r(e)("website")),9,_n)):D("",!0),hn,r(o).installed?(p(),_(E,{key:1},[((dt=r(o))==null?void 0:dt.curVersion)!=((_t=r(o))==null?void 0:_t.lastVersion)||((ht=r(o))==null?void 0:ht.curRelease)!=((vt=r(o))==null?void 0:vt.lastRelease)?(p(),_("a",{key:0,class:"app-btn cbi-button cbi-button-reload",onClick:g[2]||(g[2]=N=>l(r(o).name))},h(r(e)("upgrade")),1)):D("",!0),vn,r(o).entry?(p(),_("a",{key:1,class:"app-btn cbi-button cbi-button-apply",href:r(o).entry},h(r(e)("open")),9,mn)):D("",!0),fn,a("a",{class:"app-btn cbi-button cbi-button-remove",onClick:g[3]||(g[3]=N=>v(r(o).name))},h(r(e)("uninstall")),1)],64)):(p(),_("a",{key:2,class:"app-btn cbi-button cbi-button-add",onClick:g[4]||(g[4]=N=>c(r(o).name))},h(r(e)("install")),1))])])}}};var xt=A(gn,[["__scopeId","data-v-1597f180"]]);const $n={class:"cbi-section"},wn={class:"containers"},bn={setup(n){const t=K(),e=M(()=>t.getters["apps/LocalApps"]);return(s,o)=>(p(),_("fieldset",$n,[a("div",wn,[(p(!0),_(E,null,W(r(e),i=>(p(),Q(xt,{key:i.name,col:i},null,8,["col"]))),128))])]))}};var yn=A(bn,[["__scopeId","data-v-0046e0f2"]]);const kn={class:"sort-container"},xn={class:"sort-title"},Cn={class:"sort-value"},Sn=["value","onClick"],An={setup(n){const{$gettext:t}=O(),e=C("default"),s=K(),o=C([{key:t("default"),value:"default"},{key:t("By download"),value:"download"},{key:t("By rating"),value:"star"}]),i=u=>{e.value=u,s.dispatch("apps/filterCurApps",{sort:u})};return(u,l)=>(p(),_("div",kn,[a("div",xn,h(r(t)("order"))+":",1),a("div",Cn,[(p(!0),_(E,null,W(o.value,c=>(p(),_("input",{key:c.value,class:Y(["cbi-button",{"cbi-button-apply":e.value==c.value}]),type:"button",value:c.key,onClick:v=>i(c.value)},null,10,Sn))),128))])]))}};var Ln=A(An,[["__scopeId","data-v-e3845a5c"]]);const Tn={class:"tags-container"},In={class:"tags-title"},Pn={class:"tags-value"},En=["value"],Dn=["value","onClick"],Bn={setup(n){const{$gettext:t}=O(),e=C("default"),s=K(),o=M(()=>s.getters["tags/Tags"]),i=u=>{e.value=u,s.dispatch("apps/filterCurApps",{tag:u})};return(u,l)=>(p(),_("div",Tn,[a("div",In,h(r(t)("tag"))+": ",1),a("div",Pn,[a("input",{class:Y(["cbi-button",{"cbi-button-apply":e.value=="default"}]),type:"button",value:r(t)("default"),onClick:l[0]||(l[0]=c=>i("default"))},null,10,En),(p(!0),_(E,null,W(r(o),c=>(p(),_("input",{key:c,class:Y(["cbi-button",{"cbi-button-apply":e.value==c}]),type:"button",value:r(kt)(c),onClick:v=>i(c)},null,10,Dn))),128))])]))}};var Mn=A(Bn,[["__scopeId","data-v-07bccc36"]]);const Fn=["onSubmit"],On=["placeholder"],Un={setup(n){const{$gettext:t}=O(),e=C(""),s=K(),o=()=>{s.dispatch("apps/filterCurApps",{search:e.value})};return(i,u)=>{const l=J("svg-search");return p(),_("form",{class:"search",onSubmit:yt(o,["prevent"])},[a("a",{class:"search-btn",onClick:o},[U(l)]),j(a("input",{type:"text",placeholder:r(t)("please enter the search keyword"),"onUpdate:modelValue":u[0]||(u[0]=c=>e.value=c)},null,8,On),[[bt,e.value,void 0,{trim:!0}]])],40,Fn)}}};var Rn=A(Un,[["__scopeId","data-v-c4e8a9f2"]]);const Vn={class:"containers"},zn={key:1,style:{margin:"10px 0","text-align":"center",width:"100%"}},Gn={setup(n){const{$gettext:t}=O(),e=K(),s=M(()=>e.getters["apps/StoreApps"]),o=M(()=>e.state.apps.Load);return(i,u)=>(p(),_("div",Vn,[r(o)?(p(!0),_(E,{key:0},W(r(s),l=>(p(),Q(xt,{key:l.name,col:l},null,8,["col"]))),128)):(p(),_("span",zn,h(r(t)("loading data"))+"...",1))]))}};var Kn=A(Gn,[["__scopeId","data-v-1b494368"]]);const Wn={class:"cbi-section"},Nn={setup(n){return(t,e)=>(p(),_("fieldset",Wn,[U(Rn),U(Mn),U(Ln),U(Kn)]))}};var Zn=A(Nn,[["__scopeId","data-v-74b0669f"]]);const qn=n=>(et("data-v-ae2fc4f4"),n=n(),nt(),n),Hn={class:"cbi-section"},Yn={class:"container_msg cbi-map-descr"},Jn=["onSubmit"],Qn={class:"upload-file"},Xn={class:"button"},jn=qn(()=>a("div",{class:"auto"},null,-1)),ts={setup(n){const{$gettext:t}=O(),e=C(null),s=C(null);Bt(()=>{if(e.value){const l=e.value;l.addEventListener("dragenter",c=>{(c.fromElement===null||!l.contains(c.fromElement))&&console.log("dragenter")},!1),l.addEventListener("dragleave",c=>{(c.fromElement===null||!l.contains(c.fromElement))&&console.log("dragleave")},!1),l.addEventListener("dragover",c=>{c.preventDefault(),c.dataTransfer.dropEffect="link"},!1),l.addEventListener("drop",c=>{console.log("drop"),c.preventDefault(),o(c)},!1)}});const o=l=>{const c=l.dataTransfer.files;if(c&&c.length>0){const v=c[0];u(v);return}},i=l=>{const c=l.target.files;if(c&&c.length>0){const v=c[0];u(v);return}},u=l=>{if(l.name.endsWith(".run")||l.name.endsWith(".ipk")){let c=new FormData;c.append(l.name,l),R.Start(`${t("uploading")}...`),k.uploadAppIPK(c).then(v=>{let T=v.stderr;v.code!==0?Toast({content:`${T} +${t("offline installation failed with error code")}: ${v.code}`,keep:!0}):window.istore_log(!0)}).catch(v=>{Toast({content:`${t("offline installation failed with error code")}: ${500}`,keep:!0})}).finally(()=>{R.Stop()})}};return(l,c)=>{var v;return p(),_("fieldset",Hn,[a("div",Yn,[a("span",null,h(r(t)("offline install")),1),a("span",null,"\xB7 "+h(r(t)("from this page, you can upload plugin packages to install plugins")),1),a("span",null,"\xB7 "+h(r(t)("support .ipk plug-in, .run self-extracting format")),1)]),a("form",{onSubmit:yt(u,["prevent"])},[a("div",{class:"flex",ref_key:"upl",ref:e},[a("label",Qn,[a("span",null,h(((v=s.value)==null?void 0:v.name)||r(t)("no files selected")),1),a("input",{type:"file",name:"file",accept:".ipk, .run",hidden:"",onChange:i},null,32),a("div",Xn,h(r(t)("select or drag and drop files")),1)]),jn],512)],40,Jn)])}}};var es=A(ts,[["__scopeId","data-v-ae2fc4f4"]]);const ns={class:"cbi-section"},ss={class:"webapp-container"},os=["src"],as={setup(n){const t=M(()=>""),e=M(()=>""),s=M(()=>`${B.getIframeURL()}/#/apps?token=${e.value}&deviceId=${t.value}`);return(o,i)=>(p(),_("fieldset",ns,[a("div",ss,[a("iframe",{src:r(s),sandbox:"allow-scripts allow-same-origin allow-popups",seamless:""},null,8,os)])]))}};var rs=A(as,[["__scopeId","data-v-8e330954"]]);const is={class:"log-containers"},ls={key:0,class:"containers-tit"},cs={key:1,class:"containers-tit"},us=["value"],ps={key:1},ds={setup(n){const{$gettext:t}=O(),e=K(),s=M(()=>e.state.version),o=M(()=>e.state.versionLoad),i=()=>{R.Start(`${t("updateing")}...`),k.selfUpdateIstore().then(({data:u})=>{if(u){const{stdout:l,stderr:c,code:v}=u;if(v==0){b({content:`${t("update success, reloading")}...`,keep:!0}),e.dispatch("istoreUpdated"),setTimeout(()=>{location.href=location.href},1e3);return}else throw c||"unknown error"}throw"unknown error"}).catch(u=>{b(`${t("update error")}: ${u}`)}).finally(()=>{R.Stop()})};return(u,l)=>(p(),_("div",is,[r(o)?(p(),_("div",cs,[r(s)?(p(),_(E,{key:0},[a("span",null,h(r(t)("last version"))+":"+h(r(s)),1),a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:l[0]||(l[0]=c=>i()),value:r(t)("click to update")},null,8,us)],64)):(p(),_("span",ps,h(r(t)("the is last version"))+"...",1))])):(p(),_("div",ls,h(r(t)("checking for latest version")),1))]))}};var _s=A(ds,[["__scopeId","data-v-8ac6e0ca"]]);const hs={class:"Lightweight"},vs={class:"Lightweight-container"},ms={class:"model"},fs={class:"Lightweight-container1"},gs={class:"container1-center"},$s={class:"Lightweight-tit"},ws={class:"Lightweight-backup"},bs=["value"],ys=["value"],ks={setup(n){const{$gettext:t}=O(),e=C(null),s=()=>{const l=t("backuping"),c=t("backup success"),v=t("backup fail"),T=t("click to download");R.Start(`${l}...`),k.lightBackup().then(P=>{if(P){const{msg:V,code:z}=P;if(z==200){b({content:`${c}\uFF0C${T}

`,keep:!0,html:!0});return}else throw V||"unknown error"}throw"unknown error"}).catch(P=>{b(`${v} : ${P}`)}).finally(()=>{R.Stop()})},o=l=>{const c=l.target.files;if(c&&c.length>0){const v=c[0];i(v);return}},i=l=>{let c=new FormData;c.append(l.name,l),R.Start(`${t("uploading")}...`),k.lightRestore(c).then(v=>{let T=v.stderr;v.code!==0?b({content:`${T} +${t("restore failed with error code")}: ${v.code}`,keep:!0}):window.istore_log(!0)}).catch(v=>{b({content:`${t("restore failed with error code")}: ${500}`,keep:!0})}).finally(()=>{R.Stop()})},u=l=>{e.value.click(l),l.preventDefault()};return(l,c)=>(p(),_("div",hs,[a("div",vs,[a("div",ms,h(r(t)("explain")),1),a("div",fs,[a("div",gs,[a("div",$s,[a("span",null,"\xB7 "+h(r(t)("backup now will download a list of iStore installed software")),1),a("span",null,"\xB7 "+h(r(t)("upload software list and install from iStore when restoring backup")),1)]),a("div",ws,[a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:s,value:r(t)("backup now")},null,8,bs),a("input",{type:"file",name:"file",accept:".tar, .gz",hidden:"",onChange:o,ref_key:"upl",ref:e},null,544),a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:u,value:r(t)("restore backup")},null,8,ys)])])])])]))}};var xs=A(ks,[["__scopeId","data-v-a4c06ae8"]]);const Cs={class:"local"},Ss={class:"local-container"},As={class:"model"},Ls={class:"local-container1"},Ts={class:"container1-center"},Is={class:"local-tit"},Ps={class:"local-device"},Es={class:"local-input"},Ds={value:"",disabled:""},Bs=["value"],Ms={value:"-"},Fs=["onKeyup","placeholder"],Os={key:2,class:"local-btn"},Us=["value"],Rs=["value"],Vs={key:0,class:"device-list"},zs=["value"],Gs=["value"],Ks={setup(n){const{$gettext:t}=O(),e=t("backup now backs up installed software (unlimited installation sources) to external storage"),s=C([]),o=C("-");let i="-";const u=C(!1),l=C([]),c=C(""),v=C(""),T=C(),P=(w,f)=>{if(!(f===""||f==="-"||w.find(m=>m.path===f))){let m;w.filter(x=>x.mount&&x.dev&&f.startsWith(x.mount)).forEach(x=>{m&&m.mount.length>x.mount.length||(m=x)}),w.push({path:f,size:m?m.size:void 0})}s.value=w,f!=="-"&&(o.value=f,V())};o.value=="-"&&(k.localBackupdirPath().then(w=>{if(w){const{code:f,msg:m}=w;f==200&&P(s.value,m)}}),k.getBlockDevices().then(w=>{if(w&&w.code==200){const f=w.data,m=[];for(let x in f){const F=f[x];F.mount&&F.mount!="/"&&F.mount!="/rom"&&F.mount!="/overlay"&&m.push(F)}m.forEach(x=>{x.path=x.mount+"/istore_backup"}),P(m,m.length>0&&o.value==="-"?"":o.value)}}));const V=w=>{u.value=!1,o.value==="-"?(i!="-"&&(v.value=i),T.value.focus()):i=o.value},z=w=>{v.value==""?i!="-"?o.value=i:o.value="":v.value.startsWith("/")?P(s.value,v.value):(b(t("please enter the path, give up the input, please clear the input box")),T.value.setSelectionRange(0,v.value.length),T.value.focus())},$=()=>o.value.length>1&&o.value.endsWith("/")?o.value.substring(0,o.value.length-1):o.value,d=()=>{let w=$();if(w==""){b(t("please fill in the external storage directory"));return}u.value=!1,k.backupFileList(w).then(f=>{if(f){const{code:m,msg:x}=f;if(m==200){let F=JSON.parse(x);F.length==0?(b(t("there are no backup files in this path")),u.value=!1):(l.value=F,u.value=!0);return}throw x||"unknown error"}throw"unknown error"}).catch(f=>{b(f)})},g=()=>{let w=$();if(w==""){b(t("please fill in the external storage directory"));return}k.localBackup(w).then(f=>{let m=f.stderr;f.code!==0?b({content:`${m} +${t("backup fail with error code")}: ${f.code}`,keep:!0}):window.istore_log(!1)}).catch(f=>{b({content:`${t("backup fail with error code")}: ${500}`,keep:!0})})},I=w=>o.value.endsWith("/")?o.value+w:o.value+"/"+w,G=()=>{if(c.value===""){b(t("please select a backup file to restore"));return}k.localRestore(I(c.value)).then(w=>{let f=res.stderr;res.code!==0?b({content:`${f} +${t("restore failed with error code")}: ${res.code}`,keep:!0}):window.istore_log(!0)}).catch(w=>{b({content:`${t("restore failed with error code")}: ${500}`,keep:!0})})};return(w,f)=>(p(),_("div",Cs,[a("div",Ss,[a("div",As,h(r(t)("explain")),1),a("div",Ls,[a("div",Ts,[a("div",Is,[a("span",null,"\xB7 "+h(r(t)(r(e))),1),a("span",null,"\xB7 "+h(r(t)("no internet required for recovery")),1)]),a("div",Ps,h(r(t)("external storage directory"))+" \uFF1A ",1),a("div",Es,[o.value!="-"?j((p(),_("select",{key:0,class:"local-input-field",onChange:V,"onUpdate:modelValue":f[0]||(f[0]=m=>o.value=m)},[a("option",Ds,h(r(t)("choose")),1),(p(!0),_(E,null,W(s.value,(m,x)=>(p(),_("option",{value:m.path,key:x},h(m.path+(m.size?"\uFF08"+m.size+"\uFF09":"")),9,Bs))),128)),a("option",Ms,h(r(t)("customize")),1)],544)),[[gt,o.value,void 0,{trim:!0}]]):j((p(),_("input",{key:1,class:"local-input-field",onBlur:z,onKeyup:Mt(z,["enter"]),placeholder:r(t)("please enter an absolute path starting with %{name}",{name:"/"}),type:"text","onUpdate:modelValue":f[1]||(f[1]=m=>v.value=m),ref_key:"user_input",ref:T},null,40,Fs)),[[bt,v.value,void 0,{trim:!0}]]),o.value!="-"&&o.value!=""?(p(),_("div",Os,[a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:g,value:r(t)("backup now")},null,8,Us),a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:d,value:r(t)("restore backup")},null,8,Rs)])):D("",!0)]),u.value?(p(),_("div",Vs,[a("div",null,h(r(t)("choose backup file"))+" \uFF1A",1),j(a("select",{"onUpdate:modelValue":f[2]||(f[2]=m=>c.value=m)},[(p(!0),_(E,null,W(l.value,m=>(p(),_("option",{key:m,value:m},h(m),9,zs))),128))],512),[[gt,c.value,void 0,{trim:!0}]]),a("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:G,value:r(t)("restore now")},null,8,Gs)])):D("",!0)])])])]))}};var Ws=A(Ks,[["__scopeId","data-v-67b754ac"]]);const Ns=n=>!Array.isArray(window.istore_features)||window.istore_features.indexOf(n)!=-1,Zs={class:"cbi-map"},qs={class:"cbi-section"},Hs={class:"panel-title"},Ys={key:0,class:"cbi-section"},Js={class:"panel-title"},Qs={class:"cbi-tabmenu"},Xs={onclick:"false",href:"#"},js={onclick:"false",href:"#"},to={setup(n){const{$gettext:t}=O(),e=C(2);return(s,o)=>(p(),_("div",Zs,[a("fieldset",qs,[a("span",Hs,h(r(t)("upgrade"))+" iStore",1),U(_s)]),r(Ns)("backup")?(p(),_("fieldset",Ys,[a("span",Js,h(r(t)("app backup")),1),a("ul",Qs,[a("li",{class:Y(e.value==2?"cbi-tab":"cbi-tab-disabled"),onClick:o[0]||(o[0]=i=>e.value=2)},[a("a",Xs,h(r(t)("light backup")),1)],2),a("li",{class:Y(e.value==3?"cbi-tab":"cbi-tab-disabled"),onClick:o[1]||(o[1]=i=>e.value=3)},[a("a",js,h(r(t)("local backup")),1)],2)]),e.value==2?(p(),Q(xs,{key:0})):D("",!0),e.value==3?(p(),Q(Ws,{key:1})):D("",!0)])):D("",!0)]))}},eo=Ft({history:Ot(B.BasePage()),routes:[{path:"/",redirect:"/installed"},{path:"/installed",name:"Installed",component:yn},{path:"/store",name:"Store",component:Zn},{path:"/upload",name:"Upload",component:es},{path:"/webapps",name:"Webapps",component:rs},{path:"/maintance",name:"Maintance",component:to},{path:"/:pathMatch(.*)*",name:"notfound",redirect:"/"}]});var no={namespaced:!0,state:{Load:!1,LocalApps:[],StoreApps:[],Expand:{},Cur:{tag:"default",sort:"default",search:"",limit:30,offset:0},LocalAppsMap:{},StoreAppsMap:{}},mutations:{setExpand(n,t){n.Expand=t},setLocalApps(n,t){n.LocalApps=t||[],t.forEach(e=>{n.LocalAppsMap[e.name]=e})},setStoreApps(n,t){n.StoreApps=t||[],t.forEach(e=>{n.StoreAppsMap[e.name]=e})},setCur(n,t){for(const e in t)Object.hasOwnProperty.call(t,e)&&(n.Cur[e]=t[e])}},getters:{Cur(n){return n.Cur},LocalApps(n){let t=[...n.LocalApps],e=n.Expand;for(let s=0;s{d.tags&&d.tags.forEach(g=>{g==s&&$.push(d)})}),t=$}let o=n.Cur.search;if(o){let $=[];t.forEach(d=>{let g=JSON.stringify(d);new RegExp(o,"i").test(g)&&$.push(d)}),t=$}let i=t.length;switch(n.Cur.sort){case"download":for(let $=0;${e.forEach(s=>{s.installed=!0}),t("setLocalApps",e)})},getStoreApps(n,t){const{state:e,commit:s,dispatch:o}=n;let i=[];k.getStoreAppList(t).then(u=>{u.apps&&(u.apps.forEach(l=>{i.push(l.name)}),o("getStoreAppsExpand",i),s("setStoreApps",u.apps)),e.Load=!0}).catch(u=>{console.log(u)})},getStoreAppsExpand(n,t){const{commit:e}=n;k.getAppExpandData(t).then(s=>{s&&e("setExpand",s)})}}},so={namespaced:!0,state:{Tags:[],Total:0},mutations:{},getters:{Tags(n){return n.Tags},Total(n){return n.Total}},actions:{getTags(n){const{state:t,commit:e}=n;k.getStoreTags().then(s=>{t.Tags=(s==null?void 0:s.tags)||[],t.Total=(s==null?void 0:s.total)||0})}}},oo=Ut({state:{version:"",versionLoad:!1},mutations:{setVersion(n,t){n.version=t},setVersionLoad(n,t){n.versionLoad=t}},modules:{apps:no,tags:so},actions:{getData(n){const{dispatch:t}=n;t("tags/getTags"),t("apps/getApps"),t("getVersion")},getVersion(n){return y(this,null,function*(){const{commit:t}=n;try{const e=yield k.updateIstore(),{code:s,msg:o}=e==null?void 0:e.data;s==200&&t("setVersion",o)}catch(e){console.log(e)}t("setVersionLoad",!0)})},istoreUpdated(n){const{commit:t}=n;t("setVersion","")}}});const ao={},ro={width:"16px",height:"16px",viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},io=a("path",{d:"M14.9234958,14.5525054 L10.84453,10.4679606 C11.8849284,9.46327833 12.5294813,8.07823887 12.5294813,6.55073066 C12.5294813,3.48989918 9.94358337,1 6.76474066,1 C3.58589795,1 1,3.48989918 1,6.55073066 C1,9.61156213 3.58589795,12.1014613 6.76474066,12.1014613 C8.16008242,12.1014613 9.44067838,11.621191 10.438802,10.8242646 L14.5276502,14.9188536 C14.5814545,14.9730393 14.6533765,15 14.725573,15 C14.7942009,15 14.8625542,14.9754182 14.9158095,14.9262546 C15.025065,14.8250198 15.0283592,14.6577049 14.9234958,14.5525054 Z M6.76474066,11.5728203 C3.8886841,11.5728203 1.54902292,9.32001661 1.54902292,6.55073066 C1.54902292,3.7814447 3.8886841,1.52864101 6.76474066,1.52864101 C9.64079723,1.52864101 11.9804584,3.7814447 11.9804584,6.55073066 C11.9804584,9.32001661 9.64052272,11.5728203 6.76474066,11.5728203 Z",id:"Shape",stroke:"#FFFFFF","stroke-width":"1.3"},null,-1),lo=[io];function co(n,t,e,s,o,i){return p(),_("svg",ro,lo)}var uo=A(ao,[["render",co]]);const po={},_o={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},ho=a("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.81814832,10.9090654 L9.43153778,10.9090654 C9.70352269,10.9121048 9.93620458,10.7143252 9.97712277,10.4445109 L10.7297188,5.53628009 C10.7537339,5.3780602 10.7070546,5.2172762 10.602045,5.09651513 C10.4970353,4.97575406 10.3442908,4.9072007 10.1780925,4.90904784 L7.09084687,4.90904784 C6.78960329,4.90904784 6.54539711,4.66484166 6.54539711,4.36359808 L6.54539711,2.18179904 C6.54539711,1.69494967 6.22647822,1.2825878 5.78615711,1.14223013 L3.81814832,5.57024992 L3.81814832,10.9090654 Z M2.7272488,5.99994736 L1.63634928,5.99994736 C1.33510569,5.99994736 1.09089952,6.24415353 1.09089952,6.54539711 L1.09089952,10.3635454 C1.09089952,10.664789 1.33510569,10.9089952 1.63634928,10.9089952 L2.7272488,10.9089952 L2.7272488,5.99994736 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 -1.03028697e-13,11.2672762 -1.03028697e-13,10.3635454 L-1.03028697e-13,6.54539711 C-1.03028697e-13,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFFFFF","fill-rule":"nonzero"},null,-1),vo=[ho];function mo(n,t,e,s,o,i){return p(),_("svg",_o,vo)}var fo=A(po,[["render",mo]]);const go={},$o={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},wo=a("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 0,11.2672762 0,10.3635454 L0,6.54539711 C0,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFE45A","fill-rule":"nonzero"},null,-1),bo=[wo];function yo(n,t,e,s,o,i){return p(),_("svg",$o,bo)}var ko=A(go,[["render",yo]]);const H=at(Ht);H.component("svg-search",uo);H.component("svg-star-on",fo);H.component("svg-star-off",ko);const xo=()=>y(S,null,function*(){yield Vt(H),H.use(eo).use(oo),H.mount("#app")});xo()});export default Co(); diff --git a/app-store-ui/src/dist/luci-static/istore/style.css b/app-store-ui/src/dist/luci-static/istore/style.css index a4d762afc..daaa3a7f3 100644 --- a/app-store-ui/src/dist/luci-static/istore/style.css +++ b/app-store-ui/src/dist/luci-static/istore/style.css @@ -1 +1 @@ -#app *[data-v-13251538]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}li[data-v-13251538]{position:relative}li span[data-v-13251538]{position:absolute;top:5px;right:5px;padding:3px;background-color:#fd1919;border-radius:50%}#app *{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}[lock-scroll=true]{overflow:hidden!important}#app *[data-v-6695545b]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.software-log_shade[data-v-6695545b]{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;position:fixed;inset:0;z-index:99999}.software-log_shade .software-log_shade__bg[data-v-6695545b]{position:fixed;inset:0;background:rgba(68,79,83,.94) none repeat scroll 0 0!important;background-position:0 0;background-size:cover;opacity:.94}.software-log_shade .software-log_shade__pannel[data-v-6695545b]{width:800px;min-width:800px;border-radius:10px;z-index:100;box-shadow:3px 3px 10px #000;background:rgba(0,0,0,.9);padding:10px}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-title[data-v-6695545b]{text-align:center;font-size:18px;color:#9f0;padding:10px;font-weight:700}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-now i[data-v-6695545b]{color:#fc0;font-style:normal}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content[data-v-6695545b]{padding:10px;width:100%;text-align:center;overflow:hidden}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]{width:100%;border:0px solid #222;font-family:Lucida Console;font-size:11px;background:transparent;color:#fff;outline:none;overflow-x:hidden;resize:none;transition:.5s}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]:focus,.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]:hover{box-shadow:none;border-color:#fff0!important}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]::-webkit-scrollbar{width:5px;height:5px}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]::-webkit-scrollbar-thumb{height:30px;outline:none;border:none;border-radius:1rem;background-color:#4c595c;-webkit-border-radius:1rem}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-content textarea[data-v-6695545b]::-webkit-scrollbar-track-piece{background:none;-webkit-border-radius:0;border-radius:0}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-btn[data-v-6695545b]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-btn button[data-v-6695545b]{visibility:visible;min-width:88px;font-weight:bolder;text-shadow:1px 1px 0px black;border-radius:8px;height:33px;font-family:Verdana,Microsoft Yahei UI,sans-serif;font-size:12px;padding:0 .7em;width:auto;min-width:122px;margin:0 10px;cursor:pointer;background:#090a0a!important;border:1px solid #fff!important;color:#fff!important;opacity:1!important}.software-log_shade .software-log_shade__pannel .software-log_shade__pannel-btn button[data-v-6695545b]:hover{opacity:.9!important}#app *[data-v-b05f92bc]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.toast[data-v-b05f92bc]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;width:150px;max-width:70%;min-height:30px;padding:10px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;transform:translate3d(-50%,-50%,0);z-index:9999}.toast .toast-close[data-v-b05f92bc]{cursor:pointer;padding-bottom:36px;right:-61px;position:relative;font-size:20px}#app *[data-v-6d7664a4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@keyframes load-6d7664a4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.loading[data-v-6d7664a4]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;max-width:150px;padding:16px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);z-index:999999}.loading .icon[data-v-6d7664a4]{width:35px;height:35px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:load-6d7664a4 1s linear infinite}.loading .msg[data-v-6d7664a4]{margin-top:10px;color:#fff}.app-container[data-v-42a2bb20]{flex:0 0 100%;max-width:calc(50% - 20px);padding:15px;background:#88888822;border-radius:.375rem;overflow:hidden;margin:10px}.app-container .app-info[data-v-42a2bb20]{display:flex;flex-wrap:wrap;width:100%;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed #999}.app-container .app-info .app-f[data-v-42a2bb20]{flex:0 0 100%;max-width:150px}.app-container .app-info .app-f .app-icon[data-v-42a2bb20]{width:100px;height:100px;margin:0 auto}.app-container .app-info .app-f .app-icon img[data-v-42a2bb20]{max-width:100%}.app-container .app-info .app-f .app-tags[data-v-42a2bb20]{width:100%;display:flex;align-items:center;padding:0 25px}.app-container .app-info .app-f .app-tags .tag[data-v-42a2bb20]{font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:12px;font-size:.8125rem;white-space:nowrap;padding:.5rem}.app-container .app-info .app-f .app-tags .block[data-v-42a2bb20]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin:0 2px}.app-container .app-info .app-f .app-tags .block[data-v-42a2bb20]:last-child{display:none}.app-container .app-info .app-r[data-v-42a2bb20]{flex:0 0 100%;max-width:calc(100% - 150px);padding:0 15px}.app-container .app-info .app-r .app-title[data-v-42a2bb20]{width:100%;margin-bottom:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:26px;padding-top:12px}.app-container .app-info .app-r .app-title .app-version[data-v-42a2bb20]{margin-left:10px;font-size:.8125rem}.app-container .app-info .app-r .app-as[data-v-42a2bb20]{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:10px}.app-container .app-info .app-r .app-as .star-btn[data-v-42a2bb20]{padding:0;margin:0 0 0 10px;width:30px;border:none!important;cursor:pointer;background:none;box-shadow:none}.app-container .app-info .app-r .app-as .star-btn[data-v-42a2bb20] svg path{fill:currentColor}.app-container .app-info .app-r .app-as .star-btn[data-v-42a2bb20]:hover svg path{filter:invert(.6)}.app-container .app-info .app-r .app-description[data-v-42a2bb20]{font-size:12px;height:36px;line-height:18px;margin-bottom:10px;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;padding:0}.app-container .app-info .app-r .app-description span[data-v-42a2bb20]{-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box}.app-container .app-info .app-r .app-author[data-v-42a2bb20],.app-container .app-info .app-r .app-date[data-v-42a2bb20]{width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-container .app-btns[data-v-42a2bb20]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end}.app-container .app-btns .auto[data-v-42a2bb20]{flex:auto}.app-container .app-btns .app-margin-left[data-v-42a2bb20]{margin:0 5px}.app-container .app-btns .app-btn[data-v-42a2bb20]{padding-top:5px;padding-bottom:5px;text-decoration:none}#app *[data-v-42a2bb20]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@media screen and (max-width: 768px){.app-container[data-v-42a2bb20]{max-width:100%;margin:10px 0}}#app *[data-v-0046e0f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-0046e0f2]{padding:15px}.cbi-section .containers[data-v-0046e0f2]{width:100%;height:100%;display:flex;flex-wrap:wrap}#app *[data-v-e3845a5c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.sort-container[data-v-e3845a5c]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.sort-container .sort-title[data-v-e3845a5c]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.sort-container .sort-value[data-v-e3845a5c]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.sort-container .sort-value .cbi-button[data-v-e3845a5c]{margin-right:5px}#app *[data-v-07bccc36]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.tags-container[data-v-07bccc36]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.tags-container .tags-title[data-v-07bccc36]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.tags-container .tags-value[data-v-07bccc36]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.tags-container .tags-value .cbi-button[data-v-07bccc36]{margin-right:5px}#app *[data-v-c4e8a9f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}form.search[data-v-c4e8a9f2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px;position:relative}form.search input[data-v-c4e8a9f2]{width:100%;height:36px;border-radius:19px;padding:0 40px}form.search .search-btn[data-v-c4e8a9f2]{position:absolute;left:20px;border:none!important;box-shadow:none!important;background:none!important;cursor:pointer;z-index:10;display:flex;flex-wrap:wrap;align-items:center;width:30px;padding:0;margin:0}form.search .search-btn[data-v-c4e8a9f2] svg path{stroke:currentColor}#app *[data-v-1b494368]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.containers[data-v-1b494368]{width:100%;height:100%;display:flex;flex-wrap:wrap}#app *[data-v-74b0669f]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-74b0669f]{padding:15px}.cbi-section[data-v-74b0669f] .cbi-value{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px}#app *[data-v-49941f68]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-49941f68]{padding:15px}.cbi-section .container_msg span[data-v-49941f68]{display:block;width:100%;margin-bottom:5px}.cbi-section form[data-v-49941f68]{width:100%;margin:30px 0}.cbi-section form .flex[data-v-49941f68]{width:100%;display:flex;flex-wrap:wrap;align-items:center}.cbi-section form .flex label.upload-file[data-v-49941f68]{width:100%;height:54px;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 20px;cursor:pointer}.cbi-section form .flex label.upload-file span[data-v-49941f68]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;line-height:22px}.cbi-section form .flex label.upload-file .button[data-v-49941f68]{min-width:116px;padding:0 10px;height:38px;background:rgba(255,255,255,.2);border-radius:6px;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.cbi-section form .flex label.upload-file input[data-v-49941f68]{visibility:hidden}.cbi-section form .flex label.upload-file[data-v-49941f68]:hover{opacity:.9}.cbi-section form button.upload-button[data-v-49941f68]{width:118px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:10px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#fff}.cbi-section form button.upload-button[data-v-49941f68]:hover{opacity:.9}#app *[data-v-8e330954]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-8e330954]{width:100%;min-height:400px;display:block;background:rgba(0,0,0,.9)}.cbi-section .webapp-container[data-v-8e330954]{width:100%;height:100%;min-height:inherit}.cbi-section .webapp-container iframe[data-v-8e330954]{width:100%;height:100%;min-height:inherit;border:none}#app *[data-v-8f2ad39a]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-8f2ad39a]{display:flex;flex-wrap:wrap}.log-containers .model[data-v-8f2ad39a]{width:100%;flex:0 0 100%;display:block;margin-left:18px;margin-top:18px}.log-containers .containers-tit[data-v-8f2ad39a]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}.log-containers .containers-tit .app-btn[data-v-8f2ad39a]{margin-left:3rem}em[data-v-8f2ad39a]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-0f5d170b]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.Lightweight[data-v-0f5d170b]{margin-top:20px;margin-left:18px}.Lightweight .Lightweight-container .model[data-v-0f5d170b]{margin-bottom:10px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit[data-v-0f5d170b]{margin-bottom:20px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit span[data-v-0f5d170b]{display:block;line-height:24px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup[data-v-0f5d170b]{display:flex}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup .app-btn[data-v-0f5d170b]{margin-left:14px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .upload-file[data-v-0f5d170b]{color:#000}input[hidden][data-v-0f5d170b]{display:none!important}#app *[data-v-745c433e]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.local[data-v-745c433e]{margin-top:20px}.local .local-container[data-v-745c433e]{margin-left:18px}.local .local-container .model[data-v-745c433e]{margin-bottom:10px}.local .local-container .local-container1[data-v-745c433e]{width:800px;height:400px}.local .local-container .local-container1 .container1-center[data-v-745c433e]{text-align:left}.local .local-container .local-container1 .container1-center .local-tit span[data-v-745c433e]{display:block;line-height:24px}.local .local-container .local-container1 .container1-center .local-device[data-v-745c433e]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .local-input[data-v-745c433e]{display:flex;align-items:center}.local .local-container .local-container1 .container1-center .local-input .app-btn[data-v-745c433e]{margin-left:14px}.local .local-container .local-container1 .container1-center .local-input .local-input-field[data-v-745c433e]{width:20rem}.local .local-container .local-container1 .container1-center .list[data-v-745c433e]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .select[data-v-745c433e]{flex:0 0 100%;max-width:100%}#app *[data-v-1d5c62fe]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-1d5c62fe]{width:100%;overflow:auto;margin-top:20px}.log-containers .model[data-v-1d5c62fe]{margin-top:18px;margin-bottom:10px}.log-containers .app-btn[data-v-1d5c62fe]{height:30px;line-height:30px}.log-containers .tabs[data-v-1d5c62fe]{padding-left:0}.log-containers textarea[data-v-1d5c62fe]{font-family:Lucida Console;font-size:14px;outline:none;width:100%;margin:0;resize:none;border-radius:.8rem;padding:15px} +#app *[data-v-13251538]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}li[data-v-13251538]{position:relative}li span[data-v-13251538]{position:absolute;top:5px;right:5px;padding:3px;background-color:#fd1919;border-radius:50%}#app *[data-v-b05f92bc]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.toast[data-v-b05f92bc]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;width:150px;max-width:70%;min-height:30px;padding:10px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;transform:translate3d(-50%,-50%,0);z-index:9999}.toast .toast-close[data-v-b05f92bc]{cursor:pointer;padding-bottom:36px;right:-61px;position:relative;font-size:20px}#app *[data-v-6d7664a4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@keyframes load-6d7664a4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.loading[data-v-6d7664a4]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;max-width:150px;padding:16px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);z-index:999999}.loading .icon[data-v-6d7664a4]{width:35px;height:35px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:load-6d7664a4 1s linear infinite}.loading .msg[data-v-6d7664a4]{margin-top:10px;color:#fff}.app-container[data-v-1597f180]{flex:0 0 100%;max-width:calc(50% - 20px);padding:15px;background:#88888822;border-radius:.375rem;overflow:hidden;margin:10px}.app-container .app-info[data-v-1597f180]{display:flex;flex-wrap:wrap;width:100%;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed #999}.app-container .app-info .app-f[data-v-1597f180]{flex:0 0 100%;max-width:150px}.app-container .app-info .app-f .app-icon[data-v-1597f180]{width:100px;height:100px;margin:0 auto}.app-container .app-info .app-f .app-icon img[data-v-1597f180]{max-width:100%}.app-container .app-info .app-f .app-tags[data-v-1597f180]{width:100%;display:flex;align-items:center;padding:0 25px}.app-container .app-info .app-f .app-tags .tag[data-v-1597f180]{font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:12px;font-size:.8125rem;white-space:nowrap;padding:.5rem}.app-container .app-info .app-f .app-tags .block[data-v-1597f180]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin:0 2px}.app-container .app-info .app-f .app-tags .block[data-v-1597f180]:last-child{display:none}.app-container .app-info .app-r[data-v-1597f180]{flex:0 0 100%;max-width:calc(100% - 150px);padding:0 15px}.app-container .app-info .app-r .app-title[data-v-1597f180]{width:100%;margin-bottom:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:26px;padding-top:12px}.app-container .app-info .app-r .app-title .app-version[data-v-1597f180]{margin-left:10px;font-size:.8125rem}.app-container .app-info .app-r .app-as[data-v-1597f180]{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:10px}.app-container .app-info .app-r .app-as .star-btn[data-v-1597f180]{padding:0;margin:0 0 0 10px;width:30px;border:none!important;cursor:pointer;background:none;box-shadow:none}.app-container .app-info .app-r .app-as .star-btn[data-v-1597f180] svg path{fill:currentColor}.app-container .app-info .app-r .app-as .star-btn[data-v-1597f180]:hover svg path{filter:invert(.6)}.app-container .app-info .app-r .app-description[data-v-1597f180]{font-size:12px;height:36px;line-height:18px;margin-bottom:10px;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;padding:0}.app-container .app-info .app-r .app-description span[data-v-1597f180]{-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box}.app-container .app-info .app-r .app-author[data-v-1597f180],.app-container .app-info .app-r .app-date[data-v-1597f180]{width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-container .app-btns[data-v-1597f180]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end}.app-container .app-btns .auto[data-v-1597f180]{flex:auto}.app-container .app-btns .app-margin-left[data-v-1597f180]{margin:0 5px}.app-container .app-btns .app-btn[data-v-1597f180]{padding-top:5px;padding-bottom:5px;text-decoration:none}#app *[data-v-1597f180]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@media screen and (max-width: 768px){.app-container[data-v-1597f180]{max-width:100%;margin:10px 0}}#app *[data-v-0046e0f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-0046e0f2]{padding:15px}.cbi-section .containers[data-v-0046e0f2]{width:100%;height:100%;display:flex;flex-wrap:wrap}#app *[data-v-e3845a5c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.sort-container[data-v-e3845a5c]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.sort-container .sort-title[data-v-e3845a5c]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.sort-container .sort-value[data-v-e3845a5c]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.sort-container .sort-value .cbi-button[data-v-e3845a5c]{margin-right:5px}#app *[data-v-07bccc36]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.tags-container[data-v-07bccc36]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.tags-container .tags-title[data-v-07bccc36]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.tags-container .tags-value[data-v-07bccc36]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.tags-container .tags-value .cbi-button[data-v-07bccc36]{margin-right:5px}#app *[data-v-c4e8a9f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}form.search[data-v-c4e8a9f2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px;position:relative}form.search input[data-v-c4e8a9f2]{width:100%;height:36px;border-radius:19px;padding:0 40px}form.search .search-btn[data-v-c4e8a9f2]{position:absolute;left:20px;border:none!important;box-shadow:none!important;background:none!important;cursor:pointer;z-index:10;display:flex;flex-wrap:wrap;align-items:center;width:30px;padding:0;margin:0}form.search .search-btn[data-v-c4e8a9f2] svg path{stroke:currentColor}#app *[data-v-1b494368]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.containers[data-v-1b494368]{width:100%;height:100%;display:flex;flex-wrap:wrap}#app *[data-v-74b0669f]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-74b0669f]{padding:15px}.cbi-section[data-v-74b0669f] .cbi-value{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px}#app *[data-v-ae2fc4f4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-ae2fc4f4]{padding:15px}.cbi-section .container_msg span[data-v-ae2fc4f4]{display:block;width:100%;margin-bottom:5px}.cbi-section form[data-v-ae2fc4f4]{width:100%;margin:30px 0}.cbi-section form .flex[data-v-ae2fc4f4]{width:100%;display:flex;flex-wrap:wrap;align-items:center}.cbi-section form .flex label.upload-file[data-v-ae2fc4f4]{width:100%;height:54px;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 20px;cursor:pointer}.cbi-section form .flex label.upload-file span[data-v-ae2fc4f4]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;line-height:22px}.cbi-section form .flex label.upload-file .button[data-v-ae2fc4f4]{min-width:116px;padding:0 10px;height:38px;background:rgba(255,255,255,.2);border-radius:6px;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.cbi-section form .flex label.upload-file input[data-v-ae2fc4f4]{visibility:hidden}.cbi-section form .flex label.upload-file[data-v-ae2fc4f4]:hover{opacity:.9}.cbi-section form button.upload-button[data-v-ae2fc4f4]{width:118px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:10px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#fff}.cbi-section form button.upload-button[data-v-ae2fc4f4]:hover{opacity:.9}#app *[data-v-8e330954]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-8e330954]{width:100%;min-height:400px;display:block;background:rgba(0,0,0,.9)}.cbi-section .webapp-container[data-v-8e330954]{width:100%;height:100%;min-height:inherit}.cbi-section .webapp-container iframe[data-v-8e330954]{width:100%;height:100%;min-height:inherit;border:none}#app *[data-v-8ac6e0ca]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-8ac6e0ca]{display:flex;flex-wrap:wrap}.log-containers .model[data-v-8ac6e0ca]{width:100%;flex:0 0 100%;display:block;margin-left:18px;margin-top:18px}.log-containers .containers-tit[data-v-8ac6e0ca]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}.log-containers .containers-tit .app-btn[data-v-8ac6e0ca]{margin-left:3rem}em[data-v-8ac6e0ca]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-a4c06ae8]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.Lightweight[data-v-a4c06ae8]{margin-top:20px;margin-left:18px}.Lightweight .Lightweight-container .model[data-v-a4c06ae8]{margin-bottom:10px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit[data-v-a4c06ae8]{margin-bottom:20px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit span[data-v-a4c06ae8]{display:block;line-height:24px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup[data-v-a4c06ae8]{display:flex}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup .app-btn[data-v-a4c06ae8]{margin-left:14px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .upload-file[data-v-a4c06ae8]{color:#000}input[hidden][data-v-a4c06ae8]{display:none!important}#app *[data-v-67b754ac]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.local[data-v-67b754ac]{margin-top:20px}.local .local-container[data-v-67b754ac]{margin-left:18px}.local .local-container .model[data-v-67b754ac]{margin-bottom:10px}.local .local-container .local-container1[data-v-67b754ac]{width:800px;height:400px}.local .local-container .local-container1 .container1-center[data-v-67b754ac]{text-align:left}.local .local-container .local-container1 .container1-center .local-tit span[data-v-67b754ac]{display:block;line-height:24px}.local .local-container .local-container1 .container1-center .local-device[data-v-67b754ac]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .local-input[data-v-67b754ac]{display:flex;align-items:center}.local .local-container .local-container1 .container1-center .local-input .app-btn[data-v-67b754ac]{margin-left:14px}.local .local-container .local-container1 .container1-center .local-input .local-input-field[data-v-67b754ac]{width:20rem}.local .local-container .local-container1 .container1-center .list[data-v-67b754ac]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .select[data-v-67b754ac]{flex:0 0 100%;max-width:100%} diff --git a/app-store-ui/src/dist/luci-static/istore/vendor.js b/app-store-ui/src/dist/luci-static/istore/vendor.js index 8da220465..daa7a2fe9 100644 --- a/app-store-ui/src/dist/luci-static/istore/vendor.js +++ b/app-store-ui/src/dist/luci-static/istore/vendor.js @@ -16,17 +16,17 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var Zr=function(){return Zr=Object.assign||function(t){for(var n,r=1,s=arguments.length;r":">",'"':""","'":"'"};function h(x,C){for(var k=C.split(Nm).filter(function(R){return R});k.length;)x=x[k.shift()];return x}function p(x,C,k){try{c=h(x,C)}catch($){}if(c==null){if(k)return p(k.ctx,C,k.parent);console.warn("Cannot evaluate expression: ".concat(C)),c=C}var R=c.toString();return r?R:R.replace(/[&<>"']/g,function($){return d[$]})}return p(n,u,s)});return a}};hr.INTERPOLATION_RE=cu;hr.INTERPOLATION_PREFIX="%{";var go={getTranslationIndex:function(e,t){switch(t=Number(t),t=typeof t=="number"&&isNaN(t)?1:t,e.length>2&&e!=="pt_BR"&&(e=e.split("_")[0]),e){case"ay":case"bo":case"cgg":case"dz":case"fa":case"id":case"ja":case"jbo":case"ka":case"kk":case"km":case"ko":case"ky":case"lo":case"ms":case"my":case"sah":case"su":case"th":case"tt":case"ug":case"vi":case"wo":case"zh":return 0;case"is":return t%10!==1||t%100===11?1:0;case"jv":return t!==0?1:0;case"mk":return t===1||t%10===1?0:1;case"ach":case"ak":case"am":case"arn":case"br":case"fil":case"fr":case"gun":case"ln":case"mfe":case"mg":case"mi":case"oc":case"pt_BR":case"tg":case"ti":case"tr":case"uz":case"wa":return t>1?1:0;case"lv":return t%10===1&&t%100!==11?0:t!==0?1:2;case"lt":return t%10===1&&t%100!==11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return t%10===1&&t%100!==11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"mnk":return t===0?0:t===1?1:2;case"ro":return t===1?0:t===0||t%100>0&&t%100<20?1:2;case"pl":return t===1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return t===1?0:t>=2&&t<=4?1:2;case"csb":return t===1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100===1?0:t%100===2?1:t%100===3||t%100===4?2:3;case"mt":return t===1?0:t===0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"gd":return t===1||t===11?0:t===2||t===12?1:t>2&&t<20?2:3;case"cy":return t===1?0:t===2?1:t!==8&&t!==11?2:3;case"kw":return t===1?0:t===2?1:t===3?2:3;case"ga":return t===1?0:t===2?1:t>2&&t<7?2:t>6&&t<11?3:4;case"ar":return t===0?0:t===1?1:t===2?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5;default:return t!==1?1:0}}},ta=function(e){return{getTranslation:function(t,n,r,s,i,a,o){n===void 0&&(n=1),r===void 0&&(r=null),s===void 0&&(s=null),o===void 0&&(o=!1),i===void 0&&(i=e.current);var l=function(k,R){return R?e.interpolate(k,R,o):k};if(!t)return"";var u=i?e.silent||e.muted.indexOf(i)!==-1:!1,c=s&&go.getTranslationIndex(i,n)>0?s:t,d=e.translations,h=d[i]||d[i.split("_")[0]];if(!h)return u||console.warn("No translations found for ".concat(i)),l(c,a);t=t.trim();var p=h[t];if(p&&r&&(p=p[r]),!p){if(!u){var x="Untranslated ".concat(i," key found: ").concat(t);r&&(x+=" (with context: ".concat(r,")")),console.warn(x)}return l(c,a)}if(!(p instanceof Array)&&p.hasOwnProperty("")&&(p=p[""]),typeof p=="string")return l(p,a);var C=go.getTranslationIndex(i,n);if(p.length===1&&n===1&&(C=0),!p[C])throw new Error(t+" "+C+" "+e.current+" "+n);return l(p[C],a)},gettext:function(t,n,r){return r===void 0&&(r=!1),this.getTranslation(t,void 0,void 0,void 0,void 0,n,r)},pgettext:function(t,n,r,s){return s===void 0&&(s=!1),this.getTranslation(n,1,t,void 0,void 0,r,s)},ngettext:function(t,n,r,s,i){return i===void 0&&(i=!1),this.getTranslation(t,r,null,n,void 0,s,i)},npgettext:function(t,n,r,s,i,a){return a===void 0&&(a=!1),this.getTranslation(n,s,t,r,void 0,i,a)}}},hi=Symbol("GETTEXT");function Ym(e){return e.replace(/\r?\n|\r/,"").replace(/\s\s+/g," ").trim()}function _o(e){var t={};return Object.keys(e).forEach(function(n){var r=e[n],s={};Object.keys(r).forEach(function(i){s[Ym(i)]=r[i]}),t[n]=s}),t}var Lm=function(){var e=ut(hi,null);if(!e)throw new Error("Failed to inject gettext. Make sure vue3-gettext is set up properly.");return e},yo=$i({name:"translate",props:{tag:{type:String,default:"span"},translateN:{type:Number,default:null},translatePlural:{type:String,default:null},translateContext:{type:String,default:null},translateParams:{type:Object,default:null},translateComment:{type:String,default:null}},setup:function(e,t){var n,r,s,i=e.translateN!==void 0&&e.translatePlural!==void 0;if(!i&&(e.translateN||e.translatePlural))throw new Error("`translate-n` and `translate-plural` attributes must be used together: ".concat((s=(r=(n=t.slots).default)===null||r===void 0?void 0:r.call(n)[0])===null||s===void 0?void 0:s.children,"."));var a=Fr(),o=Lm(),l=Fr(null);bl(function(){!l.value&&a.value&&(l.value=a.value.innerHTML.trim())});var u=He(function(){var c,d=ta(o).getTranslation(l.value,e.translateN,e.translateContext,i?e.translatePlural:null,o.current);return hr(o)(d,e.translateParams,void 0,(c=ld())===null||c===void 0?void 0:c.parent)});return function(){return l.value?Vr(e.tag,{ref:a,innerHTML:u.value}):Vr(e.tag,{ref:a},t.slots.default?t.slots.default():"")}}}),Fm=function(e,t,n,r){var s=r.props||{},i=t.dataset.msgid,a=s["translate-context"],o=s["translate-n"],l=s["translate-plural"],u=o!==void 0&&l!==void 0,c=s["render-html"]==="true";if(!u&&(o||l))throw new Error("`translate-n` and `translate-plural` attributes must be used together:"+i+".");!e.silent&&s["translate-params"]&&console.warn("`translate-params` is required as an expression for v-translate directive. Please change to `v-translate='params'`: ".concat(i));var d=ta(e).getTranslation(i,o,a,u?l:null,e.current),h=Object.assign(n.instance,n.value),p=hr(e)(d,h,c,null);t.innerHTML=p};function vo(e){var t=function(n,r,s){n.dataset.currentLanguage=e.current,Fm(e,n,r,s)};return{beforeMount:function(n,r,s){n.dataset.msgid||(n.dataset.msgid=n.innerHTML),Xt(e,function(){t(n,r,s)}),t(n,r,s)},updated:function(n,r,s){t(n,r,s)}}}var wo={availableLanguages:{en:"English"},defaultLanguage:"en",mutedLanguages:[],silent:!1,translations:{},setGlobalProperties:!0,provideDirective:!0,provideComponent:!0};function s0(e){e===void 0&&(e={}),Object.keys(e).forEach(function(a){if(Object.keys(wo).indexOf(a)===-1)throw new Error("".concat(a," is an invalid option for the translate plugin."))});var t=Zr(Zr({},wo),e),n=Fr(_o(t.translations)),r=an({available:t.availableLanguages,muted:t.mutedLanguages,silent:t.silent,translations:He({get:function(){return n.value},set:function(a){n.value=_o(a)}}),current:t.defaultLanguage,install:function(a){if(a[hi]=r,a.provide(hi,r),t.setGlobalProperties){var o=a.config.globalProperties;o.$gettext=r.$gettext,o.$pgettext=r.$pgettext,o.$ngettext=r.$ngettext,o.$npgettext=r.$npgettext,o.$gettextInterpolate=r.interpolate,o.$language=r}t.provideDirective&&a.directive("translate",vo(r)),t.provideComponent&&a.component("translate",yo)}}),s=ta(r),i=hr(r);return r.$gettext=s.gettext.bind(s),r.$pgettext=s.pgettext.bind(s),r.$ngettext=s.ngettext.bind(s),r.$npgettext=s.npgettext.bind(s),r.interpolate=i.bind(i),r.directive=vo(r),r.component=yo,r}//! moment.js +***************************************************************************** */var Zr=function(){return Zr=Object.assign||function(t){for(var n,r=1,s=arguments.length;r":">",'"':""","'":"'"};function h(x,C){for(var k=C.split(Nm).filter(function(R){return R});k.length;)x=x[k.shift()];return x}function p(x,C,k){try{c=h(x,C)}catch($){}if(c==null){if(k)return p(k.ctx,C,k.parent);console.warn("Cannot evaluate expression: ".concat(C)),c=C}var R=c.toString();return r?R:R.replace(/[&<>"']/g,function($){return d[$]})}return p(n,u,s)});return a}};hr.INTERPOLATION_RE=cu;hr.INTERPOLATION_PREFIX="%{";var go={getTranslationIndex:function(e,t){switch(t=Number(t),t=typeof t=="number"&&isNaN(t)?1:t,e.length>2&&e!=="pt_BR"&&(e=e.split("_")[0]),e){case"ay":case"bo":case"cgg":case"dz":case"fa":case"id":case"ja":case"jbo":case"ka":case"kk":case"km":case"ko":case"ky":case"lo":case"ms":case"my":case"sah":case"su":case"th":case"tt":case"ug":case"vi":case"wo":case"zh":return 0;case"is":return t%10!==1||t%100===11?1:0;case"jv":return t!==0?1:0;case"mk":return t===1||t%10===1?0:1;case"ach":case"ak":case"am":case"arn":case"br":case"fil":case"fr":case"gun":case"ln":case"mfe":case"mg":case"mi":case"oc":case"pt_BR":case"tg":case"ti":case"tr":case"uz":case"wa":return t>1?1:0;case"lv":return t%10===1&&t%100!==11?0:t!==0?1:2;case"lt":return t%10===1&&t%100!==11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return t%10===1&&t%100!==11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"mnk":return t===0?0:t===1?1:2;case"ro":return t===1?0:t===0||t%100>0&&t%100<20?1:2;case"pl":return t===1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return t===1?0:t>=2&&t<=4?1:2;case"csb":return t===1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100===1?0:t%100===2?1:t%100===3||t%100===4?2:3;case"mt":return t===1?0:t===0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"gd":return t===1||t===11?0:t===2||t===12?1:t>2&&t<20?2:3;case"cy":return t===1?0:t===2?1:t!==8&&t!==11?2:3;case"kw":return t===1?0:t===2?1:t===3?2:3;case"ga":return t===1?0:t===2?1:t>2&&t<7?2:t>6&&t<11?3:4;case"ar":return t===0?0:t===1?1:t===2?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5;default:return t!==1?1:0}}},ta=function(e){return{getTranslation:function(t,n,r,s,i,a,o){n===void 0&&(n=1),r===void 0&&(r=null),s===void 0&&(s=null),o===void 0&&(o=!1),i===void 0&&(i=e.current);var l=function(k,R){return R?e.interpolate(k,R,o):k};if(!t)return"";var u=i?e.silent||e.muted.indexOf(i)!==-1:!1,c=s&&go.getTranslationIndex(i,n)>0?s:t,d=e.translations,h=d[i]||d[i.split("_")[0]];if(!h)return u||console.warn("No translations found for ".concat(i)),l(c,a);t=t.trim();var p=h[t];if(p&&r&&(p=p[r]),!p){if(!u){var x="Untranslated ".concat(i," key found: ").concat(t);r&&(x+=" (with context: ".concat(r,")")),console.warn(x)}return l(c,a)}if(!(p instanceof Array)&&p.hasOwnProperty("")&&(p=p[""]),typeof p=="string")return l(p,a);var C=go.getTranslationIndex(i,n);if(p.length===1&&n===1&&(C=0),!p[C])throw new Error(t+" "+C+" "+e.current+" "+n);return l(p[C],a)},gettext:function(t,n,r){return r===void 0&&(r=!1),this.getTranslation(t,void 0,void 0,void 0,void 0,n,r)},pgettext:function(t,n,r,s){return s===void 0&&(s=!1),this.getTranslation(n,1,t,void 0,void 0,r,s)},ngettext:function(t,n,r,s,i){return i===void 0&&(i=!1),this.getTranslation(t,r,null,n,void 0,s,i)},npgettext:function(t,n,r,s,i,a){return a===void 0&&(a=!1),this.getTranslation(n,s,t,r,void 0,i,a)}}},hi=Symbol("GETTEXT");function Ym(e){return e.replace(/\r?\n|\r/,"").replace(/\s\s+/g," ").trim()}function _o(e){var t={};return Object.keys(e).forEach(function(n){var r=e[n],s={};Object.keys(r).forEach(function(i){s[Ym(i)]=r[i]}),t[n]=s}),t}var Lm=function(){var e=ut(hi,null);if(!e)throw new Error("Failed to inject gettext. Make sure vue3-gettext is set up properly.");return e},yo=$i({name:"translate",props:{tag:{type:String,default:"span"},translateN:{type:Number,default:null},translatePlural:{type:String,default:null},translateContext:{type:String,default:null},translateParams:{type:Object,default:null},translateComment:{type:String,default:null}},setup:function(e,t){var n,r,s,i=e.translateN!==void 0&&e.translatePlural!==void 0;if(!i&&(e.translateN||e.translatePlural))throw new Error("`translate-n` and `translate-plural` attributes must be used together: ".concat((s=(r=(n=t.slots).default)===null||r===void 0?void 0:r.call(n)[0])===null||s===void 0?void 0:s.children,"."));var a=Fr(),o=Lm(),l=Fr(null);bl(function(){!l.value&&a.value&&(l.value=a.value.innerHTML.trim())});var u=He(function(){var c,d=ta(o).getTranslation(l.value,e.translateN,e.translateContext,i?e.translatePlural:null,o.current);return hr(o)(d,e.translateParams,void 0,(c=ld())===null||c===void 0?void 0:c.parent)});return function(){return l.value?Vr(e.tag,{ref:a,innerHTML:u.value}):Vr(e.tag,{ref:a},t.slots.default?t.slots.default():"")}}}),Fm=function(e,t,n,r){var s=r.props||{},i=t.dataset.msgid,a=s["translate-context"],o=s["translate-n"],l=s["translate-plural"],u=o!==void 0&&l!==void 0,c=s["render-html"]==="true";if(!u&&(o||l))throw new Error("`translate-n` and `translate-plural` attributes must be used together:"+i+".");!e.silent&&s["translate-params"]&&console.warn("`translate-params` is required as an expression for v-translate directive. Please change to `v-translate='params'`: ".concat(i));var d=ta(e).getTranslation(i,o,a,u?l:null,e.current),h=Object.assign(n.instance,n.value),p=hr(e)(d,h,c,null);t.innerHTML=p};function vo(e){var t=function(n,r,s){n.dataset.currentLanguage=e.current,Fm(e,n,r,s)};return{beforeMount:function(n,r,s){n.dataset.msgid||(n.dataset.msgid=n.innerHTML),Xt(e,function(){t(n,r,s)}),t(n,r,s)},updated:function(n,r,s){t(n,r,s)}}}var wo={availableLanguages:{en:"English"},defaultLanguage:"en",mutedLanguages:[],silent:!1,translations:{},setGlobalProperties:!0,provideDirective:!0,provideComponent:!0};function s0(e){e===void 0&&(e={}),Object.keys(e).forEach(function(a){if(Object.keys(wo).indexOf(a)===-1)throw new Error("".concat(a," is an invalid option for the translate plugin."))});var t=Zr(Zr({},wo),e),n=Fr(_o(t.translations)),r=an({available:t.availableLanguages,muted:t.mutedLanguages,silent:t.silent,translations:He({get:function(){return n.value},set:function(a){n.value=_o(a)}}),current:t.defaultLanguage,install:function(a){if(a[hi]=r,a.provide(hi,r),t.setGlobalProperties){var o=a.config.globalProperties;o.$gettext=r.$gettext,o.$pgettext=r.$pgettext,o.$ngettext=r.$ngettext,o.$npgettext=r.$npgettext,o.$gettextInterpolate=r.interpolate,o.$language=r}t.provideDirective&&a.directive("translate",vo(r)),t.provideComponent&&a.component("translate",yo)}}),s=ta(r),i=hr(r);return r.$gettext=s.gettext.bind(s),r.$pgettext=s.pgettext.bind(s),r.$ngettext=s.ngettext.bind(s),r.$npgettext=s.npgettext.bind(s),r.interpolate=i.bind(i),r.directive=vo(r),r.component=yo,r}/*! + * vue-router v4.0.13 + * (c) 2022 Eduardo San Martin Morote + * @license MIT + */const fu=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol",Fn=e=>fu?Symbol(e):"_vr_"+e,Um=Fn("rvlm"),bo=Fn("rvd"),na=Fn("r"),du=Fn("rl"),mi=Fn("rvl"),On=typeof window!="undefined";function jm(e){return e.__esModule||fu&&e[Symbol.toStringTag]==="Module"}const ie=Object.assign;function Ws(e,t){const n={};for(const r in t){const s=t[r];n[r]=Array.isArray(s)?s.map(e):e(s)}return n}const Qn=()=>{},$m=/\/$/,Wm=e=>e.replace($m,"");function Hs(e,t,n="/"){let r,s={},i="",a="";const o=t.indexOf("?"),l=t.indexOf("#",o>-1?o:0);return o>-1&&(r=t.slice(0,o),i=t.slice(o+1,l>-1?l:t.length),s=e(i)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=Gm(r!=null?r:t,n),{fullPath:r+(i&&"?")+i+a,path:r,query:s,hash:a}}function Hm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function So(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&An(t.matched[r],n.matched[s])&&hu(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function An(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function hu(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Bm(e[n],t[n]))return!1;return!0}function Bm(e,t){return Array.isArray(e)?Oo(e,t):Array.isArray(t)?Oo(t,e):e===t}function Oo(e,t){return Array.isArray(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Gm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let s=n.length-1,i,a;for(i=0;i({left:window.pageXOffset,top:window.pageYOffset});function Jm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Zm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function xo(e,t){return(history.state?history.state.position-t:-1)+e}const pi=new Map;function Qm(e,t){pi.set(e,t)}function Xm(e){const t=pi.get(e);return pi.delete(e),t}let ep=()=>location.protocol+"//"+location.host;function mu(e,t){const{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let o=s.includes(e.slice(i))?e.slice(i).length:1,l=s.slice(o);return l[0]!=="/"&&(l="/"+l),So(l,"")}return So(n,e)+r+s}function tp(e,t,n,r){let s=[],i=[],a=null;const o=({state:h})=>{const p=mu(e,location),x=n.value,C=t.value;let k=0;if(h){if(n.value=p,t.value=h,a&&a===x){a=null;return}k=C?h.position-C.position:0}else r(p);s.forEach(R=>{R(n.value,x,{delta:k,type:lr.pop,direction:k?k>0?Xn.forward:Xn.back:Xn.unknown})})};function l(){a=n.value}function u(h){s.push(h);const p=()=>{const x=s.indexOf(h);x>-1&&s.splice(x,1)};return i.push(p),p}function c(){const{history:h}=window;!h.state||h.replaceState(ie({},h.state,{scroll:vs()}),"")}function d(){for(const h of i)h();i=[],window.removeEventListener("popstate",o),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",o),window.addEventListener("beforeunload",c),{pauseListeners:l,listen:u,destroy:d}}function Mo(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?vs():null}}function np(e){const{history:t,location:n}=window,r={value:mu(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const d=e.indexOf("#"),h=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+l:ep()+e+l;try{t[c?"replaceState":"pushState"](u,"",h),s.value=u}catch(p){console.error(p),n[c?"replace":"assign"](h)}}function a(l,u){const c=ie({},t.state,Mo(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});i(l,c,!0),r.value=l}function o(l,u){const c=ie({},s.value,t.state,{forward:l,scroll:vs()});i(c.current,c,!0);const d=ie({},Mo(r.value,l,null),{position:c.position+1},u);i(l,d,!1),r.value=l}return{location:r,state:s,push:o,replace:a}}function i0(e){e=zm(e);const t=np(e),n=tp(e,t.state,t.location,t.replace);function r(i,a=!0){a||n.pauseListeners(),history.go(i)}const s=ie({location:"",base:e,go:r,createHref:Km.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function rp(e){return typeof e=="string"||e&&typeof e=="object"}function pu(e){return typeof e=="string"||typeof e=="symbol"}const At={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},gu=Fn("nf");var Eo;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Eo||(Eo={}));function Nn(e,t){return ie(new Error,{type:e,[gu]:!0},t)}function Nt(e,t){return e instanceof Error&&gu in e&&(t==null||!!(e.type&t))}const ko="[^/]+?",sp={sensitive:!1,strict:!1,start:!0,end:!0},ip=/[.+*?^${}()[\]/\\]/g;function ap(e,t){const n=ie({},sp,t),r=[];let s=n.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let d=0;dt.length?t.length===1&&t[0]===40+40?1:-1:0}function lp(e,t){let n=0;const r=e.score,s=t.score;for(;n1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function h(){u+=l}for(;o{a($)}:Qn}function a(c){if(pu(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(a),d.alias.forEach(a))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(a),c.alias.forEach(a))}}function o(){return n}function l(c){let d=0;for(;d=0&&(c.record.path!==n[d].record.path||!_u(c,n[d]));)d++;n.splice(d,0,c),c.record.name&&!To(c)&&r.set(c.record.name,c)}function u(c,d){let h,p={},x,C;if("name"in c&&c.name){if(h=r.get(c.name),!h)throw Nn(1,{location:c});C=h.record.name,p=ie(mp(d.params,h.keys.filter($=>!$.optional).map($=>$.name)),c.params),x=h.stringify(p)}else if("path"in c)x=c.path,h=n.find($=>$.re.test(x)),h&&(p=h.parse(x),C=h.record.name);else{if(h=d.name?r.get(d.name):n.find($=>$.re.test(d.path)),!h)throw Nn(1,{location:c,currentLocation:d});C=h.record.name,p=ie({},d.params,c.params),x=h.stringify(p)}const k=[];let R=h;for(;R;)k.unshift(R.record),R=R.parent;return{name:C,path:x,params:p,matched:k,meta:_p(k)}}return e.forEach(c=>i(c)),{addRoute:i,resolve:u,removeRoute:a,getRoutes:o,getRecordMatcher:s}}function mp(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function pp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:gp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||{}:{default:e.component}}}function gp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="boolean"?n:n[r];return t}function To(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function _p(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function Do(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function _u(e,t){return t.children.some(n=>n===e||_u(e,n))}const yu=/#/g,yp=/&/g,vp=/\//g,wp=/=/g,bp=/\?/g,vu=/\+/g,Sp=/%5B/g,Op=/%5D/g,wu=/%5E/g,xp=/%60/g,bu=/%7B/g,Mp=/%7C/g,Su=/%7D/g,Ep=/%20/g;function ra(e){return encodeURI(""+e).replace(Mp,"|").replace(Sp,"[").replace(Op,"]")}function kp(e){return ra(e).replace(bu,"{").replace(Su,"}").replace(wu,"^")}function gi(e){return ra(e).replace(vu,"%2B").replace(Ep,"+").replace(yu,"%23").replace(yp,"%26").replace(xp,"`").replace(bu,"{").replace(Su,"}").replace(wu,"^")}function Tp(e){return gi(e).replace(wp,"%3D")}function Dp(e){return ra(e).replace(yu,"%23").replace(bp,"%3F")}function Pp(e){return e==null?"":Dp(e).replace(vp,"%2F")}function Jr(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}function Rp(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;si&&gi(i)):[r&&gi(r)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function Cp(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Array.isArray(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Hn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Lt(e,t,n,r,s){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,o)=>{const l=d=>{d===!1?o(Nn(4,{from:n,to:t})):d instanceof Error?o(d):rp(d)?o(Nn(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},u=e.call(r&&r.instances[s],t,n,l);let c=Promise.resolve(u);e.length<3&&(c=c.then(l)),c.catch(d=>o(d))})}function Vs(e,t,n,r){const s=[];for(const i of e)for(const a in i.components){let o=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Ap(o)){const u=(o.__vccOpts||o)[t];u&&s.push(Lt(u,n,r,i,a))}else{let l=o();s.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const c=jm(u)?u.default:u;i.components[a]=c;const h=(c.__vccOpts||c)[t];return h&&Lt(h,n,r,i,a)()}))}}return s}function Ap(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ro(e){const t=ut(na),n=ut(du),r=He(()=>t.resolve(qn(e.to))),s=He(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],d=n.matched;if(!c||!d.length)return-1;const h=d.findIndex(An.bind(null,c));if(h>-1)return h;const p=Co(l[u-2]);return u>1&&Co(c)===p&&d[d.length-1].path!==p?d.findIndex(An.bind(null,l[u-2])):h}),i=He(()=>s.value>-1&&Lp(n.params,r.value.params)),a=He(()=>s.value>-1&&s.value===n.matched.length-1&&hu(n.params,r.value.params));function o(l={}){return Yp(l)?t[qn(e.replace)?"replace":"push"](qn(e.to)).catch(Qn):Promise.resolve()}return{route:r,href:He(()=>r.value.href),isActive:i,isExactActive:a,navigate:o}}const Np=$i({name:"RouterLink",props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ro,setup(e,{slots:t}){const n=an(Ro(e)),{options:r}=ut(na),s=He(()=>({[Ao(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ao(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&t.default(n);return e.custom?i:Vr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},i)}}}),Ip=Np;function Yp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Lp(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Array.isArray(s)||s.length!==r.length||r.some((i,a)=>i!==s[a]))return!1}return!0}function Co(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ao=(e,t,n)=>e!=null?e:t!=null?t:n,Fp=$i({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},setup(e,{attrs:t,slots:n}){const r=ut(mi),s=He(()=>e.route||r.value),i=ut(bo,0),a=He(()=>s.value.matched[i]);Dr(bo,i+1),Dr(Um,a),Dr(mi,s);const o=Fr();return Xt(()=>[o.value,a.value,e.name],([l,u,c],[d,h,p])=>{u&&(u.instances[c]=l,h&&h!==u&&l&&l===d&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),l&&u&&(!h||!An(u,h)||!d)&&(u.enterCallbacks[c]||[]).forEach(x=>x(l))},{flush:"post"}),()=>{const l=s.value,u=a.value,c=u&&u.components[e.name],d=e.name;if(!c)return No(n.default,{Component:c,route:l});const h=u.props[e.name],p=h?h===!0?l.params:typeof h=="function"?h(l):h:null,C=Vr(c,ie({},p,t,{onVnodeUnmounted:k=>{k.component.isUnmounted&&(u.instances[d]=null)},ref:o}));return No(n.default,{Component:C,route:l})||C}}});function No(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Up=Fp;function a0(e){const t=hp(e.routes,e),n=e.parseQuery||Rp,r=e.stringifyQuery||Po,s=e.history,i=Hn(),a=Hn(),o=Hn(),l=nf(At);let u=At;On&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Ws.bind(null,_=>""+_),d=Ws.bind(null,Pp),h=Ws.bind(null,Jr);function p(_,N){let E,I;return pu(_)?(E=t.getRecordMatcher(_),I=N):I=_,t.addRoute(I,E)}function x(_){const N=t.getRecordMatcher(_);N&&t.removeRoute(N)}function C(){return t.getRoutes().map(_=>_.record)}function k(_){return!!t.getRecordMatcher(_)}function R(_,N){if(N=ie({},N||l.value),typeof _=="string"){const H=Hs(n,_,N.path),f=t.resolve({path:H.path},N),m=s.createHref(H.fullPath);return ie(H,f,{params:h(f.params),hash:Jr(H.hash),redirectedFrom:void 0,href:m})}let E;if("path"in _)E=ie({},_,{path:Hs(n,_.path,N.path).path});else{const H=ie({},_.params);for(const f in H)H[f]==null&&delete H[f];E=ie({},_,{params:d(_.params)}),N.params=d(N.params)}const I=t.resolve(E,N),re=_.hash||"";I.params=c(h(I.params));const le=Hm(r,ie({},_,{hash:kp(re),path:I.path})),G=s.createHref(le);return ie({fullPath:le,hash:re,query:r===Po?Cp(_.query):_.query||{}},I,{redirectedFrom:void 0,href:G})}function $(_){return typeof _=="string"?Hs(n,_,l.value.path):ie({},_)}function X(_,N){if(u!==_)return Nn(8,{from:N,to:_})}function te(_){return mt(_)}function Te(_){return te(ie($(_),{replace:!0}))}function Ce(_){const N=_.matched[_.matched.length-1];if(N&&N.redirect){const{redirect:E}=N;let I=typeof E=="function"?E(_):E;return typeof I=="string"&&(I=I.includes("?")||I.includes("#")?I=$(I):{path:I},I.params={}),ie({query:_.query,hash:_.hash,params:_.params},I)}}function mt(_,N){const E=u=R(_),I=l.value,re=_.state,le=_.force,G=_.replace===!0,H=Ce(E);if(H)return mt(ie($(H),{state:re,force:le,replace:G}),N||E);const f=E;f.redirectedFrom=N;let m;return!le&&Vm(r,I,E)&&(m=Nn(16,{to:f,from:I}),mn(I,I,!0,!1)),(m?Promise.resolve(m):nt(f,I)).catch(g=>Nt(g)?Nt(g,2)?g:Ae(g):oe(g,f,I)).then(g=>{if(g){if(Nt(g,2))return mt(ie($(g.to),{state:re,force:le,replace:G}),N||f)}else g=pt(f,I,!0,G,re);return Rt(f,I,g),g})}function cn(_,N){const E=X(_,N);return E?Promise.reject(E):Promise.resolve()}function nt(_,N){let E;const[I,re,le]=jp(_,N);E=Vs(I.reverse(),"beforeRouteLeave",_,N);for(const H of I)H.leaveGuards.forEach(f=>{E.push(Lt(f,_,N))});const G=cn.bind(null,_,N);return E.push(G),vn(E).then(()=>{E=[];for(const H of i.list())E.push(Lt(H,_,N));return E.push(G),vn(E)}).then(()=>{E=Vs(re,"beforeRouteUpdate",_,N);for(const H of re)H.updateGuards.forEach(f=>{E.push(Lt(f,_,N))});return E.push(G),vn(E)}).then(()=>{E=[];for(const H of _.matched)if(H.beforeEnter&&!N.matched.includes(H))if(Array.isArray(H.beforeEnter))for(const f of H.beforeEnter)E.push(Lt(f,_,N));else E.push(Lt(H.beforeEnter,_,N));return E.push(G),vn(E)}).then(()=>(_.matched.forEach(H=>H.enterCallbacks={}),E=Vs(le,"beforeRouteEnter",_,N),E.push(G),vn(E))).then(()=>{E=[];for(const H of a.list())E.push(Lt(H,_,N));return E.push(G),vn(E)}).catch(H=>Nt(H,8)?H:Promise.reject(H))}function Rt(_,N,E){for(const I of o.list())I(_,N,E)}function pt(_,N,E,I,re){const le=X(_,N);if(le)return le;const G=N===At,H=On?history.state:{};E&&(I||G?s.replace(_.fullPath,ie({scroll:G&&H&&H.scroll},re)):s.push(_.fullPath,re)),l.value=_,mn(_,N,E,G),Ae()}let gt;function fn(){gt=s.listen((_,N,E)=>{const I=R(_),re=Ce(I);if(re){mt(ie(re,{replace:!0}),I).catch(Qn);return}u=I;const le=l.value;On&&Qm(xo(le.fullPath,E.delta),vs()),nt(I,le).catch(G=>Nt(G,12)?G:Nt(G,2)?(mt(G.to,I).then(H=>{Nt(H,20)&&!E.delta&&E.type===lr.pop&&s.go(-1,!1)}).catch(Qn),Promise.reject()):(E.delta&&s.go(-E.delta,!1),oe(G,I,le))).then(G=>{G=G||pt(I,le,!1),G&&(E.delta?s.go(-E.delta,!1):E.type===lr.pop&&Nt(G,20)&&s.go(-1,!1)),Rt(I,le,G)}).catch(Qn)})}let dn=Hn(),hn=Hn(),ge;function oe(_,N,E){Ae(_);const I=hn.list();return I.length?I.forEach(re=>re(_,N,E)):console.error(_),Promise.reject(_)}function ne(){return ge&&l.value!==At?Promise.resolve():new Promise((_,N)=>{dn.add([_,N])})}function Ae(_){return ge||(ge=!_,fn(),dn.list().forEach(([N,E])=>_?E(_):N()),dn.reset()),_}function mn(_,N,E,I){const{scrollBehavior:re}=e;if(!On||!re)return Promise.resolve();const le=!E&&Xm(xo(_.fullPath,0))||(I||!E)&&history.state&&history.state.scroll||null;return cl().then(()=>re(_,N,le)).then(G=>G&&Jm(G)).catch(G=>oe(G,_,N))}const _t=_=>s.go(_);let rt;const $e=new Set;return{currentRoute:l,addRoute:p,removeRoute:x,hasRoute:k,getRoutes:C,resolve:R,options:e,push:te,replace:Te,go:_t,back:()=>_t(-1),forward:()=>_t(1),beforeEach:i.add,beforeResolve:a.add,afterEach:o.add,onError:hn.add,isReady:ne,install(_){const N=this;_.component("RouterLink",Ip),_.component("RouterView",Up),_.config.globalProperties.$router=N,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>qn(l)}),On&&!rt&&l.value===At&&(rt=!0,te(s.location).catch(re=>{}));const E={};for(const re in At)E[re]=He(()=>l.value[re]);_.provide(na,N),_.provide(du,an(E)),_.provide(mi,l);const I=_.unmount;$e.add(_),_.unmount=function(){$e.delete(_),$e.size<1&&(u=At,gt&>(),l.value=At,rt=!1,ge=!1),I()}}}}function vn(e){return e.reduce((t,n)=>t.then(()=>n()),Promise.resolve())}function jp(e,t){const n=[],r=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aAn(u,o))?r.push(o):n.push(o));const l=e.matched[a];l&&(t.matched.find(u=>An(u,l))||s.push(l))}return[n,r,s]}//! moment.js //! version : 2.29.3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com -var fu;function T(){return fu.apply(null,arguments)}function Um(e){fu=e}function Qe(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function nn(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Z(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function na(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(Z(e,t))return!1;return!0}function Pe(e){return e===void 0}function kt(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function mr(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function du(e,t){var n=[],r,s=e.length;for(r=0;r>>0,r;for(r=0;r0)for(n=0;n>>0,r;for(r=0;r0)for(n=0;n=0;return(i?n?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+r}var aa=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Mr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Hs={},Dn={};function Y(e,t,n,r){var s=r;typeof r=="string"&&(s=function(){return this[r]()}),e&&(Dn[e]=s),t&&(Dn[t[0]]=function(){return ft(s.apply(this,arguments),t[1],t[2])}),n&&(Dn[n]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})}function Vm(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Bm(e){var t=e.match(aa),n,r;for(n=0,r=t.length;n=0&&Mr.test(e);)e=e.replace(Mr,r),Mr.lastIndex=0,n-=1;return e}var Gm={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function zm(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(aa).map(function(r){return r==="MMMM"||r==="MM"||r==="DD"||r==="dddd"?r.slice(1):r}).join(""),this._longDateFormat[e])}var qm="Invalid date";function Km(){return this._invalidDate}var Zm="%d",Jm=/\d{1,2}/;function Qm(e){return this._ordinal.replace("%d",e)}var Xm={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ep(e,t,n,r){var s=this._relativeTime[n];return ht(s)?s(e,t,n,r):s.replace(/%d/i,e)}function tp(e,t){var n=this._relativeTime[e>0?"future":"past"];return ht(n)?n(t):n.replace(/%s/i,t)}var Qn={};function xe(e,t){var n=e.toLowerCase();Qn[n]=Qn[n+"s"]=Qn[t]=e}function Ge(e){return typeof e=="string"?Qn[e]||Qn[e.toLowerCase()]:void 0}function oa(e){var t={},n,r;for(r in e)Z(e,r)&&(n=Ge(r),n&&(t[n]=e[r]));return t}var gu={};function Me(e,t){gu[e]=t}function np(e){var t=[],n;for(n in e)Z(e,n)&&t.push({unit:n,priority:gu[n]});return t.sort(function(r,s){return r.priority-s.priority}),t}function ws(e){return e%4===0&&e%100!==0||e%400===0}function We(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function B(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=We(t)),n}function Fn(e,t){return function(n){return n!=null?(_u(this,e,n),T.updateOffset(this,t),this):Jr(this,e)}}function Jr(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function _u(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&ws(e.year())&&e.month()===1&&e.date()===29?(n=B(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Es(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function rp(e){return e=Ge(e),ht(this[e])?this[e]():this}function sp(e,t){if(typeof e=="object"){e=oa(e);var n=np(e),r,s=n.length;for(r=0;r68?1900:2e3)};var ku=Fn("FullYear",!0);function Op(){return ws(this.year())}function xp(e,t,n,r,s,i,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,n,r,s,i,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,r,s,i,a),o}function lr(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Xr(e,t,n){var r=7+t-n,s=(7+lr(e,0,r).getUTCDay()-t)%7;return-s+r-1}function Tu(e,t,n,r,s){var i=(7+n-r)%7,a=Xr(e,r,s),o=1+7*(t-1)+i+a,l,u;return o<=0?(l=e-1,u=Xn(l)+o):o>Xn(e)?(l=e+1,u=o-Xn(e)):(l=e,u=o),{year:l,dayOfYear:u}}function ur(e,t,n){var r=Xr(e.year(),t,n),s=Math.floor((e.dayOfYear()-r-1)/7)+1,i,a;return s<1?(a=e.year()-1,i=s+Mt(a,t,n)):s>Mt(e.year(),t,n)?(i=s-Mt(e.year(),t,n),a=e.year()+1):(a=e.year(),i=s),{week:i,year:a}}function Mt(e,t,n){var r=Xr(e,t,n),s=Xr(e+1,t,n);return(Xn(e)-r+s)/7}Y("w",["ww",2],"wo","week");Y("W",["WW",2],"Wo","isoWeek");xe("week","w");xe("isoWeek","W");Me("week",5);Me("isoWeek",5);P("w",fe);P("ww",fe,je);P("W",fe);P("WW",fe,je);_r(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=B(e)});function Mp(e){return ur(e,this._week.dow,this._week.doy).week}var Ep={dow:0,doy:6};function kp(){return this._week.dow}function Tp(){return this._week.doy}function Dp(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Pp(e){var t=ur(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}Y("d",0,"do","day");Y("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});Y("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});Y("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});Y("e",0,0,"weekday");Y("E",0,0,"isoWeekday");xe("day","d");xe("weekday","e");xe("isoWeekday","E");Me("day",11);Me("weekday",11);Me("isoWeekday",11);P("d",fe);P("e",fe);P("E",fe);P("dd",function(e,t){return t.weekdaysMinRegex(e)});P("ddd",function(e,t){return t.weekdaysShortRegex(e)});P("dddd",function(e,t){return t.weekdaysRegex(e)});_r(["dd","ddd","dddd"],function(e,t,n,r){var s=n._locale.weekdaysParse(e,r,n._strict);s!=null?t.d=s:W(n).invalidWeekday=e});_r(["d","e","E"],function(e,t,n,r){t[r]=B(e)});function Rp(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Cp(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function ca(e,t){return e.slice(t,7).concat(e.slice(0,t))}var Ap="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Du="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Np="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ip=gr,Yp=gr,Lp=gr;function Fp(e,t){var n=Qe(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?ca(n,this._week.dow):e?n[e.day()]:n}function Up(e){return e===!0?ca(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function jp(e){return e===!0?ca(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function $p(e,t,n){var r,s,i,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=dt([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?t==="dddd"?(s=me.call(this._weekdaysParse,a),s!==-1?s:null):t==="ddd"?(s=me.call(this._shortWeekdaysParse,a),s!==-1?s:null):(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null):t==="dddd"?(s=me.call(this._weekdaysParse,a),s!==-1||(s=me.call(this._shortWeekdaysParse,a),s!==-1)?s:(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null)):t==="ddd"?(s=me.call(this._shortWeekdaysParse,a),s!==-1||(s=me.call(this._weekdaysParse,a),s!==-1)?s:(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null)):(s=me.call(this._minWeekdaysParse,a),s!==-1||(s=me.call(this._weekdaysParse,a),s!==-1)?s:(s=me.call(this._shortWeekdaysParse,a),s!==-1?s:null))}function Wp(e,t,n){var r,s,i;if(this._weekdaysParseExact)return $p.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(s=dt([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function Hp(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=Rp(e,this.localeData()),this.add(e-t,"d")):t}function Vp(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Bp(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Cp(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Gp(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||fa.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Z(this,"_weekdaysRegex")||(this._weekdaysRegex=Ip),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function zp(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||fa.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Z(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Yp),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function qp(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||fa.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Z(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Lp),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function fa(){function e(c,d){return d.length-c.length}var t=[],n=[],r=[],s=[],i,a,o,l,u;for(i=0;i<7;i++)a=dt([2e3,1]).day(i),o=Ie(this.weekdaysMin(a,"")),l=Ie(this.weekdaysShort(a,"")),u=Ie(this.weekdays(a,"")),t.push(o),n.push(l),r.push(u),s.push(o),s.push(l),s.push(u);t.sort(e),n.sort(e),r.sort(e),s.sort(e),this._weekdaysRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function da(){return this.hours()%12||12}function Kp(){return this.hours()||24}Y("H",["HH",2],0,"hour");Y("h",["hh",2],0,da);Y("k",["kk",2],0,Kp);Y("hmm",0,0,function(){return""+da.apply(this)+ft(this.minutes(),2)});Y("hmmss",0,0,function(){return""+da.apply(this)+ft(this.minutes(),2)+ft(this.seconds(),2)});Y("Hmm",0,0,function(){return""+this.hours()+ft(this.minutes(),2)});Y("Hmmss",0,0,function(){return""+this.hours()+ft(this.minutes(),2)+ft(this.seconds(),2)});function Pu(e,t){Y(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Pu("a",!0);Pu("A",!1);xe("hour","h");Me("hour",13);function Ru(e,t){return t._meridiemParse}P("a",Ru);P("A",Ru);P("H",fe);P("h",fe);P("k",fe);P("HH",fe,je);P("hh",fe,je);P("kk",fe,je);P("hmm",wu);P("hmmss",bu);P("Hmm",wu);P("Hmmss",bu);ee(["H","HH"],_e);ee(["k","kk"],function(e,t,n){var r=B(e);t[_e]=r===24?0:r});ee(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});ee(["h","hh"],function(e,t,n){t[_e]=B(e),W(n).bigHour=!0});ee("hmm",function(e,t,n){var r=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r)),W(n).bigHour=!0});ee("hmmss",function(e,t,n){var r=e.length-4,s=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r,2)),t[xt]=B(e.substr(s)),W(n).bigHour=!0});ee("Hmm",function(e,t,n){var r=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r))});ee("Hmmss",function(e,t,n){var r=e.length-4,s=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r,2)),t[xt]=B(e.substr(s))});function Zp(e){return(e+"").toLowerCase().charAt(0)==="p"}var Jp=/[ap]\.?m?\.?/i,Qp=Fn("Hours",!0);function Xp(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var Cu={calendar:Wm,longDateFormat:Gm,invalidDate:qm,ordinal:Zm,dayOfMonthOrdinalParse:Jm,relativeTime:Xm,months:hp,monthsShort:Su,week:Ep,weekdays:Ap,weekdaysMin:Np,weekdaysShort:Du,meridiemParse:Jp},he={},Hn={},cr;function eg(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(s=ks(i.slice(0,n).join("-")),s)return s;if(r&&r.length>=n&&eg(i,r)>=n-1)break;n--}t++}return cr}function ng(e){return e.match("^[^/\\\\]*$")!=null}function ks(e){var t=null,n;if(he[e]===void 0&&typeof module!="undefined"&&module&&module.exports&&ng(e))try{t=cr._abbr,n=require,n("./locale/"+e),Wt(t)}catch(r){he[e]=null}return he[e]}function Wt(e,t){var n;return e&&(Pe(t)?n=Dt(e):n=ha(e,t),n?cr=n:typeof console!="undefined"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),cr._abbr}function ha(e,t){if(t!==null){var n,r=Cu;if(t.abbr=e,he[e]!=null)mu("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=he[e]._config;else if(t.parentLocale!=null)if(he[t.parentLocale]!=null)r=he[t.parentLocale]._config;else if(n=ks(t.parentLocale),n!=null)r=n._config;else return Hn[t.parentLocale]||(Hn[t.parentLocale]=[]),Hn[t.parentLocale].push({name:e,config:t}),null;return he[e]=new ia(pi(r,t)),Hn[e]&&Hn[e].forEach(function(s){ha(s.name,s.config)}),Wt(e),he[e]}else return delete he[e],null}function rg(e,t){if(t!=null){var n,r,s=Cu;he[e]!=null&&he[e].parentLocale!=null?he[e].set(pi(he[e]._config,t)):(r=ks(e),r!=null&&(s=r._config),t=pi(s,t),r==null&&(t.abbr=e),n=new ia(t),n.parentLocale=he[e],he[e]=n),Wt(e)}else he[e]!=null&&(he[e].parentLocale!=null?(he[e]=he[e].parentLocale,e===Wt()&&Wt(e)):he[e]!=null&&delete he[e]);return he[e]}function Dt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return cr;if(!Qe(e)){if(t=ks(e),t)return t;e=[e]}return tg(e)}function sg(){return gi(he)}function ma(e){var t,n=e._a;return n&&W(e).overflow===-2&&(t=n[Ot]<0||n[Ot]>11?Ot:n[ot]<1||n[ot]>Es(n[Oe],n[Ot])?ot:n[_e]<0||n[_e]>24||n[_e]===24&&(n[qe]!==0||n[xt]!==0||n[Jt]!==0)?_e:n[qe]<0||n[qe]>59?qe:n[xt]<0||n[xt]>59?xt:n[Jt]<0||n[Jt]>999?Jt:-1,W(e)._overflowDayOfYear&&(tot)&&(t=ot),W(e)._overflowWeeks&&t===-1&&(t=cp),W(e)._overflowWeekday&&t===-1&&(t=fp),W(e).overflow=t),e}var ig=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ag=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,og=/Z|[+-]\d\d(?::?\d\d)?/,Er=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Vs=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],lg=/^\/?Date\((-?\d+)/i,ug=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,cg={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Au(e){var t,n,r=e._i,s=ig.exec(r)||ag.exec(r),i,a,o,l,u=Er.length,c=Vs.length;if(s){for(W(e).iso=!0,t=0,n=u;tXn(a)||e._dayOfYear===0)&&(W(e)._overflowDayOfYear=!0),n=lr(a,0,e._dayOfYear),e._a[Ot]=n.getUTCMonth(),e._a[ot]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=s[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[_e]===24&&e._a[qe]===0&&e._a[xt]===0&&e._a[Jt]===0&&(e._nextDay=!0,e._a[_e]=0),e._d=(e._useUTC?lr:xp).apply(null,r),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[_e]=24),e._w&&typeof e._w.d!="undefined"&&e._w.d!==i&&(W(e).weekdayMismatch=!0)}}function yg(e){var t,n,r,s,i,a,o,l,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(i=1,a=4,n=On(t.GG,e._a[Oe],ur(ce(),1,4).year),r=On(t.W,1),s=On(t.E,1),(s<1||s>7)&&(l=!0)):(i=e._locale._week.dow,a=e._locale._week.doy,u=ur(ce(),i,a),n=On(t.gg,e._a[Oe],u.year),r=On(t.w,u.week),t.d!=null?(s=t.d,(s<0||s>6)&&(l=!0)):t.e!=null?(s=t.e+i,(t.e<0||t.e>6)&&(l=!0)):s=i),r<1||r>Mt(n,i,a)?W(e)._overflowWeeks=!0:l!=null?W(e)._overflowWeekday=!0:(o=Tu(n,r,s,i,a),e._a[Oe]=o.year,e._dayOfYear=o.dayOfYear)}T.ISO_8601=function(){};T.RFC_2822=function(){};function ga(e){if(e._f===T.ISO_8601){Au(e);return}if(e._f===T.RFC_2822){Nu(e);return}e._a=[],W(e).empty=!0;var t=""+e._i,n,r,s,i,a,o=t.length,l=0,u,c;for(s=pu(e._f,e._locale).match(aa)||[],c=s.length,n=0;n0&&W(e).unusedInput.push(a),t=t.slice(t.indexOf(r)+r.length),l+=r.length),Dn[i]?(r?W(e).empty=!1:W(e).unusedTokens.push(i),up(i,r,e)):e._strict&&!r&&W(e).unusedTokens.push(i);W(e).charsLeftOver=o-l,t.length>0&&W(e).unusedInput.push(t),e._a[_e]<=12&&W(e).bigHour===!0&&e._a[_e]>0&&(W(e).bigHour=void 0),W(e).parsedDateParts=e._a.slice(0),W(e).meridiem=e._meridiem,e._a[_e]=vg(e._locale,e._a[_e],e._meridiem),u=W(e).era,u!==null&&(e._a[Oe]=e._locale.erasConvertYear(u,e._a[Oe])),pa(e),ma(e)}function vg(e,t,n){var r;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(r=e.isPM(n),r&&t<12&&(t+=12),!r&&t===12&&(t=0)),t)}function wg(e){var t,n,r,s,i,a,o=!1,l=e._f.length;if(l===0){W(e).invalidFormat=!0,e._d=new Date(NaN);return}for(s=0;sthis?this:e:vs()});function Lu(e,t){var n,r;if(t.length===1&&Qe(t[0])&&(t=t[0]),!t.length)return ce();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function $g(){if(!Pe(this._isDSTShifted))return this._isDSTShifted;var e={},t;return sa(e,this),e=Iu(e),e._a?(t=e._isUTC?dt(e._a):ce(e._a),this._isDSTShifted=this.isValid()&&Cg(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Wg(){return this.isValid()?!this._isUTC:!1}function Hg(){return this.isValid()?this._isUTC:!1}function Uu(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Vg=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Bg=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function tt(e,t){var n=e,r=null,s,i,a;return Nr(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:kt(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(r=Vg.exec(e))?(s=r[1]==="-"?-1:1,n={y:0,d:B(r[ot])*s,h:B(r[_e])*s,m:B(r[qe])*s,s:B(r[xt])*s,ms:B(yi(r[Jt]*1e3))*s}):(r=Bg.exec(e))?(s=r[1]==="-"?-1:1,n={y:Gt(r[2],s),M:Gt(r[3],s),w:Gt(r[4],s),d:Gt(r[5],s),h:Gt(r[6],s),m:Gt(r[7],s),s:Gt(r[8],s)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(a=Gg(ce(n.from),ce(n.to)),n={},n.ms=a.milliseconds,n.M=a.months),i=new Ts(n),Nr(e)&&Z(e,"_locale")&&(i._locale=e._locale),Nr(e)&&Z(e,"_isValid")&&(i._isValid=e._isValid),i}tt.fn=Ts.prototype;tt.invalid=Rg;function Gt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function xo(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Gg(e,t){var n;return e.isValid()&&t.isValid()?(t=ya(t,e),e.isBefore(t)?n=xo(e,t):(n=xo(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function ju(e,t){return function(n,r){var s,i;return r!==null&&!isNaN(+r)&&(mu(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),s=tt(n,r),$u(this,s,e),this}}function $u(e,t,n,r){var s=t._milliseconds,i=yi(t._days),a=yi(t._months);!e.isValid()||(r=r==null?!0:r,a&&xu(e,Jr(e,"Month")+a*n),i&&_u(e,"Date",Jr(e,"Date")+i*n),s&&e._d.setTime(e._d.valueOf()+s*n),r&&T.updateOffset(e,i||a))}var zg=ju(1,"add"),qg=ju(-1,"subtract");function Wu(e){return typeof e=="string"||e instanceof String}function Kg(e){return Xe(e)||mr(e)||Wu(e)||kt(e)||Jg(e)||Zg(e)||e===null||e===void 0}function Zg(e){var t=nn(e)&&!na(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],s,i,a=r.length;for(s=0;sn.valueOf():n.valueOf()9999?Ar(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ht(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ar(n,"Z")):Ar(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function f_(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,s,i;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",s="-MM-DD[T]HH:mm:ss.SSS",i=t+'[")]',this.format(n+r+s+i)}function d_(e){e||(e=this.isUtc()?T.defaultFormatUtc:T.defaultFormat);var t=Ar(this,e);return this.localeData().postformat(t)}function h_(e,t){return this.isValid()&&(Xe(e)&&e.isValid()||ce(e).isValid())?tt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function m_(e){return this.from(ce(),e)}function p_(e,t){return this.isValid()&&(Xe(e)&&e.isValid()||ce(e).isValid())?tt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function g_(e){return this.to(ce(),e)}function Hu(e){var t;return e===void 0?this._locale._abbr:(t=Dt(e),t!=null&&(this._locale=t),this)}var Vu=Be("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Bu(){return this._locale}var es=1e3,Pn=60*es,ts=60*Pn,Gu=(365*400+97)*24*ts;function Rn(e,t){return(e%t+t)%t}function zu(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-Gu:new Date(e,t,n).valueOf()}function qu(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-Gu:Date.UTC(e,t,n)}function __(e){var t,n;if(e=Ge(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?qu:zu,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Rn(t+(this._isUTC?0:this.utcOffset()*Pn),ts);break;case"minute":t=this._d.valueOf(),t-=Rn(t,Pn);break;case"second":t=this._d.valueOf(),t-=Rn(t,es);break}return this._d.setTime(t),T.updateOffset(this,!0),this}function y_(e){var t,n;if(e=Ge(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?qu:zu,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ts-Rn(t+(this._isUTC?0:this.utcOffset()*Pn),ts)-1;break;case"minute":t=this._d.valueOf(),t+=Pn-Rn(t,Pn)-1;break;case"second":t=this._d.valueOf(),t+=es-Rn(t,es)-1;break}return this._d.setTime(t),T.updateOffset(this,!0),this}function v_(){return this._d.valueOf()-(this._offset||0)*6e4}function w_(){return Math.floor(this.valueOf()/1e3)}function b_(){return new Date(this.valueOf())}function S_(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function O_(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function x_(){return this.isValid()?this.toISOString():null}function M_(){return ra(this)}function E_(){return Ft({},W(this))}function k_(){return W(this).overflow}function T_(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}Y("N",0,0,"eraAbbr");Y("NN",0,0,"eraAbbr");Y("NNN",0,0,"eraAbbr");Y("NNNN",0,0,"eraName");Y("NNNNN",0,0,"eraNarrow");Y("y",["y",1],"yo","eraYear");Y("y",["yy",2],0,"eraYear");Y("y",["yyy",3],0,"eraYear");Y("y",["yyyy",4],0,"eraYear");P("N",va);P("NN",va);P("NNN",va);P("NNNN",U_);P("NNNNN",j_);ee(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var s=n._locale.erasParse(e,r,n._strict);s?W(n).era=s:W(n).invalidEra=e});P("y",Un);P("yy",Un);P("yyy",Un);P("yyyy",Un);P("yo",$_);ee(["y","yy","yyy","yyyy"],Oe);ee(["yo"],function(e,t,n,r){var s;n._locale._eraYearOrdinalRegex&&(s=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Oe]=n._locale.eraYearOrdinalParse(e,s):t[Oe]=parseInt(e,10)});function D_(e,t){var n,r,s,i=this._eras||Dt("en")._eras;for(n=0,r=i.length;n=0)return i[r]}function R_(e,t){var n=e.since<=e.until?1:-1;return t===void 0?T(e.since).year():T(e.since).year()+(t-e.offset)*n}function C_(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;ei&&(t=i),q_.call(this,e,t,n,r,s))}function q_(e,t,n,r,s){var i=Tu(e,t,n,r,s),a=lr(i.year,0,i.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}Y("Q",0,"Qo","quarter");xe("quarter","Q");Me("quarter",7);P("Q",yu);ee("Q",function(e,t){t[Ot]=(B(e)-1)*3});function K_(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}Y("D",["DD",2],"Do","date");xe("date","D");Me("date",9);P("D",fe);P("DD",fe,je);P("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});ee(["D","DD"],ot);ee("Do",function(e,t){t[ot]=B(e.match(fe)[0])});var Zu=Fn("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear");xe("dayOfYear","DDD");Me("dayOfYear",4);P("DDD",Ss);P("DDDD",vu);ee(["DDD","DDDD"],function(e,t,n){n._dayOfYear=B(e)});function Z_(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}Y("m",["mm",2],0,"minute");xe("minute","m");Me("minute",14);P("m",fe);P("mm",fe,je);ee(["m","mm"],qe);var J_=Fn("Minutes",!1);Y("s",["ss",2],0,"second");xe("second","s");Me("second",15);P("s",fe);P("ss",fe,je);ee(["s","ss"],xt);var Q_=Fn("Seconds",!1);Y("S",0,0,function(){return~~(this.millisecond()/100)});Y(0,["SS",2],0,function(){return~~(this.millisecond()/10)});Y(0,["SSS",3],0,"millisecond");Y(0,["SSSS",4],0,function(){return this.millisecond()*10});Y(0,["SSSSS",5],0,function(){return this.millisecond()*100});Y(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});Y(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});Y(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});Y(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});xe("millisecond","ms");Me("millisecond",16);P("S",Ss,yu);P("SS",Ss,je);P("SSS",Ss,vu);var Ut,Ju;for(Ut="SSSS";Ut.length<=9;Ut+="S")P(Ut,Un);function X_(e,t){t[Jt]=B(("0."+e)*1e3)}for(Ut="S";Ut.length<=9;Ut+="S")ee(Ut,X_);Ju=Fn("Milliseconds",!1);Y("z",0,0,"zoneAbbr");Y("zz",0,0,"zoneName");function ey(){return this._isUTC?"UTC":""}function ty(){return this._isUTC?"Coordinated Universal Time":""}var b=pr.prototype;b.add=zg;b.calendar=e_;b.clone=t_;b.diff=l_;b.endOf=y_;b.format=d_;b.from=h_;b.fromNow=m_;b.to=p_;b.toNow=g_;b.get=rp;b.invalidAt=k_;b.isAfter=n_;b.isBefore=r_;b.isBetween=s_;b.isSame=i_;b.isSameOrAfter=a_;b.isSameOrBefore=o_;b.isValid=M_;b.lang=Vu;b.locale=Hu;b.localeData=Bu;b.max=Mg;b.min=xg;b.parsingFlags=E_;b.set=sp;b.startOf=__;b.subtract=qg;b.toArray=S_;b.toObject=O_;b.toDate=b_;b.toISOString=c_;b.inspect=f_;typeof Symbol!="undefined"&&Symbol.for!=null&&(b[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});b.toJSON=x_;b.toString=u_;b.unix=w_;b.valueOf=v_;b.creationData=T_;b.eraName=C_;b.eraNarrow=A_;b.eraAbbr=N_;b.eraYear=I_;b.year=ku;b.isLeapYear=Op;b.weekYear=W_;b.isoWeekYear=H_;b.quarter=b.quarters=K_;b.month=Mu;b.daysInMonth=wp;b.week=b.weeks=Dp;b.isoWeek=b.isoWeeks=Pp;b.weeksInYear=G_;b.weeksInWeekYear=z_;b.isoWeeksInYear=V_;b.isoWeeksInISOWeekYear=B_;b.date=Zu;b.day=b.days=Hp;b.weekday=Vp;b.isoWeekday=Bp;b.dayOfYear=Z_;b.hour=b.hours=Qp;b.minute=b.minutes=J_;b.second=b.seconds=Q_;b.millisecond=b.milliseconds=Ju;b.utcOffset=Ng;b.utc=Yg;b.local=Lg;b.parseZone=Fg;b.hasAlignedHourOffset=Ug;b.isDST=jg;b.isLocal=Wg;b.isUtcOffset=Hg;b.isUtc=Uu;b.isUTC=Uu;b.zoneAbbr=ey;b.zoneName=ty;b.dates=Be("dates accessor is deprecated. Use date instead.",Zu);b.months=Be("months accessor is deprecated. Use month instead",Mu);b.years=Be("years accessor is deprecated. Use year instead",ku);b.zone=Be("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ig);b.isDSTShifted=Be("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",$g);function ny(e){return ce(e*1e3)}function ry(){return ce.apply(null,arguments).parseZone()}function Qu(e){return e}var J=ia.prototype;J.calendar=Hm;J.longDateFormat=zm;J.invalidDate=Km;J.ordinal=Qm;J.preparse=Qu;J.postformat=Qu;J.relativeTime=ep;J.pastFuture=tp;J.set=$m;J.eras=D_;J.erasParse=P_;J.erasConvertYear=R_;J.erasAbbrRegex=L_;J.erasNameRegex=Y_;J.erasNarrowRegex=F_;J.months=gp;J.monthsShort=_p;J.monthsParse=vp;J.monthsRegex=Sp;J.monthsShortRegex=bp;J.week=Mp;J.firstDayOfYear=Tp;J.firstDayOfWeek=kp;J.weekdays=Fp;J.weekdaysMin=jp;J.weekdaysShort=Up;J.weekdaysParse=Wp;J.weekdaysRegex=Gp;J.weekdaysShortRegex=zp;J.weekdaysMinRegex=qp;J.isPM=Zp;J.meridiem=Xp;function ns(e,t,n,r){var s=Dt(),i=dt().set(r,t);return s[n](i,e)}function Xu(e,t,n){if(kt(e)&&(t=e,e=void 0),e=e||"",t!=null)return ns(e,t,n,"month");var r,s=[];for(r=0;r<12;r++)s[r]=ns(e,r,n,"month");return s}function ba(e,t,n,r){typeof e=="boolean"?(kt(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,kt(t)&&(n=t,t=void 0),t=t||"");var s=Dt(),i=e?s._week.dow:0,a,o=[];if(n!=null)return ns(t,(n+i)%7,r,"day");for(a=0;a<7;a++)o[a]=ns(t,(a+i)%7,r,"day");return o}function sy(e,t){return Xu(e,t,"months")}function iy(e,t){return Xu(e,t,"monthsShort")}function ay(e,t,n){return ba(e,t,n,"weekdays")}function oy(e,t,n){return ba(e,t,n,"weekdaysShort")}function ly(e,t,n){return ba(e,t,n,"weekdaysMin")}Wt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=B(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});T.lang=Be("moment.lang is deprecated. Use moment.locale instead.",Wt);T.langData=Be("moment.langData is deprecated. Use moment.localeData instead.",Dt);var yt=Math.abs;function uy(){var e=this._data;return this._milliseconds=yt(this._milliseconds),this._days=yt(this._days),this._months=yt(this._months),e.milliseconds=yt(e.milliseconds),e.seconds=yt(e.seconds),e.minutes=yt(e.minutes),e.hours=yt(e.hours),e.months=yt(e.months),e.years=yt(e.years),this}function ec(e,t,n,r){var s=tt(t,n);return e._milliseconds+=r*s._milliseconds,e._days+=r*s._days,e._months+=r*s._months,e._bubble()}function cy(e,t){return ec(this,e,t,1)}function fy(e,t){return ec(this,e,t,-1)}function Mo(e){return e<0?Math.floor(e):Math.ceil(e)}function dy(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,s,i,a,o,l;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=Mo(wi(n)+t)*864e5,t=0,n=0),r.milliseconds=e%1e3,s=We(e/1e3),r.seconds=s%60,i=We(s/60),r.minutes=i%60,a=We(i/60),r.hours=a%24,t+=We(a/24),l=We(tc(t)),n+=l,t-=Mo(wi(l)),o=We(n/12),n%=12,r.days=t,r.months=n,r.years=o,this}function tc(e){return e*4800/146097}function wi(e){return e*146097/4800}function hy(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if(e=Ge(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+r/864e5,n=this._months+tc(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(wi(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}function my(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+B(this._months/12)*31536e6:NaN}function Pt(e){return function(){return this.as(e)}}var py=Pt("ms"),gy=Pt("s"),_y=Pt("m"),yy=Pt("h"),vy=Pt("d"),wy=Pt("w"),by=Pt("M"),Sy=Pt("Q"),Oy=Pt("y");function xy(){return tt(this)}function My(e){return e=Ge(e),this.isValid()?this[e+"s"]():NaN}function un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ey=un("milliseconds"),ky=un("seconds"),Ty=un("minutes"),Dy=un("hours"),Py=un("days"),Ry=un("months"),Cy=un("years");function Ay(){return We(this.days()/7)}var wt=Math.round,Mn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Ny(e,t,n,r,s){return s.relativeTime(t||1,!!n,e,r)}function Iy(e,t,n,r){var s=tt(e).abs(),i=wt(s.as("s")),a=wt(s.as("m")),o=wt(s.as("h")),l=wt(s.as("d")),u=wt(s.as("M")),c=wt(s.as("w")),d=wt(s.as("y")),h=i<=n.ss&&["s",i]||i0,h[4]=r,Ny.apply(null,h)}function Yy(e){return e===void 0?wt:typeof e=="function"?(wt=e,!0):!1}function Ly(e,t){return Mn[e]===void 0?!1:t===void 0?Mn[e]:(Mn[e]=t,e==="s"&&(Mn.ss=t-1),!0)}function Fy(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,r=Mn,s,i;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(r=Object.assign({},Mn,t),t.s!=null&&t.ss==null&&(r.ss=t.s-1)),s=this.localeData(),i=Iy(this,!n,r,s),n&&(i=s.pastFuture(+this,i)),s.postformat(i)}var Bs=Math.abs;function vn(e){return(e>0)-(e<0)||+e}function Ps(){if(!this.isValid())return this.localeData().invalidDate();var e=Bs(this._milliseconds)/1e3,t=Bs(this._days),n=Bs(this._months),r,s,i,a,o=this.asSeconds(),l,u,c,d;return o?(r=We(e/60),s=We(r/60),e%=60,r%=60,i=We(n/12),n%=12,a=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=o<0?"-":"",u=vn(this._months)!==vn(o)?"-":"",c=vn(this._days)!==vn(o)?"-":"",d=vn(this._milliseconds)!==vn(o)?"-":"",l+"P"+(i?u+i+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(s||r||e?"T":"")+(s?d+s+"H":"")+(r?d+r+"M":"")+(e?d+a+"S":"")):"P0D"}var z=Ts.prototype;z.isValid=Pg;z.abs=uy;z.add=cy;z.subtract=fy;z.as=hy;z.asMilliseconds=py;z.asSeconds=gy;z.asMinutes=_y;z.asHours=yy;z.asDays=vy;z.asWeeks=wy;z.asMonths=by;z.asQuarters=Sy;z.asYears=Oy;z.valueOf=my;z._bubble=dy;z.clone=xy;z.get=My;z.milliseconds=Ey;z.seconds=ky;z.minutes=Ty;z.hours=Dy;z.days=Py;z.weeks=Ay;z.months=Ry;z.years=Cy;z.humanize=Fy;z.toISOString=Ps;z.toString=Ps;z.toJSON=Ps;z.locale=Hu;z.localeData=Bu;z.toIsoString=Be("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ps);z.lang=Vu;Y("X",0,0,"unix");Y("x",0,0,"valueOf");P("x",xs);P("X",ap);ee("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});ee("x",function(e,t,n){n._d=new Date(B(e))});//! moment.js -T.version="2.29.3";Um(ce);T.fn=b;T.min=Eg;T.max=kg;T.now=Tg;T.utc=dt;T.unix=ny;T.months=sy;T.isDate=mr;T.locale=Wt;T.invalid=vs;T.duration=tt;T.isMoment=Xe;T.weekdays=ay;T.parseZone=ry;T.localeData=Dt;T.isDuration=Nr;T.monthsShort=iy;T.weekdaysMin=ly;T.defineLocale=ha;T.updateLocale=rg;T.locales=sg;T.weekdaysShort=oy;T.normalizeUnits=Ge;T.relativeTimeRounding=Yy;T.relativeTimeThreshold=Ly;T.calendarFormat=Xg;T.prototype=b;T.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};/*! - * vue-router v4.0.13 - * (c) 2022 Eduardo San Martin Morote - * @license MIT - */const nc=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol",jn=e=>nc?Symbol(e):"_vr_"+e,Uy=jn("rvlm"),Eo=jn("rvd"),Sa=jn("r"),rc=jn("rl"),bi=jn("rvl"),xn=typeof window!="undefined";function jy(e){return e.__esModule||nc&&e[Symbol.toStringTag]==="Module"}const ie=Object.assign;function Gs(e,t){const n={};for(const r in t){const s=t[r];n[r]=Array.isArray(s)?s.map(e):e(s)}return n}const er=()=>{},$y=/\/$/,Wy=e=>e.replace($y,"");function zs(e,t,n="/"){let r,s={},i="",a="";const o=t.indexOf("?"),l=t.indexOf("#",o>-1?o:0);return o>-1&&(r=t.slice(0,o),i=t.slice(o+1,l>-1?l:t.length),s=e(i)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=Gy(r!=null?r:t,n),{fullPath:r+(i&&"?")+i+a,path:r,query:s,hash:a}}function Hy(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ko(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vy(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&An(t.matched[r],n.matched[s])&&sc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function An(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function sc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!By(e[n],t[n]))return!1;return!0}function By(e,t){return Array.isArray(e)?To(e,t):Array.isArray(t)?To(t,e):e===t}function To(e,t){return Array.isArray(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Gy(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let s=n.length-1,i,a;for(i=0;i({left:window.pageXOffset,top:window.pageYOffset});function Jy(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Zy(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Do(e,t){return(history.state?history.state.position-t:-1)+e}const Si=new Map;function Qy(e,t){Si.set(e,t)}function Xy(e){const t=Si.get(e);return Si.delete(e),t}let ev=()=>location.protocol+"//"+location.host;function ic(e,t){const{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let o=s.includes(e.slice(i))?e.slice(i).length:1,l=s.slice(o);return l[0]!=="/"&&(l="/"+l),ko(l,"")}return ko(n,e)+r+s}function tv(e,t,n,r){let s=[],i=[],a=null;const o=({state:h})=>{const p=ic(e,location),x=n.value,C=t.value;let k=0;if(h){if(n.value=p,t.value=h,a&&a===x){a=null;return}k=C?h.position-C.position:0}else r(p);s.forEach(R=>{R(n.value,x,{delta:k,type:fr.pop,direction:k?k>0?tr.forward:tr.back:tr.unknown})})};function l(){a=n.value}function u(h){s.push(h);const p=()=>{const x=s.indexOf(h);x>-1&&s.splice(x,1)};return i.push(p),p}function c(){const{history:h}=window;!h.state||h.replaceState(ie({},h.state,{scroll:Rs()}),"")}function d(){for(const h of i)h();i=[],window.removeEventListener("popstate",o),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",o),window.addEventListener("beforeunload",c),{pauseListeners:l,listen:u,destroy:d}}function Po(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Rs():null}}function nv(e){const{history:t,location:n}=window,r={value:ic(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const d=e.indexOf("#"),h=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+l:ev()+e+l;try{t[c?"replaceState":"pushState"](u,"",h),s.value=u}catch(p){console.error(p),n[c?"replace":"assign"](h)}}function a(l,u){const c=ie({},t.state,Po(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});i(l,c,!0),r.value=l}function o(l,u){const c=ie({},s.value,t.state,{forward:l,scroll:Rs()});i(c.current,c,!0);const d=ie({},Po(r.value,l,null),{position:c.position+1},u);i(l,d,!1),r.value=l}return{location:r,state:s,push:o,replace:a}}function i0(e){e=zy(e);const t=nv(e),n=tv(e,t.state,t.location,t.replace);function r(i,a=!0){a||n.pauseListeners(),history.go(i)}const s=ie({location:"",base:e,go:r,createHref:Ky.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function rv(e){return typeof e=="string"||e&&typeof e=="object"}function ac(e){return typeof e=="string"||typeof e=="symbol"}const At={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},oc=jn("nf");var Ro;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ro||(Ro={}));function Nn(e,t){return ie(new Error,{type:e,[oc]:!0},t)}function Nt(e,t){return e instanceof Error&&oc in e&&(t==null||!!(e.type&t))}const Co="[^/]+?",sv={sensitive:!1,strict:!1,start:!0,end:!0},iv=/[.+*?^${}()[\]/\\]/g;function av(e,t){const n=ie({},sv,t),r=[];let s=n.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let d=0;dt.length?t.length===1&&t[0]===40+40?1:-1:0}function lv(e,t){let n=0;const r=e.score,s=t.score;for(;n1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function h(){u+=l}for(;o{a($)}:er}function a(c){if(ac(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(a),d.alias.forEach(a))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(a),c.alias.forEach(a))}}function o(){return n}function l(c){let d=0;for(;d=0&&(c.record.path!==n[d].record.path||!lc(c,n[d]));)d++;n.splice(d,0,c),c.record.name&&!Ao(c)&&r.set(c.record.name,c)}function u(c,d){let h,p={},x,C;if("name"in c&&c.name){if(h=r.get(c.name),!h)throw Nn(1,{location:c});C=h.record.name,p=ie(mv(d.params,h.keys.filter($=>!$.optional).map($=>$.name)),c.params),x=h.stringify(p)}else if("path"in c)x=c.path,h=n.find($=>$.re.test(x)),h&&(p=h.parse(x),C=h.record.name);else{if(h=d.name?r.get(d.name):n.find($=>$.re.test(d.path)),!h)throw Nn(1,{location:c,currentLocation:d});C=h.record.name,p=ie({},d.params,c.params),x=h.stringify(p)}const k=[];let R=h;for(;R;)k.unshift(R.record),R=R.parent;return{name:C,path:x,params:p,matched:k,meta:_v(k)}}return e.forEach(c=>i(c)),{addRoute:i,resolve:u,removeRoute:a,getRoutes:o,getRecordMatcher:s}}function mv(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function pv(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:gv(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||{}:{default:e.component}}}function gv(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="boolean"?n:n[r];return t}function Ao(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function _v(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function No(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function lc(e,t){return t.children.some(n=>n===e||lc(e,n))}const uc=/#/g,yv=/&/g,vv=/\//g,wv=/=/g,bv=/\?/g,cc=/\+/g,Sv=/%5B/g,Ov=/%5D/g,fc=/%5E/g,xv=/%60/g,dc=/%7B/g,Mv=/%7C/g,hc=/%7D/g,Ev=/%20/g;function Oa(e){return encodeURI(""+e).replace(Mv,"|").replace(Sv,"[").replace(Ov,"]")}function kv(e){return Oa(e).replace(dc,"{").replace(hc,"}").replace(fc,"^")}function Oi(e){return Oa(e).replace(cc,"%2B").replace(Ev,"+").replace(uc,"%23").replace(yv,"%26").replace(xv,"`").replace(dc,"{").replace(hc,"}").replace(fc,"^")}function Tv(e){return Oi(e).replace(wv,"%3D")}function Dv(e){return Oa(e).replace(uc,"%23").replace(bv,"%3F")}function Pv(e){return e==null?"":Dv(e).replace(vv,"%2F")}function rs(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}function Rv(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;si&&Oi(i)):[r&&Oi(r)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function Cv(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Array.isArray(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Bn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Lt(e,t,n,r,s){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,o)=>{const l=d=>{d===!1?o(Nn(4,{from:n,to:t})):d instanceof Error?o(d):rv(d)?o(Nn(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},u=e.call(r&&r.instances[s],t,n,l);let c=Promise.resolve(u);e.length<3&&(c=c.then(l)),c.catch(d=>o(d))})}function qs(e,t,n,r){const s=[];for(const i of e)for(const a in i.components){let o=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Av(o)){const u=(o.__vccOpts||o)[t];u&&s.push(Lt(u,n,r,i,a))}else{let l=o();s.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const c=jy(u)?u.default:u;i.components[a]=c;const h=(c.__vccOpts||c)[t];return h&&Lt(h,n,r,i,a)()}))}}return s}function Av(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Yo(e){const t=ut(Sa),n=ut(rc),r=He(()=>t.resolve(qn(e.to))),s=He(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],d=n.matched;if(!c||!d.length)return-1;const h=d.findIndex(An.bind(null,c));if(h>-1)return h;const p=Lo(l[u-2]);return u>1&&Lo(c)===p&&d[d.length-1].path!==p?d.findIndex(An.bind(null,l[u-2])):h}),i=He(()=>s.value>-1&&Lv(n.params,r.value.params)),a=He(()=>s.value>-1&&s.value===n.matched.length-1&&sc(n.params,r.value.params));function o(l={}){return Yv(l)?t[qn(e.replace)?"replace":"push"](qn(e.to)).catch(er):Promise.resolve()}return{route:r,href:He(()=>r.value.href),isActive:i,isExactActive:a,navigate:o}}const Nv=$i({name:"RouterLink",props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Yo,setup(e,{slots:t}){const n=an(Yo(e)),{options:r}=ut(Sa),s=He(()=>({[Fo(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Fo(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&t.default(n);return e.custom?i:Vr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},i)}}}),Iv=Nv;function Yv(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Lv(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Array.isArray(s)||s.length!==r.length||r.some((i,a)=>i!==s[a]))return!1}return!0}function Lo(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Fo=(e,t,n)=>e!=null?e:t!=null?t:n,Fv=$i({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},setup(e,{attrs:t,slots:n}){const r=ut(bi),s=He(()=>e.route||r.value),i=ut(Eo,0),a=He(()=>s.value.matched[i]);Dr(Eo,i+1),Dr(Uy,a),Dr(bi,s);const o=Fr();return Xt(()=>[o.value,a.value,e.name],([l,u,c],[d,h,p])=>{u&&(u.instances[c]=l,h&&h!==u&&l&&l===d&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),l&&u&&(!h||!An(u,h)||!d)&&(u.enterCallbacks[c]||[]).forEach(x=>x(l))},{flush:"post"}),()=>{const l=s.value,u=a.value,c=u&&u.components[e.name],d=e.name;if(!c)return Uo(n.default,{Component:c,route:l});const h=u.props[e.name],p=h?h===!0?l.params:typeof h=="function"?h(l):h:null,C=Vr(c,ie({},p,t,{onVnodeUnmounted:k=>{k.component.isUnmounted&&(u.instances[d]=null)},ref:o}));return Uo(n.default,{Component:C,route:l})||C}}});function Uo(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Uv=Fv;function a0(e){const t=hv(e.routes,e),n=e.parseQuery||Rv,r=e.stringifyQuery||Io,s=e.history,i=Bn(),a=Bn(),o=Bn(),l=nf(At);let u=At;xn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Gs.bind(null,_=>""+_),d=Gs.bind(null,Pv),h=Gs.bind(null,rs);function p(_,N){let E,I;return ac(_)?(E=t.getRecordMatcher(_),I=N):I=_,t.addRoute(I,E)}function x(_){const N=t.getRecordMatcher(_);N&&t.removeRoute(N)}function C(){return t.getRoutes().map(_=>_.record)}function k(_){return!!t.getRecordMatcher(_)}function R(_,N){if(N=ie({},N||l.value),typeof _=="string"){const H=zs(n,_,N.path),f=t.resolve({path:H.path},N),m=s.createHref(H.fullPath);return ie(H,f,{params:h(f.params),hash:rs(H.hash),redirectedFrom:void 0,href:m})}let E;if("path"in _)E=ie({},_,{path:zs(n,_.path,N.path).path});else{const H=ie({},_.params);for(const f in H)H[f]==null&&delete H[f];E=ie({},_,{params:d(_.params)}),N.params=d(N.params)}const I=t.resolve(E,N),re=_.hash||"";I.params=c(h(I.params));const le=Hy(r,ie({},_,{hash:kv(re),path:I.path})),G=s.createHref(le);return ie({fullPath:le,hash:re,query:r===Io?Cv(_.query):_.query||{}},I,{redirectedFrom:void 0,href:G})}function $(_){return typeof _=="string"?zs(n,_,l.value.path):ie({},_)}function X(_,N){if(u!==_)return Nn(8,{from:N,to:_})}function te(_){return mt(_)}function Te(_){return te(ie($(_),{replace:!0}))}function Ce(_){const N=_.matched[_.matched.length-1];if(N&&N.redirect){const{redirect:E}=N;let I=typeof E=="function"?E(_):E;return typeof I=="string"&&(I=I.includes("?")||I.includes("#")?I=$(I):{path:I},I.params={}),ie({query:_.query,hash:_.hash,params:_.params},I)}}function mt(_,N){const E=u=R(_),I=l.value,re=_.state,le=_.force,G=_.replace===!0,H=Ce(E);if(H)return mt(ie($(H),{state:re,force:le,replace:G}),N||E);const f=E;f.redirectedFrom=N;let m;return!le&&Vy(r,I,E)&&(m=Nn(16,{to:f,from:I}),mn(I,I,!0,!1)),(m?Promise.resolve(m):nt(f,I)).catch(g=>Nt(g)?Nt(g,2)?g:Ae(g):oe(g,f,I)).then(g=>{if(g){if(Nt(g,2))return mt(ie($(g.to),{state:re,force:le,replace:G}),N||f)}else g=pt(f,I,!0,G,re);return Rt(f,I,g),g})}function cn(_,N){const E=X(_,N);return E?Promise.reject(E):Promise.resolve()}function nt(_,N){let E;const[I,re,le]=jv(_,N);E=qs(I.reverse(),"beforeRouteLeave",_,N);for(const H of I)H.leaveGuards.forEach(f=>{E.push(Lt(f,_,N))});const G=cn.bind(null,_,N);return E.push(G),wn(E).then(()=>{E=[];for(const H of i.list())E.push(Lt(H,_,N));return E.push(G),wn(E)}).then(()=>{E=qs(re,"beforeRouteUpdate",_,N);for(const H of re)H.updateGuards.forEach(f=>{E.push(Lt(f,_,N))});return E.push(G),wn(E)}).then(()=>{E=[];for(const H of _.matched)if(H.beforeEnter&&!N.matched.includes(H))if(Array.isArray(H.beforeEnter))for(const f of H.beforeEnter)E.push(Lt(f,_,N));else E.push(Lt(H.beforeEnter,_,N));return E.push(G),wn(E)}).then(()=>(_.matched.forEach(H=>H.enterCallbacks={}),E=qs(le,"beforeRouteEnter",_,N),E.push(G),wn(E))).then(()=>{E=[];for(const H of a.list())E.push(Lt(H,_,N));return E.push(G),wn(E)}).catch(H=>Nt(H,8)?H:Promise.reject(H))}function Rt(_,N,E){for(const I of o.list())I(_,N,E)}function pt(_,N,E,I,re){const le=X(_,N);if(le)return le;const G=N===At,H=xn?history.state:{};E&&(I||G?s.replace(_.fullPath,ie({scroll:G&&H&&H.scroll},re)):s.push(_.fullPath,re)),l.value=_,mn(_,N,E,G),Ae()}let gt;function fn(){gt=s.listen((_,N,E)=>{const I=R(_),re=Ce(I);if(re){mt(ie(re,{replace:!0}),I).catch(er);return}u=I;const le=l.value;xn&&Qy(Do(le.fullPath,E.delta),Rs()),nt(I,le).catch(G=>Nt(G,12)?G:Nt(G,2)?(mt(G.to,I).then(H=>{Nt(H,20)&&!E.delta&&E.type===fr.pop&&s.go(-1,!1)}).catch(er),Promise.reject()):(E.delta&&s.go(-E.delta,!1),oe(G,I,le))).then(G=>{G=G||pt(I,le,!1),G&&(E.delta?s.go(-E.delta,!1):E.type===fr.pop&&Nt(G,20)&&s.go(-1,!1)),Rt(I,le,G)}).catch(er)})}let dn=Bn(),hn=Bn(),ge;function oe(_,N,E){Ae(_);const I=hn.list();return I.length?I.forEach(re=>re(_,N,E)):console.error(_),Promise.reject(_)}function ne(){return ge&&l.value!==At?Promise.resolve():new Promise((_,N)=>{dn.add([_,N])})}function Ae(_){return ge||(ge=!_,fn(),dn.list().forEach(([N,E])=>_?E(_):N()),dn.reset()),_}function mn(_,N,E,I){const{scrollBehavior:re}=e;if(!xn||!re)return Promise.resolve();const le=!E&&Xy(Do(_.fullPath,0))||(I||!E)&&history.state&&history.state.scroll||null;return cl().then(()=>re(_,N,le)).then(G=>G&&Jy(G)).catch(G=>oe(G,_,N))}const _t=_=>s.go(_);let rt;const $e=new Set;return{currentRoute:l,addRoute:p,removeRoute:x,hasRoute:k,getRoutes:C,resolve:R,options:e,push:te,replace:Te,go:_t,back:()=>_t(-1),forward:()=>_t(1),beforeEach:i.add,beforeResolve:a.add,afterEach:o.add,onError:hn.add,isReady:ne,install(_){const N=this;_.component("RouterLink",Iv),_.component("RouterView",Uv),_.config.globalProperties.$router=N,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>qn(l)}),xn&&!rt&&l.value===At&&(rt=!0,te(s.location).catch(re=>{}));const E={};for(const re in At)E[re]=He(()=>l.value[re]);_.provide(Sa,N),_.provide(rc,an(E)),_.provide(bi,l);const I=_.unmount;$e.add(_),_.unmount=function(){$e.delete(_),$e.size<1&&(u=At,gt&>(),l.value=At,rt=!1,ge=!1),I()}}}}function wn(e){return e.reduce((t,n)=>t.then(()=>n()),Promise.resolve())}function jv(e,t){const n=[],r=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aAn(u,o))?r.push(o):n.push(o));const l=e.matched[a];l&&(t.matched.find(u=>An(u,l))||s.push(l))}return[n,r,s]}export{Zv as A,Qv as B,n0 as C,Jv as D,Xv as E,bt as F,a0 as G,i0 as H,r0 as a,t0 as b,s0 as c,He as d,zv as e,Kv as f,Xf as g,qn as h,Vv as i,Il as j,qv as k,T as l,Fr as m,Ei as n,Jf as o,Hv as p,bl as q,Gv as r,Tf as s,Wv as t,Lm as u,Le as v,mf as w,e0 as x,Sl as y,Bv as z}; +`+new Error().stack),n=!1}return t.apply(this,arguments)},t)}var Yo={};function Eu(e,t){T.deprecationHandler!=null&&T.deprecationHandler(e,t),Yo[e]||(Mu(t),Yo[e]=!0)}T.suppressDeprecationWarnings=!1;T.deprecationHandler=null;function ht(e){return typeof Function!="undefined"&&e instanceof Function||Object.prototype.toString.call(e)==="[object Function]"}function Hp(e){var t,n;for(n in e)Z(e,n)&&(t=e[n],ht(t)?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function yi(e,t){var n=Ft({},e),r;for(r in t)Z(t,r)&&(nn(e[r])&&nn(t[r])?(n[r]={},Ft(n[r],e[r]),Ft(n[r],t[r])):t[r]!=null?n[r]=t[r]:delete n[r]);for(r in e)Z(e,r)&&!Z(t,r)&&nn(e[r])&&(n[r]=Ft({},n[r]));return n}function oa(e){e!=null&&this.set(e)}var vi;Object.keys?vi=Object.keys:vi=function(e){var t,n=[];for(t in e)Z(e,t)&&n.push(t);return n};var Vp={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function Bp(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return ht(r)?r.call(t,n):r}function ft(e,t,n){var r=""+Math.abs(e),s=t-r.length,i=e>=0;return(i?n?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+r}var la=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Mr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Gs={},Dn={};function Y(e,t,n,r){var s=r;typeof r=="string"&&(s=function(){return this[r]()}),e&&(Dn[e]=s),t&&(Dn[t[0]]=function(){return ft(s.apply(this,arguments),t[1],t[2])}),n&&(Dn[n]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})}function Gp(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function zp(e){var t=e.match(la),n,r;for(n=0,r=t.length;n=0&&Mr.test(e);)e=e.replace(Mr,r),Mr.lastIndex=0,n-=1;return e}var qp={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Kp(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(la).map(function(r){return r==="MMMM"||r==="MM"||r==="DD"||r==="dddd"?r.slice(1):r}).join(""),this._longDateFormat[e])}var Zp="Invalid date";function Jp(){return this._invalidDate}var Qp="%d",Xp=/\d{1,2}/;function eg(e){return this._ordinal.replace("%d",e)}var tg={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ng(e,t,n,r){var s=this._relativeTime[n];return ht(s)?s(e,t,n,r):s.replace(/%d/i,e)}function rg(e,t){var n=this._relativeTime[e>0?"future":"past"];return ht(n)?n(t):n.replace(/%s/i,t)}var er={};function xe(e,t){var n=e.toLowerCase();er[n]=er[n+"s"]=er[t]=e}function Ge(e){return typeof e=="string"?er[e]||er[e.toLowerCase()]:void 0}function ua(e){var t={},n,r;for(r in e)Z(e,r)&&(n=Ge(r),n&&(t[n]=e[r]));return t}var Tu={};function Me(e,t){Tu[e]=t}function sg(e){var t=[],n;for(n in e)Z(e,n)&&t.push({unit:n,priority:Tu[n]});return t.sort(function(r,s){return r.priority-s.priority}),t}function bs(e){return e%4===0&&e%100!==0||e%400===0}function We(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function B(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=We(t)),n}function Un(e,t){return function(n){return n!=null?(Du(this,e,n),T.updateOffset(this,t),this):Qr(this,e)}}function Qr(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Du(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&bs(e.year())&&e.month()===1&&e.date()===29?(n=B(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ks(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function ig(e){return e=Ge(e),ht(this[e])?this[e]():this}function ag(e,t){if(typeof e=="object"){e=ua(e);var n=sg(e),r,s=n.length;for(r=0;r68?1900:2e3)};var Uu=Un("FullYear",!0);function Mg(){return bs(this.year())}function Eg(e,t,n,r,s,i,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,n,r,s,i,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,r,s,i,a),o}function ur(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function es(e,t,n){var r=7+t-n,s=(7+ur(e,0,r).getUTCDay()-t)%7;return-s+r-1}function ju(e,t,n,r,s){var i=(7+n-r)%7,a=es(e,r,s),o=1+7*(t-1)+i+a,l,u;return o<=0?(l=e-1,u=tr(l)+o):o>tr(e)?(l=e+1,u=o-tr(e)):(l=e,u=o),{year:l,dayOfYear:u}}function cr(e,t,n){var r=es(e.year(),t,n),s=Math.floor((e.dayOfYear()-r-1)/7)+1,i,a;return s<1?(a=e.year()-1,i=s+Mt(a,t,n)):s>Mt(e.year(),t,n)?(i=s-Mt(e.year(),t,n),a=e.year()+1):(a=e.year(),i=s),{week:i,year:a}}function Mt(e,t,n){var r=es(e,t,n),s=es(e+1,t,n);return(tr(e)-r+s)/7}Y("w",["ww",2],"wo","week");Y("W",["WW",2],"Wo","isoWeek");xe("week","w");xe("isoWeek","W");Me("week",5);Me("isoWeek",5);P("w",fe);P("ww",fe,je);P("W",fe);P("WW",fe,je);_r(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=B(e)});function kg(e){return cr(e,this._week.dow,this._week.doy).week}var Tg={dow:0,doy:6};function Dg(){return this._week.dow}function Pg(){return this._week.doy}function Rg(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Cg(e){var t=cr(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}Y("d",0,"do","day");Y("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});Y("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});Y("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});Y("e",0,0,"weekday");Y("E",0,0,"isoWeekday");xe("day","d");xe("weekday","e");xe("isoWeekday","E");Me("day",11);Me("weekday",11);Me("isoWeekday",11);P("d",fe);P("e",fe);P("E",fe);P("dd",function(e,t){return t.weekdaysMinRegex(e)});P("ddd",function(e,t){return t.weekdaysShortRegex(e)});P("dddd",function(e,t){return t.weekdaysRegex(e)});_r(["dd","ddd","dddd"],function(e,t,n,r){var s=n._locale.weekdaysParse(e,r,n._strict);s!=null?t.d=s:W(n).invalidWeekday=e});_r(["d","e","E"],function(e,t,n,r){t[r]=B(e)});function Ag(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Ng(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function da(e,t){return e.slice(t,7).concat(e.slice(0,t))}var Ig="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$u="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yg="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Lg=gr,Fg=gr,Ug=gr;function jg(e,t){var n=Qe(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?da(n,this._week.dow):e?n[e.day()]:n}function $g(e){return e===!0?da(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Wg(e){return e===!0?da(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Hg(e,t,n){var r,s,i,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=dt([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?t==="dddd"?(s=me.call(this._weekdaysParse,a),s!==-1?s:null):t==="ddd"?(s=me.call(this._shortWeekdaysParse,a),s!==-1?s:null):(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null):t==="dddd"?(s=me.call(this._weekdaysParse,a),s!==-1||(s=me.call(this._shortWeekdaysParse,a),s!==-1)?s:(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null)):t==="ddd"?(s=me.call(this._shortWeekdaysParse,a),s!==-1||(s=me.call(this._weekdaysParse,a),s!==-1)?s:(s=me.call(this._minWeekdaysParse,a),s!==-1?s:null)):(s=me.call(this._minWeekdaysParse,a),s!==-1||(s=me.call(this._weekdaysParse,a),s!==-1)?s:(s=me.call(this._shortWeekdaysParse,a),s!==-1?s:null))}function Vg(e,t,n){var r,s,i;if(this._weekdaysParseExact)return Hg.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(s=dt([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function Bg(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=Ag(e,this.localeData()),this.add(e-t,"d")):t}function Gg(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function zg(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Ng(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function qg(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||ha.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Z(this,"_weekdaysRegex")||(this._weekdaysRegex=Lg),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Kg(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||ha.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Z(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Fg),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Zg(e){return this._weekdaysParseExact?(Z(this,"_weekdaysRegex")||ha.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Z(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ug),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function ha(){function e(c,d){return d.length-c.length}var t=[],n=[],r=[],s=[],i,a,o,l,u;for(i=0;i<7;i++)a=dt([2e3,1]).day(i),o=Ie(this.weekdaysMin(a,"")),l=Ie(this.weekdaysShort(a,"")),u=Ie(this.weekdays(a,"")),t.push(o),n.push(l),r.push(u),s.push(o),s.push(l),s.push(u);t.sort(e),n.sort(e),r.sort(e),s.sort(e),this._weekdaysRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function ma(){return this.hours()%12||12}function Jg(){return this.hours()||24}Y("H",["HH",2],0,"hour");Y("h",["hh",2],0,ma);Y("k",["kk",2],0,Jg);Y("hmm",0,0,function(){return""+ma.apply(this)+ft(this.minutes(),2)});Y("hmmss",0,0,function(){return""+ma.apply(this)+ft(this.minutes(),2)+ft(this.seconds(),2)});Y("Hmm",0,0,function(){return""+this.hours()+ft(this.minutes(),2)});Y("Hmmss",0,0,function(){return""+this.hours()+ft(this.minutes(),2)+ft(this.seconds(),2)});function Wu(e,t){Y(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Wu("a",!0);Wu("A",!1);xe("hour","h");Me("hour",13);function Hu(e,t){return t._meridiemParse}P("a",Hu);P("A",Hu);P("H",fe);P("h",fe);P("k",fe);P("HH",fe,je);P("hh",fe,je);P("kk",fe,je);P("hmm",Cu);P("hmmss",Au);P("Hmm",Cu);P("Hmmss",Au);ee(["H","HH"],_e);ee(["k","kk"],function(e,t,n){var r=B(e);t[_e]=r===24?0:r});ee(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});ee(["h","hh"],function(e,t,n){t[_e]=B(e),W(n).bigHour=!0});ee("hmm",function(e,t,n){var r=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r)),W(n).bigHour=!0});ee("hmmss",function(e,t,n){var r=e.length-4,s=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r,2)),t[xt]=B(e.substr(s)),W(n).bigHour=!0});ee("Hmm",function(e,t,n){var r=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r))});ee("Hmmss",function(e,t,n){var r=e.length-4,s=e.length-2;t[_e]=B(e.substr(0,r)),t[qe]=B(e.substr(r,2)),t[xt]=B(e.substr(s))});function Qg(e){return(e+"").toLowerCase().charAt(0)==="p"}var Xg=/[ap]\.?m?\.?/i,e_=Un("Hours",!0);function t_(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var Vu={calendar:Vp,longDateFormat:qp,invalidDate:Zp,ordinal:Qp,dayOfMonthOrdinalParse:Xp,relativeTime:tg,months:pg,monthsShort:Nu,week:Tg,weekdays:Ig,weekdaysMin:Yg,weekdaysShort:$u,meridiemParse:Xg},he={},Vn={},fr;function n_(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(s=Ts(i.slice(0,n).join("-")),s)return s;if(r&&r.length>=n&&n_(i,r)>=n-1)break;n--}t++}return fr}function s_(e){return e.match("^[^/\\\\]*$")!=null}function Ts(e){var t=null,n;if(he[e]===void 0&&typeof module!="undefined"&&module&&module.exports&&s_(e))try{t=fr._abbr,n=require,n("./locale/"+e),Wt(t)}catch(r){he[e]=null}return he[e]}function Wt(e,t){var n;return e&&(Pe(t)?n=Dt(e):n=pa(e,t),n?fr=n:typeof console!="undefined"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),fr._abbr}function pa(e,t){if(t!==null){var n,r=Vu;if(t.abbr=e,he[e]!=null)Eu("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=he[e]._config;else if(t.parentLocale!=null)if(he[t.parentLocale]!=null)r=he[t.parentLocale]._config;else if(n=Ts(t.parentLocale),n!=null)r=n._config;else return Vn[t.parentLocale]||(Vn[t.parentLocale]=[]),Vn[t.parentLocale].push({name:e,config:t}),null;return he[e]=new oa(yi(r,t)),Vn[e]&&Vn[e].forEach(function(s){pa(s.name,s.config)}),Wt(e),he[e]}else return delete he[e],null}function i_(e,t){if(t!=null){var n,r,s=Vu;he[e]!=null&&he[e].parentLocale!=null?he[e].set(yi(he[e]._config,t)):(r=Ts(e),r!=null&&(s=r._config),t=yi(s,t),r==null&&(t.abbr=e),n=new oa(t),n.parentLocale=he[e],he[e]=n),Wt(e)}else he[e]!=null&&(he[e].parentLocale!=null?(he[e]=he[e].parentLocale,e===Wt()&&Wt(e)):he[e]!=null&&delete he[e]);return he[e]}function Dt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return fr;if(!Qe(e)){if(t=Ts(e),t)return t;e=[e]}return r_(e)}function a_(){return vi(he)}function ga(e){var t,n=e._a;return n&&W(e).overflow===-2&&(t=n[Ot]<0||n[Ot]>11?Ot:n[ot]<1||n[ot]>ks(n[Oe],n[Ot])?ot:n[_e]<0||n[_e]>24||n[_e]===24&&(n[qe]!==0||n[xt]!==0||n[Jt]!==0)?_e:n[qe]<0||n[qe]>59?qe:n[xt]<0||n[xt]>59?xt:n[Jt]<0||n[Jt]>999?Jt:-1,W(e)._overflowDayOfYear&&(tot)&&(t=ot),W(e)._overflowWeeks&&t===-1&&(t=dg),W(e)._overflowWeekday&&t===-1&&(t=hg),W(e).overflow=t),e}var o_=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,l_=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,u_=/Z|[+-]\d\d(?::?\d\d)?/,Er=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],zs=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],c_=/^\/?Date\((-?\d+)/i,f_=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,d_={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Bu(e){var t,n,r=e._i,s=o_.exec(r)||l_.exec(r),i,a,o,l,u=Er.length,c=zs.length;if(s){for(W(e).iso=!0,t=0,n=u;ttr(a)||e._dayOfYear===0)&&(W(e)._overflowDayOfYear=!0),n=ur(a,0,e._dayOfYear),e._a[Ot]=n.getUTCMonth(),e._a[ot]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=s[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[_e]===24&&e._a[qe]===0&&e._a[xt]===0&&e._a[Jt]===0&&(e._nextDay=!0,e._a[_e]=0),e._d=(e._useUTC?ur:Eg).apply(null,r),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[_e]=24),e._w&&typeof e._w.d!="undefined"&&e._w.d!==i&&(W(e).weekdayMismatch=!0)}}function w_(e){var t,n,r,s,i,a,o,l,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(i=1,a=4,n=xn(t.GG,e._a[Oe],cr(ce(),1,4).year),r=xn(t.W,1),s=xn(t.E,1),(s<1||s>7)&&(l=!0)):(i=e._locale._week.dow,a=e._locale._week.doy,u=cr(ce(),i,a),n=xn(t.gg,e._a[Oe],u.year),r=xn(t.w,u.week),t.d!=null?(s=t.d,(s<0||s>6)&&(l=!0)):t.e!=null?(s=t.e+i,(t.e<0||t.e>6)&&(l=!0)):s=i),r<1||r>Mt(n,i,a)?W(e)._overflowWeeks=!0:l!=null?W(e)._overflowWeekday=!0:(o=ju(n,r,s,i,a),e._a[Oe]=o.year,e._dayOfYear=o.dayOfYear)}T.ISO_8601=function(){};T.RFC_2822=function(){};function ya(e){if(e._f===T.ISO_8601){Bu(e);return}if(e._f===T.RFC_2822){Gu(e);return}e._a=[],W(e).empty=!0;var t=""+e._i,n,r,s,i,a,o=t.length,l=0,u,c;for(s=ku(e._f,e._locale).match(la)||[],c=s.length,n=0;n0&&W(e).unusedInput.push(a),t=t.slice(t.indexOf(r)+r.length),l+=r.length),Dn[i]?(r?W(e).empty=!1:W(e).unusedTokens.push(i),fg(i,r,e)):e._strict&&!r&&W(e).unusedTokens.push(i);W(e).charsLeftOver=o-l,t.length>0&&W(e).unusedInput.push(t),e._a[_e]<=12&&W(e).bigHour===!0&&e._a[_e]>0&&(W(e).bigHour=void 0),W(e).parsedDateParts=e._a.slice(0),W(e).meridiem=e._meridiem,e._a[_e]=b_(e._locale,e._a[_e],e._meridiem),u=W(e).era,u!==null&&(e._a[Oe]=e._locale.erasConvertYear(u,e._a[Oe])),_a(e),ga(e)}function b_(e,t,n){var r;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(r=e.isPM(n),r&&t<12&&(t+=12),!r&&t===12&&(t=0)),t)}function S_(e){var t,n,r,s,i,a,o=!1,l=e._f.length;if(l===0){W(e).invalidFormat=!0,e._d=new Date(NaN);return}for(s=0;sthis?this:e:ws()});function Ku(e,t){var n,r;if(t.length===1&&Qe(t[0])&&(t=t[0]),!t.length)return ce();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function H_(){if(!Pe(this._isDSTShifted))return this._isDSTShifted;var e={},t;return aa(e,this),e=zu(e),e._a?(t=e._isUTC?dt(e._a):ce(e._a),this._isDSTShifted=this.isValid()&&N_(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function V_(){return this.isValid()?!this._isUTC:!1}function B_(){return this.isValid()?this._isUTC:!1}function Ju(){return this.isValid()?this._isUTC&&this._offset===0:!1}var G_=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,z_=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function tt(e,t){var n=e,r=null,s,i,a;return Nr(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:kt(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(r=G_.exec(e))?(s=r[1]==="-"?-1:1,n={y:0,d:B(r[ot])*s,h:B(r[_e])*s,m:B(r[qe])*s,s:B(r[xt])*s,ms:B(bi(r[Jt]*1e3))*s}):(r=z_.exec(e))?(s=r[1]==="-"?-1:1,n={y:Gt(r[2],s),M:Gt(r[3],s),w:Gt(r[4],s),d:Gt(r[5],s),h:Gt(r[6],s),m:Gt(r[7],s),s:Gt(r[8],s)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(a=q_(ce(n.from),ce(n.to)),n={},n.ms=a.milliseconds,n.M=a.months),i=new Ds(n),Nr(e)&&Z(e,"_locale")&&(i._locale=e._locale),Nr(e)&&Z(e,"_isValid")&&(i._isValid=e._isValid),i}tt.fn=Ds.prototype;tt.invalid=A_;function Gt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Fo(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function q_(e,t){var n;return e.isValid()&&t.isValid()?(t=wa(t,e),e.isBefore(t)?n=Fo(e,t):(n=Fo(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Qu(e,t){return function(n,r){var s,i;return r!==null&&!isNaN(+r)&&(Eu(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),s=tt(n,r),Xu(this,s,e),this}}function Xu(e,t,n,r){var s=t._milliseconds,i=bi(t._days),a=bi(t._months);!e.isValid()||(r=r==null?!0:r,a&&Yu(e,Qr(e,"Month")+a*n),i&&Du(e,"Date",Qr(e,"Date")+i*n),s&&e._d.setTime(e._d.valueOf()+s*n),r&&T.updateOffset(e,i||a))}var K_=Qu(1,"add"),Z_=Qu(-1,"subtract");function ec(e){return typeof e=="string"||e instanceof String}function J_(e){return Xe(e)||mr(e)||ec(e)||kt(e)||X_(e)||Q_(e)||e===null||e===void 0}function Q_(e){var t=nn(e)&&!sa(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],s,i,a=r.length;for(s=0;sn.valueOf():n.valueOf()9999?Ar(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ht(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ar(n,"Z")):Ar(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function hy(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,s,i;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",s="-MM-DD[T]HH:mm:ss.SSS",i=t+'[")]',this.format(n+r+s+i)}function my(e){e||(e=this.isUtc()?T.defaultFormatUtc:T.defaultFormat);var t=Ar(this,e);return this.localeData().postformat(t)}function py(e,t){return this.isValid()&&(Xe(e)&&e.isValid()||ce(e).isValid())?tt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function gy(e){return this.from(ce(),e)}function _y(e,t){return this.isValid()&&(Xe(e)&&e.isValid()||ce(e).isValid())?tt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function yy(e){return this.to(ce(),e)}function tc(e){var t;return e===void 0?this._locale._abbr:(t=Dt(e),t!=null&&(this._locale=t),this)}var nc=Be("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function rc(){return this._locale}var ts=1e3,Pn=60*ts,ns=60*Pn,sc=(365*400+97)*24*ns;function Rn(e,t){return(e%t+t)%t}function ic(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-sc:new Date(e,t,n).valueOf()}function ac(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-sc:Date.UTC(e,t,n)}function vy(e){var t,n;if(e=Ge(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?ac:ic,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Rn(t+(this._isUTC?0:this.utcOffset()*Pn),ns);break;case"minute":t=this._d.valueOf(),t-=Rn(t,Pn);break;case"second":t=this._d.valueOf(),t-=Rn(t,ts);break}return this._d.setTime(t),T.updateOffset(this,!0),this}function wy(e){var t,n;if(e=Ge(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?ac:ic,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ns-Rn(t+(this._isUTC?0:this.utcOffset()*Pn),ns)-1;break;case"minute":t=this._d.valueOf(),t+=Pn-Rn(t,Pn)-1;break;case"second":t=this._d.valueOf(),t+=ts-Rn(t,ts)-1;break}return this._d.setTime(t),T.updateOffset(this,!0),this}function by(){return this._d.valueOf()-(this._offset||0)*6e4}function Sy(){return Math.floor(this.valueOf()/1e3)}function Oy(){return new Date(this.valueOf())}function xy(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function My(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Ey(){return this.isValid()?this.toISOString():null}function ky(){return ia(this)}function Ty(){return Ft({},W(this))}function Dy(){return W(this).overflow}function Py(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}Y("N",0,0,"eraAbbr");Y("NN",0,0,"eraAbbr");Y("NNN",0,0,"eraAbbr");Y("NNNN",0,0,"eraName");Y("NNNNN",0,0,"eraNarrow");Y("y",["y",1],"yo","eraYear");Y("y",["yy",2],0,"eraYear");Y("y",["yyy",3],0,"eraYear");Y("y",["yyyy",4],0,"eraYear");P("N",ba);P("NN",ba);P("NNN",ba);P("NNNN",$y);P("NNNNN",Wy);ee(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var s=n._locale.erasParse(e,r,n._strict);s?W(n).era=s:W(n).invalidEra=e});P("y",jn);P("yy",jn);P("yyy",jn);P("yyyy",jn);P("yo",Hy);ee(["y","yy","yyy","yyyy"],Oe);ee(["yo"],function(e,t,n,r){var s;n._locale._eraYearOrdinalRegex&&(s=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Oe]=n._locale.eraYearOrdinalParse(e,s):t[Oe]=parseInt(e,10)});function Ry(e,t){var n,r,s,i=this._eras||Dt("en")._eras;for(n=0,r=i.length;n=0)return i[r]}function Ay(e,t){var n=e.since<=e.until?1:-1;return t===void 0?T(e.since).year():T(e.since).year()+(t-e.offset)*n}function Ny(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;ei&&(t=i),Zy.call(this,e,t,n,r,s))}function Zy(e,t,n,r,s){var i=ju(e,t,n,r,s),a=ur(i.year,0,i.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}Y("Q",0,"Qo","quarter");xe("quarter","Q");Me("quarter",7);P("Q",Pu);ee("Q",function(e,t){t[Ot]=(B(e)-1)*3});function Jy(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}Y("D",["DD",2],"Do","date");xe("date","D");Me("date",9);P("D",fe);P("DD",fe,je);P("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});ee(["D","DD"],ot);ee("Do",function(e,t){t[ot]=B(e.match(fe)[0])});var lc=Un("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear");xe("dayOfYear","DDD");Me("dayOfYear",4);P("DDD",Os);P("DDDD",Ru);ee(["DDD","DDDD"],function(e,t,n){n._dayOfYear=B(e)});function Qy(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}Y("m",["mm",2],0,"minute");xe("minute","m");Me("minute",14);P("m",fe);P("mm",fe,je);ee(["m","mm"],qe);var Xy=Un("Minutes",!1);Y("s",["ss",2],0,"second");xe("second","s");Me("second",15);P("s",fe);P("ss",fe,je);ee(["s","ss"],xt);var ev=Un("Seconds",!1);Y("S",0,0,function(){return~~(this.millisecond()/100)});Y(0,["SS",2],0,function(){return~~(this.millisecond()/10)});Y(0,["SSS",3],0,"millisecond");Y(0,["SSSS",4],0,function(){return this.millisecond()*10});Y(0,["SSSSS",5],0,function(){return this.millisecond()*100});Y(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});Y(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});Y(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});Y(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});xe("millisecond","ms");Me("millisecond",16);P("S",Os,Pu);P("SS",Os,je);P("SSS",Os,Ru);var Ut,uc;for(Ut="SSSS";Ut.length<=9;Ut+="S")P(Ut,jn);function tv(e,t){t[Jt]=B(("0."+e)*1e3)}for(Ut="S";Ut.length<=9;Ut+="S")ee(Ut,tv);uc=Un("Milliseconds",!1);Y("z",0,0,"zoneAbbr");Y("zz",0,0,"zoneName");function nv(){return this._isUTC?"UTC":""}function rv(){return this._isUTC?"Coordinated Universal Time":""}var b=pr.prototype;b.add=K_;b.calendar=ny;b.clone=ry;b.diff=cy;b.endOf=wy;b.format=my;b.from=py;b.fromNow=gy;b.to=_y;b.toNow=yy;b.get=ig;b.invalidAt=Dy;b.isAfter=sy;b.isBefore=iy;b.isBetween=ay;b.isSame=oy;b.isSameOrAfter=ly;b.isSameOrBefore=uy;b.isValid=ky;b.lang=nc;b.locale=tc;b.localeData=rc;b.max=k_;b.min=E_;b.parsingFlags=Ty;b.set=ag;b.startOf=vy;b.subtract=Z_;b.toArray=xy;b.toObject=My;b.toDate=Oy;b.toISOString=dy;b.inspect=hy;typeof Symbol!="undefined"&&Symbol.for!=null&&(b[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});b.toJSON=Ey;b.toString=fy;b.unix=Sy;b.valueOf=by;b.creationData=Py;b.eraName=Ny;b.eraNarrow=Iy;b.eraAbbr=Yy;b.eraYear=Ly;b.year=Uu;b.isLeapYear=Mg;b.weekYear=Vy;b.isoWeekYear=By;b.quarter=b.quarters=Jy;b.month=Lu;b.daysInMonth=Sg;b.week=b.weeks=Rg;b.isoWeek=b.isoWeeks=Cg;b.weeksInYear=qy;b.weeksInWeekYear=Ky;b.isoWeeksInYear=Gy;b.isoWeeksInISOWeekYear=zy;b.date=lc;b.day=b.days=Bg;b.weekday=Gg;b.isoWeekday=zg;b.dayOfYear=Qy;b.hour=b.hours=e_;b.minute=b.minutes=Xy;b.second=b.seconds=ev;b.millisecond=b.milliseconds=uc;b.utcOffset=Y_;b.utc=F_;b.local=U_;b.parseZone=j_;b.hasAlignedHourOffset=$_;b.isDST=W_;b.isLocal=V_;b.isUtcOffset=B_;b.isUtc=Ju;b.isUTC=Ju;b.zoneAbbr=nv;b.zoneName=rv;b.dates=Be("dates accessor is deprecated. Use date instead.",lc);b.months=Be("months accessor is deprecated. Use month instead",Lu);b.years=Be("years accessor is deprecated. Use year instead",Uu);b.zone=Be("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",L_);b.isDSTShifted=Be("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",H_);function sv(e){return ce(e*1e3)}function iv(){return ce.apply(null,arguments).parseZone()}function cc(e){return e}var J=oa.prototype;J.calendar=Bp;J.longDateFormat=Kp;J.invalidDate=Jp;J.ordinal=eg;J.preparse=cc;J.postformat=cc;J.relativeTime=ng;J.pastFuture=rg;J.set=Hp;J.eras=Ry;J.erasParse=Cy;J.erasConvertYear=Ay;J.erasAbbrRegex=Uy;J.erasNameRegex=Fy;J.erasNarrowRegex=jy;J.months=yg;J.monthsShort=vg;J.monthsParse=bg;J.monthsRegex=xg;J.monthsShortRegex=Og;J.week=kg;J.firstDayOfYear=Pg;J.firstDayOfWeek=Dg;J.weekdays=jg;J.weekdaysMin=Wg;J.weekdaysShort=$g;J.weekdaysParse=Vg;J.weekdaysRegex=qg;J.weekdaysShortRegex=Kg;J.weekdaysMinRegex=Zg;J.isPM=Qg;J.meridiem=t_;function rs(e,t,n,r){var s=Dt(),i=dt().set(r,t);return s[n](i,e)}function fc(e,t,n){if(kt(e)&&(t=e,e=void 0),e=e||"",t!=null)return rs(e,t,n,"month");var r,s=[];for(r=0;r<12;r++)s[r]=rs(e,r,n,"month");return s}function Oa(e,t,n,r){typeof e=="boolean"?(kt(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,kt(t)&&(n=t,t=void 0),t=t||"");var s=Dt(),i=e?s._week.dow:0,a,o=[];if(n!=null)return rs(t,(n+i)%7,r,"day");for(a=0;a<7;a++)o[a]=rs(t,(a+i)%7,r,"day");return o}function av(e,t){return fc(e,t,"months")}function ov(e,t){return fc(e,t,"monthsShort")}function lv(e,t,n){return Oa(e,t,n,"weekdays")}function uv(e,t,n){return Oa(e,t,n,"weekdaysShort")}function cv(e,t,n){return Oa(e,t,n,"weekdaysMin")}Wt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=B(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});T.lang=Be("moment.lang is deprecated. Use moment.locale instead.",Wt);T.langData=Be("moment.langData is deprecated. Use moment.localeData instead.",Dt);var yt=Math.abs;function fv(){var e=this._data;return this._milliseconds=yt(this._milliseconds),this._days=yt(this._days),this._months=yt(this._months),e.milliseconds=yt(e.milliseconds),e.seconds=yt(e.seconds),e.minutes=yt(e.minutes),e.hours=yt(e.hours),e.months=yt(e.months),e.years=yt(e.years),this}function dc(e,t,n,r){var s=tt(t,n);return e._milliseconds+=r*s._milliseconds,e._days+=r*s._days,e._months+=r*s._months,e._bubble()}function dv(e,t){return dc(this,e,t,1)}function hv(e,t){return dc(this,e,t,-1)}function Uo(e){return e<0?Math.floor(e):Math.ceil(e)}function mv(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,s,i,a,o,l;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=Uo(Oi(n)+t)*864e5,t=0,n=0),r.milliseconds=e%1e3,s=We(e/1e3),r.seconds=s%60,i=We(s/60),r.minutes=i%60,a=We(i/60),r.hours=a%24,t+=We(a/24),l=We(hc(t)),n+=l,t-=Uo(Oi(l)),o=We(n/12),n%=12,r.days=t,r.months=n,r.years=o,this}function hc(e){return e*4800/146097}function Oi(e){return e*146097/4800}function pv(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if(e=Ge(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+r/864e5,n=this._months+hc(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Oi(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}function gv(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+B(this._months/12)*31536e6:NaN}function Pt(e){return function(){return this.as(e)}}var _v=Pt("ms"),yv=Pt("s"),vv=Pt("m"),wv=Pt("h"),bv=Pt("d"),Sv=Pt("w"),Ov=Pt("M"),xv=Pt("Q"),Mv=Pt("y");function Ev(){return tt(this)}function kv(e){return e=Ge(e),this.isValid()?this[e+"s"]():NaN}function un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Tv=un("milliseconds"),Dv=un("seconds"),Pv=un("minutes"),Rv=un("hours"),Cv=un("days"),Av=un("months"),Nv=un("years");function Iv(){return We(this.days()/7)}var wt=Math.round,Mn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Yv(e,t,n,r,s){return s.relativeTime(t||1,!!n,e,r)}function Lv(e,t,n,r){var s=tt(e).abs(),i=wt(s.as("s")),a=wt(s.as("m")),o=wt(s.as("h")),l=wt(s.as("d")),u=wt(s.as("M")),c=wt(s.as("w")),d=wt(s.as("y")),h=i<=n.ss&&["s",i]||i0,h[4]=r,Yv.apply(null,h)}function Fv(e){return e===void 0?wt:typeof e=="function"?(wt=e,!0):!1}function Uv(e,t){return Mn[e]===void 0?!1:t===void 0?Mn[e]:(Mn[e]=t,e==="s"&&(Mn.ss=t-1),!0)}function jv(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,r=Mn,s,i;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(r=Object.assign({},Mn,t),t.s!=null&&t.ss==null&&(r.ss=t.s-1)),s=this.localeData(),i=Lv(this,!n,r,s),n&&(i=s.pastFuture(+this,i)),s.postformat(i)}var qs=Math.abs;function wn(e){return(e>0)-(e<0)||+e}function Rs(){if(!this.isValid())return this.localeData().invalidDate();var e=qs(this._milliseconds)/1e3,t=qs(this._days),n=qs(this._months),r,s,i,a,o=this.asSeconds(),l,u,c,d;return o?(r=We(e/60),s=We(r/60),e%=60,r%=60,i=We(n/12),n%=12,a=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=o<0?"-":"",u=wn(this._months)!==wn(o)?"-":"",c=wn(this._days)!==wn(o)?"-":"",d=wn(this._milliseconds)!==wn(o)?"-":"",l+"P"+(i?u+i+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(s||r||e?"T":"")+(s?d+s+"H":"")+(r?d+r+"M":"")+(e?d+a+"S":"")):"P0D"}var z=Ds.prototype;z.isValid=C_;z.abs=fv;z.add=dv;z.subtract=hv;z.as=pv;z.asMilliseconds=_v;z.asSeconds=yv;z.asMinutes=vv;z.asHours=wv;z.asDays=bv;z.asWeeks=Sv;z.asMonths=Ov;z.asQuarters=xv;z.asYears=Mv;z.valueOf=gv;z._bubble=mv;z.clone=Ev;z.get=kv;z.milliseconds=Tv;z.seconds=Dv;z.minutes=Pv;z.hours=Rv;z.days=Cv;z.weeks=Iv;z.months=Av;z.years=Nv;z.humanize=jv;z.toISOString=Rs;z.toString=Rs;z.toJSON=Rs;z.locale=tc;z.localeData=rc;z.toIsoString=Be("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Rs);z.lang=nc;Y("X",0,0,"unix");Y("x",0,0,"valueOf");P("x",Ms);P("X",lg);ee("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});ee("x",function(e,t,n){n._d=new Date(B(e))});//! moment.js +T.version="2.29.3";$p(ce);T.fn=b;T.min=T_;T.max=D_;T.now=P_;T.utc=dt;T.unix=sv;T.months=av;T.isDate=mr;T.locale=Wt;T.invalid=ws;T.duration=tt;T.isMoment=Xe;T.weekdays=lv;T.parseZone=iv;T.localeData=Dt;T.isDuration=Nr;T.monthsShort=ov;T.weekdaysMin=cv;T.defineLocale=pa;T.updateLocale=i_;T.locales=a_;T.weekdaysShort=uv;T.normalizeUnits=Ge;T.relativeTimeRounding=Fv;T.relativeTimeThreshold=Uv;T.calendarFormat=ty;T.prototype=b;T.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};export{bl as A,Jv as B,Xv as C,a0 as D,i0 as E,bt as F,n0 as G,r0 as a,t0 as b,s0 as c,He as d,zv as e,Kv as f,Xf as g,qn as h,Vv as i,Il as j,qv as k,Le as l,T as m,Ei as n,Jf as o,Hv as p,Fr as q,Gv as r,e0 as s,Wv as t,Lm as u,Sl as v,mf as w,Bv as x,Zv as y,Qv as z}; diff --git a/luci-app-bypass/Makefile b/luci-app-bypass/Makefile index e7cd6cdf3..1aec46e6d 100644 --- a/luci-app-bypass/Makefile +++ b/luci-app-bypass/Makefile @@ -71,7 +71,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Xray config PACKAGE_$(PKG_NAME)_INCLUDE_Trojan bool "Include Trojan" - default n + default y if i386||x86_64||arm||aarch64 config PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy bool "Include NaiveProxy" diff --git a/luci-app-bypass/root/etc/init.d/bypass b/luci-app-bypass/root/etc/init.d/bypass index 684960b3c..95d14a326 100755 --- a/luci-app-bypass/root/etc/init.d/bypass +++ b/luci-app-bypass/root/etc/init.d/bypass @@ -161,7 +161,7 @@ gen_config_file(){ tcp|udp|nf) smode=nat;; socks) smode=client;; esac - lua $BIN_DIR/gentrojanconfig $1 $smode $lport $serv_ip $threads >$config_file + lua $BIN_DIR/gen_config $1 $smode $lport $ssport $serv_ip >$config_file sed -i 's/\\//g' $config_file ;; esac diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua index 11e2d7621..dd09c7cfd 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua @@ -296,7 +296,7 @@ local hysteria = { protocol = server.hysteria_protocol, up_mbps = tonumber(server.uplink_capacity), down_mbps = tonumber(server.downlink_capacity), - socks5 = (proto:find("tcp") and tonumber(socks_port) and tonumber(socks_port) ~= "0") and { + socks5 = (proto:find("tcp") and tonumber(socks_port) and tonumber(socks_port) ~= 0) and { listen = "0.0.0.0:" .. tonumber(socks_port), timeout = 300, disable_udp = false diff --git a/luci-app-store/Makefile b/luci-app-store/Makefile index 0acd7bddc..1862db12b 100644 --- a/luci-app-store/Makefile +++ b/luci-app-store/Makefile @@ -7,16 +7,16 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI based ipk store LUCI_DESCRIPTION:=luci-app-store is a ipk store developed by LinkEase team -LUCI_DEPENDS:=+curl +opkg +luci-base +tar +coreutils +coreutils-stat +libuci-lua +mount-utils +LUCI_DEPENDS:=+curl +opkg +luci-base +tar +coreutils +coreutils-stat +libuci-lua +mount-utils +luci-lib-taskd LUCI_PKGARCH:=all -PKG_VERSION:=0.1.10-7 +PKG_VERSION:=0.1.11-1 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= -ISTORE_UI_VERSION:=0.1.10 -ISTORE_UI_RELEASE:=7 -PKG_HASH:=ba784985b9b3aa90c704c03b16611922e7df2e1f0e18c4a4ec9bff0e09688426 +ISTORE_UI_VERSION:=0.1.11 +ISTORE_UI_RELEASE:=1 +PKG_HASH:=e78b07c257c38892f028faeaea3a64ee47e11137523e1c046df95c87be7abf90 PKG_SOURCE_URL_FILE:=v$(ISTORE_UI_VERSION)-$(ISTORE_UI_RELEASE).tar.gz PKG_SOURCE:=istore-ui-$(PKG_SOURCE_URL_FILE) diff --git a/luci-app-store/luasrc/controller/store.lua b/luci-app-store/luasrc/controller/store.lua index 04f42778c..04b540589 100644 --- a/luci-app-store/luasrc/controller/store.lua +++ b/luci-app-store/luasrc/controller/store.lua @@ -1,6 +1,7 @@ module("luci.controller.store", package.seeall) local myopkg = "is-opkg" +local is_backup = "/usr/libexec/istore/backup" local page_index = {"admin", "store", "pages"} function index() @@ -24,25 +25,26 @@ function index() entry({"admin", "store", "check_self_upgrade"}, call("check_self_upgrade")) entry({"admin", "store", "do_self_upgrade"}, post("do_self_upgrade")) - entry({"admin", "store", "get_support_backup_features"}, call("get_support_backup_features")) - entry({"admin", "store", "light_backup"}, post("light_backup")) - entry({"admin", "store", "get_light_backup_file"}, call("get_light_backup_file")) - entry({"admin", "store", "local_backup"}, post("local_backup")) - entry({"admin", "store", "light_restore"}, post("light_restore")) - entry({"admin", "store", "local_restore"}, post("local_restore")) - entry({"admin", "store", "get_backup_app_list_file_path"}, call("get_backup_app_list_file_path")) - entry({"admin", "store", "get_backup_app_list"}, call("get_backup_app_list")) - entry({"admin", "store", "get_available_backup_file_list"}, call("get_available_backup_file_list")) - entry({"admin", "store", "set_local_backup_dir_path"}, post("set_local_backup_dir_path")) - entry({"admin", "store", "get_local_backup_dir_path"}, call("get_local_backup_dir_path")) - entry({"admin", "store", "get_block_devices"}, call("get_block_devices")) - for _, action in ipairs({"update", "install", "upgrade", "remove"}) do store_api(action, true) end for _, action in ipairs({"status", "installed"}) do store_api(action, false) end + if nixio.fs.access("/usr/libexec/istore/backup") then + entry({"admin", "store", "get_support_backup_features"}, call("get_support_backup_features")) + entry({"admin", "store", "light_backup"}, post("light_backup")) + entry({"admin", "store", "get_light_backup_file"}, call("get_light_backup_file")) + entry({"admin", "store", "local_backup"}, post("local_backup")) + entry({"admin", "store", "light_restore"}, post("light_restore")) + entry({"admin", "store", "local_restore"}, post("local_restore")) + entry({"admin", "store", "get_backup_app_list_file_path"}, call("get_backup_app_list_file_path")) + entry({"admin", "store", "get_backup_app_list"}, call("get_backup_app_list")) + entry({"admin", "store", "get_available_backup_file_list"}, call("get_available_backup_file_list")) + entry({"admin", "store", "set_local_backup_dir_path"}, post("set_local_backup_dir_path")) + entry({"admin", "store", "get_local_backup_dir_path"}, call("get_local_backup_dir_path")) + entry({"admin", "store", "get_block_devices"}, call("get_block_devices")) + end end local function user_id() @@ -74,7 +76,7 @@ local function vue_lang() return lang end -local function is_exec(cmd) +local function is_exec(cmd, async) local nixio = require "nixio" local os = require "os" local fs = require "nixio.fs" @@ -93,6 +95,9 @@ local function is_exec(cmd) return 255, "", "Lock failed: " .. msg end + if async then + cmd = "/etc/init.d/tasks task_add istore " .. luci.util.shellquote(cmd) + end local r = os.execute(cmd .. " >/var/log/istore.stdout 2>/var/log/istore.stderr") local e = fs.readfile("/var/log/istore.stderr") local o = fs.readfile("/var/log/istore.stdout") @@ -115,7 +120,13 @@ function redirect_index() end function store_index() - luci.template.render("store/main", {prefix=luci.dispatcher.build_url(unpack(page_index)),id=user_id(),lang=vue_lang()}) + local fs = require "nixio.fs" + local features = { "_lua_force_array_" } + if fs.access("/usr/libexec/istore/backup") then + features[#features+1] = "backup" + end + + luci.template.render("store/main", {prefix=luci.dispatcher.build_url(unpack(page_index)),id=user_id(),lang=vue_lang(),features=features}) end function store_dev() @@ -169,17 +180,15 @@ end -- Internal action function local function _action(exe, cmd, ...) - local os = require "os" - local fs = require "nixio.fs" local pkg = "" for k, v in pairs({...}) do - pkg = pkg .. " '" .. v:gsub("'", "") .. "'" + pkg = pkg .. " " .. luci.util.shellquote(v) end local c = "%s %s %s" %{ exe, cmd, pkg } - return is_exec(c) + return is_exec(c, true) end function store_action(param) @@ -241,11 +250,6 @@ function store_action(param) code, out, err = _action(myopkg, action, unpack(pkgs)) else -- remove code, out, err = _action(myopkg, action, unpack(pkgs)) - if code ~= 0 then - code, out0, err0 = _action(myopkg, action, unpack(pkgs)) - out = out .. out0 - err = err .. err0 - end fs.unlink("/tmp/luci-indexcache") end end @@ -295,15 +299,15 @@ function store_upload() out = "" if finished then if string.lower(string.sub(path, -4, -1)) == ".run" then - code, out, err = _action("sh", "-c", "ls -l \"%s\"; md5sum \"%s\" 2>/dev/null; chmod 755 \"%s\" && \"%s\"" %{ path, path, path, path }) + code, out, err = _action("sh", "-c", "ls -l \"%s\"; md5sum \"%s\" 2>/dev/null; chmod 755 \"%s\" && \"%s\"; RET=$?; rm -f \"%s\"; exit $RET" %{ path, path, path, path, path }) else - code, out, err = _action("opkg", "install", path) + code, out, err = _action("sh", "-c", "opkg install \"%s\"; RET=$?; rm -f \"%s\"; exit $RET" %{ path, path }) end else code = 500 err = "upload failed!" end - nixio.fs.unlink(path) + --nixio.fs.unlink(path) local ret = { code = code, stdout = out, @@ -355,8 +359,8 @@ end function get_support_backup_features() local jsonc = require "luci.jsonc" local error_ret = {code = 500, msg = "Unknown"} - local success_ret = {code = 200,msg = "Unknown"} - local r,o,e = is_exec(myopkg .. " get_support_backup_features") + local success_ret = {code = 200, msg = "Unknown"} + local r,o,e = is_exec(is_backup .. " get_support_backup_features") if r ~= 0 then error_ret.msg = e luci.http.prepare_content("application/json") @@ -374,7 +378,7 @@ function light_backup() local jsonc = require "luci.jsonc" local error_ret = {code = 500, msg = "Unknown"} local success_ret = {code = 200,msg = "Unknown"} - local r,o,e = is_exec(myopkg .. " backup") + local r,o,e = is_exec(is_backup .. " backup") if r ~= 0 then error_ret.msg = e @@ -432,13 +436,13 @@ function local_backup() code,out,err = is_exec("findmnt -T " .. path .. " -o TARGET|sed -n 2p") if out:gsub("[\r\n]", "") == "/" or out:gsub("[\r\n]", "") == "/tmp" then -- error - error_ret = {code = 500, msg = "Path Error,Can not be / or tmp."} + error_ret = {code = 500, stderr = "Path Error,Can not be / or tmp."} luci.http.prepare_content("application/json") luci.http.write_json(error_ret) else -- update local backup path update_local_backup_path(path) - code,out,err = is_exec(myopkg .. " backup " .. path) + code,out,err = _action(is_backup, "backup", path) ret = { code = code, stdout = out, @@ -449,7 +453,7 @@ function local_backup() end else -- error - error_ret = {code = 500, msg = "Path Unknown"} + error_ret = {code = 500, stderr = "Path Unknown"} luci.http.prepare_content("application/json") luci.http.write_json(error_ret) end @@ -481,8 +485,9 @@ function light_restore() if finished then is_exec("rm /etc/istore/app.list;tar -xzf " .. path .. " -C /") + nixio.fs.unlink(path) if nixio.fs.access("/etc/istore/app.list") then - code,out,err = is_exec(myopkg .. " restore") + code,out,err = _action(is_backup, "restore") ret = { code = code, stdout = out, @@ -491,14 +496,12 @@ function light_restore() luci.http.prepare_content("application/json") luci.http.write_json(ret) else - local error_ret = {code = 500, msg = "File is error!"} + local error_ret = {code = 500, stderr = "File is error!"} luci.http.prepare_content("application/json") luci.http.write_json(error_ret) end - -- remove file - is_exec("rm " .. path) else - ret = {code = 500, msg = "upload failed!"} + ret = {code = 500, stderr = "upload failed!"} luci.http.prepare_content("application/json") luci.http.write_json(ret) end @@ -509,7 +512,7 @@ function local_restore() local path = luci.http.formvalue("path") local code, out, err, ret if path ~= "" then - code,out,err = is_exec(myopkg .. " restore " .. path) + code,out,err = _action(is_backup, "restore", path) ret = { code = code, stdout = out, @@ -519,7 +522,7 @@ function local_restore() luci.http.write_json(ret) else -- error - error_ret = {code = 500, msg = "Path Unknown"} + error_ret = {code = 500, stderr = "Path Unknown"} luci.http.prepare_content("application/json") luci.http.write_json(error_ret) end @@ -530,7 +533,7 @@ function get_backup_app_list_file_path() local jsonc = require "luci.jsonc" local error_ret = {code = 500, msg = "Unknown"} local success_ret = {code = 200,msg = "Unknown"} - local r,o,e = is_exec(myopkg .. " get_backup_app_list_file_path") + local r,o,e = is_exec(is_backup .. " get_backup_app_list_file_path") if r ~= 0 then error_ret.msg = e luci.http.prepare_content("application/json") @@ -548,7 +551,7 @@ function get_backup_app_list() local jsonc = require "luci.jsonc" local error_ret = {code = 500, msg = "Unknown"} local success_ret = {code = 200,msg = "Unknown"} - local r,o,e = is_exec(myopkg .. " get_backup_app_list") + local r,o,e = is_exec(is_backup .. " get_backup_app_list") if r ~= 0 then error_ret.msg = e luci.http.prepare_content("application/json") @@ -572,7 +575,7 @@ function get_available_backup_file_list() if path ~= "" then -- update local backup path update_local_backup_path(path) - r,o,e = is_exec(myopkg .. " get_available_backup_file_list " .. path) + r,o,e = is_exec(is_backup .. " get_available_backup_file_list " .. path) if r ~= 0 then error_ret.msg = e luci.http.prepare_content("application/json") diff --git a/luci-app-store/luasrc/view/store/main.htm b/luci-app-store/luasrc/view/store/main.htm index 1ae3d7098..e32c63a2a 100644 --- a/luci-app-store/luasrc/view/store/main.htm +++ b/luci-app-store/luasrc/view/store/main.htm @@ -1,4 +1,7 @@ <%+header%> +<% + local jsonc = require "luci.jsonc" +%>

<%:iStore%> @@ -26,5 +30,32 @@
+<%+tasks/embed%> + + + <%+footer%> \ No newline at end of file diff --git a/luci-app-store/root/bin/is-opkg b/luci-app-store/root/bin/is-opkg index 506abb56c..4c425cef1 100755 --- a/luci-app-store/root/bin/is-opkg +++ b/luci-app-store/root/bin/is-opkg @@ -1,14 +1,10 @@ #!/bin/sh -#set -x -#IS_DEBUG=1 IS_ROOT=/tmp/is-root DL_DIR=${IS_ROOT}/tmp/dl LISTS_DIR_O=/tmp/opkg-lists LISTS_DIR=${IS_ROOT}${LISTS_DIR_O} OPKG_CONF_DIR=${IS_ROOT}/etc/opkg -APP_LIST_FILE=/etc/istore/app.list -BACKUP_CONFIG_FILE=/etc/config/istore FEEDS_SERVER=https://istore.linkease.com/repo ARCH=`jsonfilter -i /etc/.app_store.id -e '$.arch'` @@ -126,249 +122,8 @@ new_upgrade() { wrapped_in_update upgrade "$@" } -opkg_list_installed_packages() { - target=$1 - case $target in - "preinstalled") - OPKG_INFO_DIR="/rom/usr/lib/opkg/info" - ;; - "userinstalled") - OPKG_INFO_DIR="/overlay/upper/usr/lib/opkg/info" - ;; - "allinstalled") - OPKG_INFO_DIR="/usr/lib/opkg/info" - ;; - *) - echo "invalid target" - exit - ;; - esac - (cd $OPKG_INFO_DIR && find . -depth -maxdepth 1 -name "*.list" -type f | sed 's#^\./\(.*\)\.list$#\1#g') -} - -ipk_build() { - PKG_NAME_TEMP=$1 - IPK_OUTPUT_DIR=$2 - - UCI_BAK_DIR="/etc/istore/uci-defaults_bak/" - UCI_DEF_DIR="etc/uci-defaults" - OPKG_INFO_DIR="/usr/lib/opkg/info/" - - [ -n "${PKG_NAME_TEMP}" ] || exit 1 - #get real pkg name in opkg - PKG_NAME_TEMP=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` - [ -n "${PKG_NAME_TEMP}" ] || exit 1 - - PKG_NAME=`cat ${OPKG_INFO_DIR}${PKG_NAME_TEMP}.control | grep "^Package: " | cut -d ' ' -f2` - PKG_VER=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Version: " | cut -d ' ' -f2` - PKG_ARCH=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Architecture: " | cut -d ' ' -f2` - IPK_FILE_NAME="${PKG_NAME}_${PKG_VER}_${PKG_ARCH}" - - rm -rf ${IS_ROOT}/${IPK_FILE_NAME} - mkdir -p ${IS_ROOT}/${IPK_FILE_NAME} - - #(1)make CONTROL dir; (2)copy control file to dir - cd ${IS_ROOT}/${IPK_FILE_NAME} - mkdir -p CONTROL - for control_file in `ls ${OPKG_INFO_DIR}${PKG_NAME}.* | grep -v ".list$"`; do - file=${control_file##*/} - suffix=${file##*.} - cp ${control_file} CONTROL/${suffix} - done - - #(1)make DATA depend dir; (2)copy uci-defaults_bak file to dir; (3)copy other file to dir - for pkgfile in `cat ${OPKG_INFO_DIR}${PKG_NAME}.list | cut -b 2-`; do - file=${pkgfile##*/} - path=${pkgfile%/*} - mkdir -p ${path} - if [ `echo "${path}" | grep "^${UCI_DEF_DIR}"` ]; then - cp "${UCI_BAK_DIR}${file}" "${pkgfile}" - else - cp "/${pkgfile}" "${pkgfile}" - fi - done - - #call ipkg-build script to build ipk - ipkg-build ${IS_ROOT}/${IPK_FILE_NAME} ${IPK_OUTPUT_DIR} - echo "${IPK_FILE_NAME}.ipk" >> ${IPK_OUTPUT_DIR}/appdepipk.list - - [ -n "${IS_DEBUG}" ] || rm -rf ${IS_ROOT}/${IPK_FILE_NAME} -} - -# if arg is NULL, use light backup, otherwise use local backup -backup() { - [ -n "$1" ] && BACKUP_PATH=$1 - - #1.add all istore self data to sysupgrade config file, - #sysupgrade will backup/restore it auto when flash new firmware - echo "/etc/.app_store.id" > /lib/upgrade/keep.d/luci-app-store - cat /usr/lib/opkg/info/luci-app-store.list >> /lib/upgrade/keep.d/luci-app-store - echo "/etc/rc.d/S45istore" >> /lib/upgrade/keep.d/luci-app-store - echo "/etc/istore/uci-defaults_bak" >> /lib/upgrade/keep.d/luci-app-store - echo "${APP_LIST_FILE}" >> /lib/upgrade/keep.d/luci-app-store - echo "${BACKUP_CONFIG_FILE}" >> /lib/upgrade/keep.d/luci-app-store - - #write user installed package list to file - opkg_list_installed_packages "userinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/user_installed_package.list - - #write installed package list by istore feed to file - cat ${IS_ROOT}/user_installed_package.list | \ - grep '^app-meta-' > ${IS_ROOT}/istore_installed_package.list - - #if no input backup path, only back app.list - mkdir -p /etc/istore - cp ${IS_ROOT}/istore_installed_package.list ${APP_LIST_FILE} - echo "backup installed package list to ${APP_LIST_FILE}" - - if [ ! -n "${BACKUP_PATH}" ]; then - echo "backup success" - exit 0 - fi - - if [ ! -d "${BACKUP_PATH}" ] && ! mkdir -p "${BACKUP_PATH}" ; then - echo "invalid backup path, can not backup ipk" - exit 1 - fi - - #write all installed package list to file - opkg_list_installed_packages "allinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/all_installed_package.list - - #write system pre installed package list to file - opkg_list_installed_packages "preinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/pre_installed_package.list - - #write installed packages and depends list by istore feed to file by depend sequence - appdep_list="" - temp_list=`cat ${IS_ROOT}/istore_installed_package.list | sed 's/^/\t/'` - while [ -n "${temp_list}" ] - do - #get real pkg name - for PKG_NAME_TEMP in ${temp_list}; do - REAL_PKG_NAME=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` - if [ "${REAL_PKG_NAME}" != "${PKG_NAME_TEMP}" ]; then - temp_list=`echo "${temp_list}" | sed 's/^\t'"${PKG_NAME_TEMP}"'$/\t'"${REAL_PKG_NAME}"'/'` - fi - done - - appdep_list=`echo -e "${temp_list}\n${appdep_list}"` - [ -n "${IS_DEBUG}" ] && echo -e "temp_list:\n""${temp_list}" - [ -n "${IS_DEBUG}" ] && echo -e "appdep_list:\n""${appdep_list}" - - temp_list=`echo "${temp_list}" | xargs opkg depends | grep -v "depends on:" | grep -v " (>= " | grep -v " (= " | sort -u` - done - - appdep_list_all=`echo "${appdep_list}" | cut -f2 | grep -v "^$" | awk '!seen[$0]++'` - [ -n "${IS_DEBUG}" ] && echo -e "appdep_list_all:\n""${appdep_list_all}" - echo "${appdep_list_all}" > ${IS_ROOT}/appdep.list - - #3.rebuild all istore installed package to ipk and backup to userdata partation - - # 4. create dir - date=$(date +%Y-%m%d-%H%M) - if [ ! -d "$BACKUP_PATH/backup_istore_$date" ];then - mkdir $BACKUP_PATH/backup_istore_$date - fi - cp ${IS_ROOT}/istore_installed_package.list $BACKUP_PATH/backup_istore_$date/app.list - cp ${IS_ROOT}/appdep.list $BACKUP_PATH/backup_istore_$date/appdep.list - - #only backup non pre installed ipk - cp ${IS_ROOT}/appdep.list ${IS_ROOT}/appdep_strip.list - for pre_installed_pkg in `cat ${IS_ROOT}/appdep.list ${IS_ROOT}/pre_installed_package.list | sort -n | uniq -d`; do - sed -i '/^'"$pre_installed_pkg"'$/d' ${IS_ROOT}/appdep_strip.list - done - - rm -f $BACKUP_PATH/backup_istore_$date/appdepipk.list - echo "build ipk" - for pkg_name in `cat ${IS_ROOT}/appdep_strip.list`; do - ipk_build ${pkg_name} $BACKUP_PATH/backup_istore_$date - done - - # 5. create tar.gz file,and remove fir - cd $BACKUP_PATH - echo "write backup file to $BACKUP_PATH/backup_istore_$date.backup.tar.gz" - tar -czf $BACKUP_PATH/backup_istore_$date.backup.tar.gz backup_istore_$date - rm -rf $BACKUP_PATH/backup_istore_$date - echo "backup success" -} - -# if arg is NULL, use light backup, otherwise use local backup -restore() { - if [ -n "$1" ]; then - BACKUP_PATH_FILE=$1 - else - echo "install package by ${APP_LIST_FILE}" - update - for app in `cat ${APP_LIST_FILE}`; do - #skip resotre istore self - [ "A${app}" == "A""luci-app-store" ] && continue - opkg_wrap install ${app} - done - exit 0 - fi - - if [ ! -f "${BACKUP_PATH_FILE}" ];then - echo "invalid backup file, can not restore ipk" - exit 1 - fi - - #1. Unzip file to dir - BACKUP_PATH_FILE_NAME=${BACKUP_PATH_FILE##*/} - BACKUP_PATH=/tmp/${BACKUP_PATH_FILE_NAME%.backup.tar.gz*} - if [ -d "$BACKUP_PATH" ];then - rm -rf $BACKUP_PATH - fi - mkdir -p $BACKUP_PATH - echo "unpack input file..." - # fix tar path error - tar -zxf ${BACKUP_PATH_FILE} -C /tmp/ - - echo "check file" - if [ ! -f "${BACKUP_PATH}/appdep.list" ];then - echo "no available appdep.list, can not restore ipk" - exit 1 - fi - echo "check success" - - #2. install ipk by backup path - echo "restore begin" - for app in `cat ${BACKUP_PATH}/appdepipk.list`; do - opkg_wrap install ${BACKUP_PATH}/${app} - done - - #3. rm dir - rm -rf ${BACKUP_PATH} - echo "restore success" -} - -get_support_backup_features() { - echo "light_backup" - #istore custom img mean support local_backup - if [ -f /etc/istore_img_flag ];then - echo "local_backup" - fi -} - -get_backup_app_list_file_path() { - echo "${APP_LIST_FILE}" -} - -get_backup_app_list() { - if [ ! -f "${APP_LIST_FILE}" ];then - echo "no app.list, can not get backup app list" - exit 1 - fi - cat ${APP_LIST_FILE} -} - -get_available_backup_file_list() { - if [ -n "$1" ]; then - for backup_file in `ls $1/*.backup.tar.gz`; do - filename=${backup_file##*/} - echo "${filename}" - done - else - echo "input backup path is null" - exit 1 - fi +remove() { + opkg_wrap --autoremove --force-removal-of-dependent-packages remove "$@" } usage() { @@ -382,12 +137,6 @@ usage() { echo " list-upgradable List installed and upgradable packages" echo " check_self_upgrade Check iStore upgrade" echo " do_self_upgrade Upgrade iStore" - echo " backup [dir] Backup all installed package(s) to [directory]" - echo " restore [dir] Restore package(s) by [directory]" - echo " get_support_backup_features get device support backup features" - echo " get_backup_app_list_file_path get light backup app list file path" - echo " get_backup_app_list get light backup app list" - echo " get_available_backup_file_list get local available backup file list" echo " opkg sys opkg wrap" } @@ -404,7 +153,7 @@ case $action in new_upgrade "$@" ;; "remove") - opkg_wrap --autoremove --force-removal-of-dependent-packages remove "$@" + remove "$@" || remove "$@" ;; "info") opkg_wrap info "$@" @@ -418,24 +167,6 @@ case $action in "do_self_upgrade") do_self_upgrade ;; - "get_support_backup_features") - get_support_backup_features - ;; - "backup") - backup "$@" - ;; - "restore") - restore "$@" - ;; - "get_backup_app_list_file_path") - get_backup_app_list_file_path - ;; - "get_backup_app_list") - get_backup_app_list - ;; - "get_available_backup_file_list") - get_available_backup_file_list "$@" - ;; "opkg") opkg_wrap "$@" ;; diff --git a/luci-app-store/root/usr/libexec/istore/backup b/luci-app-store/root/usr/libexec/istore/backup new file mode 100755 index 000000000..c1b506b97 --- /dev/null +++ b/luci-app-store/root/usr/libexec/istore/backup @@ -0,0 +1,295 @@ +#!/bin/sh +#set -x +#IS_DEBUG=1 + +IS_ROOT=/tmp/is-backup +APP_LIST_FILE=/etc/istore/app.list +BACKUP_CONFIG_FILE=/etc/config/istore + +action=${1} +shift + + +is_init() { + mkdir -p ${IS_ROOT} +} + +opkg_list_installed_packages() { + target=$1 + case $target in + "preinstalled") + OPKG_INFO_DIR="/rom/usr/lib/opkg/info" + ;; + "userinstalled") + OPKG_INFO_DIR="/overlay/upper/usr/lib/opkg/info" + ;; + "allinstalled") + OPKG_INFO_DIR="/usr/lib/opkg/info" + ;; + *) + echo "invalid target" + exit + ;; + esac + (cd $OPKG_INFO_DIR && find . -depth -maxdepth 1 -name "*.list" -type f | sed 's#^\./\(.*\)\.list$#\1#g') +} + +ipk_build() { + PKG_NAME_TEMP=$1 + IPK_OUTPUT_DIR=$2 + + UCI_BAK_DIR="/etc/istore/uci-defaults_bak/" + UCI_DEF_DIR="etc/uci-defaults" + OPKG_INFO_DIR="/usr/lib/opkg/info/" + + [ -n "${PKG_NAME_TEMP}" ] || exit 1 + #get real pkg name in opkg + PKG_NAME_TEMP=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` + [ -n "${PKG_NAME_TEMP}" ] || exit 1 + + PKG_NAME=`cat ${OPKG_INFO_DIR}${PKG_NAME_TEMP}.control | grep "^Package: " | cut -d ' ' -f2` + PKG_VER=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Version: " | cut -d ' ' -f2` + PKG_ARCH=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Architecture: " | cut -d ' ' -f2` + IPK_FILE_NAME="${PKG_NAME}_${PKG_VER}_${PKG_ARCH}" + + rm -rf ${IS_ROOT}/${IPK_FILE_NAME} + mkdir -p ${IS_ROOT}/${IPK_FILE_NAME} + + #(1)make CONTROL dir; (2)copy control file to dir + cd ${IS_ROOT}/${IPK_FILE_NAME} + mkdir -p CONTROL + for control_file in `ls ${OPKG_INFO_DIR}${PKG_NAME}.* | grep -v ".list$"`; do + file=${control_file##*/} + suffix=${file##*.} + cp ${control_file} CONTROL/${suffix} + done + + #(1)make DATA depend dir; (2)copy uci-defaults_bak file to dir; (3)copy other file to dir + for pkgfile in `cat ${OPKG_INFO_DIR}${PKG_NAME}.list | cut -b 2-`; do + file=${pkgfile##*/} + path=${pkgfile%/*} + mkdir -p ${path} + if [ `echo "${path}" | grep "^${UCI_DEF_DIR}"` ]; then + cp "${UCI_BAK_DIR}${file}" "${pkgfile}" + else + cp "/${pkgfile}" "${pkgfile}" + fi + done + + #call ipkg-build script to build ipk + /usr/libexec/istore/ipkg-build ${IS_ROOT}/${IPK_FILE_NAME} ${IPK_OUTPUT_DIR} + echo "${IPK_FILE_NAME}.ipk" >> ${IPK_OUTPUT_DIR}/appdepipk.list + + [ -n "${IS_DEBUG}" ] || rm -rf ${IS_ROOT}/${IPK_FILE_NAME} +} + +# if arg is NULL, use light backup, otherwise use local backup +backup() { + [ -n "$1" ] && BACKUP_PATH=$1 + + #1.add all istore self data to sysupgrade config file, + #sysupgrade will backup/restore it auto when flash new firmware + echo "/etc/.app_store.id" > /lib/upgrade/keep.d/luci-app-store + cat /usr/lib/opkg/info/luci-app-store.list >> /lib/upgrade/keep.d/luci-app-store + echo "/etc/rc.d/S45istore" >> /lib/upgrade/keep.d/luci-app-store + echo "/etc/istore/uci-defaults_bak" >> /lib/upgrade/keep.d/luci-app-store + echo "${APP_LIST_FILE}" >> /lib/upgrade/keep.d/luci-app-store + echo "${BACKUP_CONFIG_FILE}" >> /lib/upgrade/keep.d/luci-app-store + + #write user installed package list to file + opkg_list_installed_packages "userinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/user_installed_package.list + + #write installed package list by istore feed to file + cat ${IS_ROOT}/user_installed_package.list | \ + grep '^app-meta-' > ${IS_ROOT}/istore_installed_package.list + + #if no input backup path, only back app.list + mkdir -p /etc/istore + cp ${IS_ROOT}/istore_installed_package.list ${APP_LIST_FILE} + echo "backup installed package list to ${APP_LIST_FILE}" + + if [ ! -n "${BACKUP_PATH}" ]; then + echo "backup success" + exit 0 + fi + + if [ ! -d "${BACKUP_PATH}" ] && ! mkdir -p "${BACKUP_PATH}" ; then + echo "invalid backup path, can not backup ipk" + exit 1 + fi + + #write all installed package list to file + opkg_list_installed_packages "allinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/all_installed_package.list + + #write system pre installed package list to file + opkg_list_installed_packages "preinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/pre_installed_package.list + + #write installed packages and depends list by istore feed to file by depend sequence + appdep_list="" + temp_list=`cat ${IS_ROOT}/istore_installed_package.list | sed 's/^/\t/'` + while [ -n "${temp_list}" ] + do + #get real pkg name + for PKG_NAME_TEMP in ${temp_list}; do + REAL_PKG_NAME=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` + if [ "${REAL_PKG_NAME}" != "${PKG_NAME_TEMP}" ]; then + temp_list=`echo "${temp_list}" | sed 's/^\t'"${PKG_NAME_TEMP}"'$/\t'"${REAL_PKG_NAME}"'/'` + fi + done + + appdep_list=`echo -e "${temp_list}\n${appdep_list}"` + [ -n "${IS_DEBUG}" ] && echo -e "temp_list:\n""${temp_list}" + [ -n "${IS_DEBUG}" ] && echo -e "appdep_list:\n""${appdep_list}" + + temp_list=`echo "${temp_list}" | xargs opkg depends | grep -v "depends on:" | grep -v " (>= " | grep -v " (= " | sort -u` + done + + appdep_list_all=`echo "${appdep_list}" | cut -f2 | grep -v "^$" | awk '!seen[$0]++'` + [ -n "${IS_DEBUG}" ] && echo -e "appdep_list_all:\n""${appdep_list_all}" + echo "${appdep_list_all}" > ${IS_ROOT}/appdep.list + + #3.rebuild all istore installed package to ipk and backup to userdata partation + + # 4. create dir + date=$(date +%Y-%m%d-%H%M) + if [ ! -d "$BACKUP_PATH/backup_istore_$date" ];then + mkdir $BACKUP_PATH/backup_istore_$date + fi + cp ${IS_ROOT}/istore_installed_package.list $BACKUP_PATH/backup_istore_$date/app.list + cp ${IS_ROOT}/appdep.list $BACKUP_PATH/backup_istore_$date/appdep.list + + #only backup non pre installed ipk + cp ${IS_ROOT}/appdep.list ${IS_ROOT}/appdep_strip.list + for pre_installed_pkg in `cat ${IS_ROOT}/appdep.list ${IS_ROOT}/pre_installed_package.list | sort -n | uniq -d`; do + sed -i '/^'"$pre_installed_pkg"'$/d' ${IS_ROOT}/appdep_strip.list + done + + rm -f $BACKUP_PATH/backup_istore_$date/appdepipk.list + echo "build ipk" + for pkg_name in `cat ${IS_ROOT}/appdep_strip.list`; do + ipk_build ${pkg_name} $BACKUP_PATH/backup_istore_$date + done + + # 5. create tar.gz file,and remove fir + cd $BACKUP_PATH + echo "write backup file to $BACKUP_PATH/backup_istore_$date.backup.tar.gz" + tar -czf $BACKUP_PATH/backup_istore_$date.backup.tar.gz backup_istore_$date + rm -rf $BACKUP_PATH/backup_istore_$date + echo "backup success" +} + +# if arg is NULL, use light backup, otherwise use local backup +restore() { + if [ -n "$1" ]; then + BACKUP_PATH_FILE=$1 + else + echo "install package by ${APP_LIST_FILE}" + is-opkg update + for app in `cat ${APP_LIST_FILE}`; do + #skip resotre istore self + [ "A${app}" == "A""luci-app-store" ] && continue + is-opkg install ${app} + done + exit 0 + fi + + if [ ! -f "${BACKUP_PATH_FILE}" ];then + echo "invalid backup file, can not restore ipk" + exit 1 + fi + + #1. Unzip file to dir + BACKUP_PATH_FILE_NAME=${BACKUP_PATH_FILE##*/} + BACKUP_PATH=/tmp/${BACKUP_PATH_FILE_NAME%.backup.tar.gz*} + if [ -d "$BACKUP_PATH" ];then + rm -rf $BACKUP_PATH + fi + mkdir -p $BACKUP_PATH + echo "unpack input file..." + # fix tar path error + tar -zxf ${BACKUP_PATH_FILE} -C /tmp/ + + echo "check file" + if [ ! -f "${BACKUP_PATH}/appdep.list" ];then + echo "no available appdep.list, can not restore ipk" + exit 1 + fi + echo "check success" + + #2. install ipk by backup path + echo "restore begin" + ( cd ${BACKUP_PATH}; opkg install `cat ${BACKUP_PATH}/appdepipk.list` ) + + #3. rm dir + rm -rf ${BACKUP_PATH} + echo "restore success" +} + +get_support_backup_features() { + echo "light_backup" + #istore custom img mean support local_backup + if [ -f /etc/istore_img_flag ];then + echo "local_backup" + fi +} + +get_backup_app_list_file_path() { + echo "${APP_LIST_FILE}" +} + +get_backup_app_list() { + if [ ! -f "${APP_LIST_FILE}" ];then + echo "no app.list, can not get backup app list" + exit 1 + fi + cat ${APP_LIST_FILE} +} + +get_available_backup_file_list() { + if [ -n "$1" ]; then + for backup_file in `ls $1/*.backup.tar.gz`; do + filename=${backup_file##*/} + echo "${filename}" + done + else + echo "input backup path is null" + exit 1 + fi +} + +usage() { + echo "usage: backup sub-command [arguments...]" + echo "where sub-command is one of:" + echo " backup [dir] Backup all installed package(s) to [directory]" + echo " restore [dir] Restore package(s) by [directory]" + echo " get_support_backup_features get device support backup features" + echo " get_backup_app_list_file_path get light backup app list file path" + echo " get_backup_app_list get light backup app list" + echo " get_available_backup_file_list get local available backup file list" +} + +is_init >/dev/null 2>&1 + +case $action in + "get_support_backup_features") + get_support_backup_features + ;; + "backup") + backup "$@" + ;; + "restore") + restore "$@" + ;; + "get_backup_app_list_file_path") + get_backup_app_list_file_path + ;; + "get_backup_app_list") + get_backup_app_list + ;; + "get_available_backup_file_list") + get_available_backup_file_list "$@" + ;; + *) + usage + ;; +esac diff --git a/luci-app-store/root/bin/ipkg-build b/luci-app-store/root/usr/libexec/istore/ipkg-build similarity index 100% rename from luci-app-store/root/bin/ipkg-build rename to luci-app-store/root/usr/libexec/istore/ipkg-build