HEX
Server: nginx/1.28.3
System: Linux ip-172-31-12-242 6.17.0-1007-aws #7~24.04.1-Ubuntu SMP Thu Jan 22 21:04:49 UTC 2026 x86_64
User: root (0)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/panel/BTPanel/static/js/index-legacy370.js
!function(){function e(n){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(n)}var n=["status","data","msg"];function t(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,a,o,u,l=[],i=!0,c=!1;try{if(o=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;i=!1}else for(;!(i=(r=o.call(t)).done)&&(l.push(r.value),l.length!==n);i=!0);}catch(e){c=!0,a=e}finally{try{if(!i&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(c)throw a}}return l}}(e,n)||function(e,n){if(e){if("string"==typeof e)return r(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function a(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==n.indexOf(r))continue;t[r]=e[r]}return t}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],-1===n.indexOf(t)&&{}.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function o(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,n,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",a=t.toStringTag||"@@toStringTag";function l(t,r,a,o){var l=r&&r.prototype instanceof c?r:c,s=Object.create(l.prototype);return u(s,"_invoke",function(t,r,a){var o,u,l,c=0,s=a||[],f=!1,p={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(n,t){return o=n,u=0,l=e,p.n=t,i}};function m(t,r){for(u=t,l=r,n=0;!f&&c&&!a&&n<s.length;n++){var a,o=s[n],m=p.p,d=o[2];t>3?(a=d===r)&&(l=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):o[0]<=m&&((a=t<2&&m<o[1])?(u=0,p.v=r,p.n=o[1]):m<d&&(a=t<3||o[0]>r||r>d)&&(o[4]=t,o[5]=r,p.n=d,u=0))}if(a||t>1)return i;throw f=!0,r}return function(a,s,d){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&m(s,d),u=s,l=d;(n=u<2?e:l)||!f;){o||(u?u<3?(u>1&&(p.n=-1),m(u,l)):p.n=l:p.v=l);try{if(c=2,o){if(u||(a="next"),n=o[a]){if(!(n=n.call(o,l)))throw TypeError("iterator result is not an object");if(!n.done)return n;l=n.value,u<2&&(u=0)}else 1===u&&(n=o.return)&&n.call(o),u<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),u=1);o=e}else if((n=(f=p.n<0)?l:t.call(r,p))!==i)break}catch(n){o=e,u=1,l=n}finally{c=1}}return{value:n,done:f}}}(t,a,o),!0),s}var i={};function c(){}function s(){}function f(){}n=Object.getPrototypeOf;var p=[][r]?n(n([][r]())):(u(n={},r,function(){return this}),n),m=f.prototype=c.prototype=Object.create(p);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,u(e,a,"GeneratorFunction")),e.prototype=Object.create(m),e}return s.prototype=f,u(m,"constructor",f),u(f,"constructor",s),s.displayName="GeneratorFunction",u(f,a,"GeneratorFunction"),u(m),u(m,a,"Generator"),u(m,r,function(){return this}),u(m,"toString",function(){return"[object Generator]"}),(o=function(){return{w:l,m:d}})()}function u(e,n,t,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}u=function(e,n,t,r){function o(n,t){u(e,n,function(e){return this._invoke(n,t,e)})}n?a?a(e,n,{value:t,enumerable:!r,configurable:!r,writable:!r}):e[n]=t:(o("next",0),o("throw",1),o("return",2))},u(e,n,t,r)}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?l(Object(t),!0).forEach(function(n){c(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function c(n,t,r){return(t=function(n){var t=function(n,t){if("object"!=e(n)||!n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var a=r.call(n,t||"default");if("object"!=e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(n)}(n,"string");return"symbol"==e(t)?t:t+""}(t))in n?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,n}function s(e,n,t,r,a,o,u){try{var l=e[o](u),i=l.value}catch(e){return void t(e)}l.done?n(i):Promise.resolve(i).then(r,a)}function f(e){return function(){var n=this,t=arguments;return new Promise(function(r,a){var o=e.apply(n,t);function u(e){s(o,r,a,u,l,"next",e)}function l(e){s(o,r,a,u,l,"throw",e)}u(void 0)})}}System.register(["./utils-lib-legacy.js?v=1777008528","./base-lib-legacy.js?v=1777008528","./index-legacy119.js?v=1777008528","./index-legacy118.js?v=1777008528"],function(e,r){"use strict";var u,l,c,s,p,m,d,v,y,b,g,h,w,k,j,O,x,_,P,S,D,I,z,T,G,N,C,E,q,B,M,U,A,L,W,F,V,H,R,J,K,Q,X,Y,Z,$,ee,ne,te;return{setters:[function(e){u=e.k,l=e.ie,c=e.ig,s=e.G,p=e.f,m=e.ih,d=e.o,v=e.ii,y=e.e,b=e._,g=e.ij,h=e.w,w=e.ik,k=e.a0,j=e.da,O=e.cZ,x=e.cP,_=e.cR,P=e.dp,S=e.ca},function(e){D=e.a7,I=e.r,z=e.e,T=e.aW,G=e.x,N=e.as,C=e.at,E=e.ar,q=e.i,B=e.a8,M=e.c,U=e.j,A=e.k,L=e.q,W=e.s,F=e.p,V=e.v,H=e.F,R=e.B,J=e.C,K=e.aE,Q=e.O,X=e.Q,Y=e.aX,Z=e.az,$=e.o,ee=e.a0},function(e){ne=e._},function(e){te=e._}],execute:function(){var re=D(),ae=p(),oe=I("all"),ue=null,le=function(e){return{request:(n=f(o().m(function n(t){var r;return o().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,fe(i(i({},t),{},{service_name:e.value.serviceName}),oe.value);case 1:return r=n.v,n.a(2,r)}},n)})),function(e){return n.apply(this,arguments)}),columns:[{label:"名称",prop:"name",align:"center",width:200},{label:"描述",prop:"description",render:function(e){return z(T,{effect:"dark",content:e.description,"popper-class":"w-[35rem]","show-after":500,placement:"top-start",disabled:!e._isOverflow},{default:function(){return[z("div",{class:"w-[95%] truncate",ref:function(n){n&&(e._isOverflow=n.scrollWidth>n.clientWidth)}},[e.description])]}})}},{label:"版本",prop:"version",align:"center",width:100},{label:"大小",prop:"size",align:"center",width:100},{label:"状态",prop:"status",align:"center",width:100,renderHeader:function(){return z(E,{onCommand:function(n){return se(n,oe,e.value)}},{default:function(){return z("div",{class:"flex items-center"},[z("span",null,[G("状态")]),z("span",null,["all"===oe.value?"":"(".concat(ce(oe.value),")")]),z("span",{class:"svgtofont-el-arrow-down"},null)])},dropdown:function(){var e,n;return z(N,null,"function"==typeof(n=e=ie.map(function(e){return z(C,{command:e.value},{default:function(){return[e.label]}})}))||"[object Object]"===Object.prototype.toString.call(n)&&!q(n)?e:{default:function(){return[e]}})}})},render:function(n){var t="",r="",a="";switch(n.status){case"installed":t="已安装",r="primary";break;case"downloading":t="下载中",r="warning",a="cursor-pointer flex items-center";break;case"failed":t="失败",r="danger",a="cursor-pointer";break;default:t="未安装",r="#666"}return z("span",{class:"text-".concat(r," ").concat(a),onClick:function(){return me(n,e.value)}},[t,"downloading"===n.status&&z("span",{class:"inline-block svgtofont-el-loading"},null)])}},{label:"操作",prop:"operate",fixed:"right",width:140,align:"right",render:function(n){return z("div",{class:"w-full flex items-center justify-end"},["installed"===n.status&&z("span",{class:"bt-link",onClick:function(){return pe(n,e.value)}},[G("查看详情")]),"downloading"===n.status&&z("span",null,[G("--")]),"installed"!==n.status&&"downloading"!==n.status&&z("span",{class:"bt-link",onClick:function(){return de(n,e.value)}},[G("下载")]),"installed"===n.status&&z("span",null,[z(ne,null,null),z("span",{class:"bt-link",onClick:function(){return ve(n,e.value)}},[G("删除")])])])}}]};var n},ie=[{label:"全部",value:"all"},{label:"已安装",value:"installed"},{label:"下载中",value:"downloading"},{label:"失败",value:"failed"},{label:"未安装",value:"uninstall"}],ce=function(e){return{all:"",installed:"已安装",downloading:"下载中",failed:"失败",uninstall:"未安装"}[e]},se=function(e,n,t){n.value=e,1===t.param.p?t.refresh():t.param.p=1},fe=(e("e",{mode:"ace/mode/json",theme:re.value?"ace/theme/clouds_midnight":"ace/theme/monokai",wrap:!0,showInvisibles:!1,showFoldWidgets:!1,useSoftTabs:!0,tabSize:2,showPrintMargin:!1,readOnly:!0,fontSize:"12px"}),function(){var e=f(o().m(function e(n,t){var r,a;return o().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,u({request:m(i(i({},n),{},{status:t})),loading:"正在获取模型列表"});case 1:if(r=e.v,!(a=r.data).status){e.n=2;break}return e.a(2,{total:d(a.page),data:a.data});case 2:return ae.error(a.msg),e.a(2,{total:0,data:[]});case 3:return e.a(2)}},e)}));return function(n,t){return e.apply(this,arguments)}}()),pe=function(){var e=f(o().m(function e(n,t){return o().w(function(e){for(;;)switch(e.n){case 0:u({request:v({model_name:n.name,model_version:n.version,service_name:t.serviceName}),loading:"正在获取模型详情",success:function(e){e.status&&y({title:"模型详情-".concat(n.name),area:75,component:function(){return b(function(){return r.import("./model-detail-popup-legacy.js?v=1777008528")},void 0,r.meta.url)},compData:JSON.stringify(e.data,null,2),btns:!1})}});case 1:return e.a(2)}},e)}));return function(n,t){return e.apply(this,arguments)}}(),me=function(){var e=f(o().m(function e(n,t){var a,u,l;return o().w(function(e){for(;;)switch(e.n){case 0:if("downloading"===n.status){e.n=1;break}return e.a(2);case 1:return a=[],u=I("正在获取日志"),l=null,function(){var e,n,r;null===(e=ue)||void 0===e||e.close(),null===(n=ue=k({route:"/sock_shell",onMessage:function(e,n){var r=n.data;a.push(r),a.length>50?u.value=a.slice(a.length-50).join("\n"):u.value=a.join("\n"),r.includes("bt_successful")&&(l&&l.unmount(),l=null,t.refresh())}}))||void 0===n||n.send({}),null===(r=ue)||void 0===r||r.send("tail -f /tmp/".concat(t.serviceName,".log"))}(),e.n=2,y({title:"模型安装日志-".concat(n.name),area:75,component:function(){return b(function(){return r.import("./model-install-log-legacy.js?v=1777008528")},void 0,r.meta.url)},compData:u,onCancel:function(){var e;null===(e=ue)||void 0===e||e.close(),l=null},btns:!1});case 2:return l=e.v,e.a(2,l)}},e)}));return function(n,t){return e.apply(this,arguments)}}(),de=function(){var e=f(o().m(function e(n,t){return o().w(function(e){for(;;)switch(e.n){case 0:if(n.can_down){e.n=1;break}return e.a(2,ae.error("当前已存在下载任务,请等待下载完成"));case 1:u({request:g({model_name:n.name,service_name:t.serviceName,model_version:n.version}),loading:"正在下载模型",success:function(e){e.status?(ae.success("开始下载"),t.refresh(),me({name:n.name,status:"downloading"},t)):ae.error(e.msg)},error:function(){ae.error("下载失败")}});case 2:return e.a(2)}},e)}));return function(n,t){return e.apply(this,arguments)}}(),ve=function(){var e=f(o().m(function e(n,t){var r;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,h({title:"删除模型-".concat(n.name),content:"确定删除该模型吗?"});case 1:u({request:w({service_name:t.serviceName,model_name:n.name,model_version:n.version}),loading:"正在删除模型",success:function(e){e.status?(t.refresh(),ae.success("删除成功")):ae.error(e.msg)}}),e.n=3;break;case 2:e.p=2,r=e.v,console.log(r);case 3:return e.a(2)}},e,null,[[0,2]])}));return function(n,t){return e.apply(this,arguments)}}(),ye=I({}),be=function(e){var n,t,r;return null!=(n=e.power)&&n.current&&(n.current/=1e3),null!=n&&n.max&&(n.max/=1e3),t=e.memory,r=function(e){return s(e*Math.pow(1024,3))},null!=t&&t.free&&(t.free=r(t.free)),null!=t&&t.used&&(t.used=r(t.used)),null!=t&&t.size&&(t.size=r(t.size)),e},ge=function(){var e=f(o().m(function e(r){var i,f,p,m,d,v,y;return o().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,i=Number.isInteger(Number(r)),e.n=1,u({request:i?l({index:Number(r)}):c()});case 1:if(f=e.v,p=f.status,m=f.data,d=f.msg,a(f,n),!1!==p){e.n=2;break}return ae.error(d),e.a(2,i?void 0:ye.value={system:!1,list:[],tableList:[]});case 2:if(!i){e.n=3;break}return ye.value.list[Number(r)]={key:r,value:be(m)},e.a(2);case 3:return v=[],y=Object.entries(m).filter(function(e){return"system"!==t(e,1)[0]}).map(function(e){var n,r=t(e,2),a=r[0],o=r[1],u=be(o);return null===(n=u.processes)||void 0===n||n.forEach(function(e){return v.push({gpu:a,pid:e.pid,type:e.type,name:e.name,memory:s(e.usedGpuMemory)})}),{key:a,value:u}}),m.system.version.cuda="".concat(m.system.version.cuda).split("0").filter(Boolean).join("."),ye.value={system:m.system,list:y,tableList:v},e.a(2,{data:v,total:m.system.count});case 4:e.p=4,e.v,ye.value={system:!1,list:[],tableList:[]};case 5:return e.a(2)}},e,null,[[0,4]])}));return function(n){return e.apply(this,arguments)}}(),he=O({name:"ollama",props:["compData"],setup:function(e){var n=I(),t=j(le(n)),r=t.BtTable,a=t.BtPage,o=t.BtSearch,u=t.BtRefresh,l=t.refresh,i=t.param;return n.value={refresh:l,serviceName:e.compData.service_name,param:i},B(function(){oe.value="all",ye.value={}}),function(){return z("div",{class:"relative"},[z(te,null,{"header-left":function(){return z("div",{class:"flex items-center"},[z(o,{class:"!w-[47rem]",placeholder:"请输入模型名称/描述"},null)])},"header-right":function(){return z(u,null,null)},content:function(){return z("div",null,[z(r,{key:"ollamaTable","max-height":410,class:"!min-h-[350px]"},null)])},"footer-right":function(){return z(a,null,null)}})])}}},[["__scopeId","data-v-20353357"]]),we={key:0},ke={class:"flex items-center mb-[2rem]"},je={class:"text-base leading-[2.1rem]"},Oe={class:"text-base leading-[2.1rem] ml-[2rem]"},xe={key:1},_e=M({__name:"gpu-info",props:{compData:{}},setup:function(e){var n,t=M({props:{data:{type:Object,required:!0},cpuIndex:{type:Number,required:!0}},setup:function(e){var n=function(n){var t;return"cpuIndex"===n?e.cpuIndex:null!==(t=n.split(".").reduce(function(e,n){return e&&e[n]},e.data))&&void 0!==t?t:"null"},t=[{name:"GPU",key:"cpuIndex"},{name:"型号",key:"name"},{name:"核心频率",key:"clock.graphics",unit:"MHz"},{name:"内存频率",key:"clock.memory",unit:"MHz"},{name:"显存大小",key:"memory.size"},{name:"已使用显存",key:"memory.used"},{name:"剩余显存",key:"memory.free"},{name:"当前功耗",key:"power.current",unit:"W"},{name:"最大功耗",key:"power.max",unit:"W"},{name:"风扇转速",key:"fan",unit:"%"}],r=[{content:"显示null说明可能因驱动版本过低或显卡版本过低无法获取对应数据"}],a=[{name:"GPU使用率",key:"utilization.gpu",unit:"%"},{name:"GPU温度",key:"temperature",unit:"°C"}];return function(){return z("div",{class:"flex h-[41.5rem]"},[z("div",{class:"flex flex-1 justify-evenly"},[a.map(function(e){return z("div",null,[z("div",{class:"flex justify-center mb-[2rem]"},[e.name]),z("div",{class:"p-[12px] flex flex-col items-start"},[z(Y,{width:170,type:"circle",percentage:n(e.key),"stroke-width":12,color:"var(--el-color-primary)"},{default:function(){return z("div",null,[z("div",{class:"font-bold text-medium"},[n(e.key)+(e.unit||"")]),z("div",{class:"mt-[1rem] text-base"},[e.name])])}})])])})]),z("div",{class:"flex flex-col items-center justify-start max-w-[20rem]"},[t.map(function(e){return z("div",{class:"flex items-center justify-start w-full text-base leading-[2.6rem]"},[z("span",null,[e.name,G(":")]),z("span",null,[n(e.key)]),z("span",null,[e.unit||""])])}),z(x,{class:"mt-[2.2rem]",options:r},null)])])}}}),r=I("".concat(null===(n=e.compData.value.list[0])||void 0===n?void 0:n.key)||"");return function(n,a){var o,u,l=_,i=Z;return U(),A("div",null,[e.compData.value.list&&e.compData.value.list.length>0?(U(),A("div",we,[L("div",ke,[L("span",je,"驱动版本:"+W(null===(o=F(ye))||void 0===o||null===(o=o.system)||void 0===o?void 0:o.version.driver),1),L("span",Oe,"Cuda版本:"+W(null===(u=F(ye))||void 0===u||null===(u=u.system)||void 0===u?void 0:u.version.cuda),1)]),z(l,{modelValue:F(r),"onUpdate:modelValue":a[0]||(a[0]=function(e){return X(r)?r.value=e:null}),onChange:F(ge)},{default:V(function(){return[(U(!0),A(H,null,R(e.compData.value.list,function(e){return U(),J(F(K),{key:e.key,name:e.key,label:"gpu".concat(e.key)},{default:V(function(){return[(U(),J(Q(F(t)),{data:e.value,cpuIndex:e.key},null,8,["data","cpuIndex"]))]}),_:2},1032,["name","label"])}),128))]}),_:1},8,["modelValue","onChange"])])):(U(),A("div",xe,[z(i,{description:"未找到GPU设备或未安装GPU驱动"})]))])}}}),Pe={name:"ProcessInfo",props:["compData"],setup:function(e){var n,t=j({request:(n=f(o().m(function n(t){return o().w(function(n){for(;;)if(0===n.n)return n.a(2,{data:e.compData.value.tableList,total:e.compData.value.tableList.length})},n)})),function(e){return n.apply(this,arguments)}),columns:[{label:"GPU",prop:"gpu"},{label:"PID",prop:"pid"},{label:"TYPE",prop:"type"},{label:"进程名称",prop:"name"},{label:"显存占用",prop:"memory"}]}),r=t.BtTable,a=t.refresh,u=null;return $(function(){u=setInterval(function(){a()},2e3)}),B(function(){clearInterval(u)}),function(){return z("div",null,[z(te,null,{content:function(){return z(r,{"max-height":500},null)}})])}}},Se=M({__name:"index",props:{compData:{type:Object,default:function(){return{}}}},setup:function(e){var n=e,t=I(!1),r=I(n.compData.tabActive||"manager");ee("gpuOpenStatus",t);var a=P({type:"left-bg-card",value:r,options:[{label:"模型管理",name:"manager",lazy:!0,render:function(){return z(he,{compData:n.compData},null)}},{label:"显卡信息",name:"gpu",lazy:!0,render:function(){return z(_e,{compData:ye},null)}},{label:"进程信息",name:"process",lazy:!0,render:function(){return z(Pe,{compData:ye},null)}}]}).BtTabs,o=null;return $(function(){if(n.compData.appinfo&&n.compData.appinfo.length>0){var e=n.compData.appinfo.find(function(e){return"gpu"===e.fieldKey});e&&e.fieldValue&&(t.value=!0)}t.value?(ge(),o=setInterval(function(){S(["/mod/docker/gpu/get_all_device_info"]),ge()},3e3)):ye.value={system:!1,list:[],tableList:[]}}),B(function(){o&&clearInterval(o)}),function(e,n){return U(),J(F(a))}}}),De=Object.freeze(Object.defineProperty({__proto__:null,default:Se},Symbol.toStringTag,{value:"Module"}));e("i",De)}}})}();