/* Copyright (c) 2023 Synology Inc. All rights reserved. */ function getModalWindow(t){if(t){if("ModalWindow"===t.$options.name||"MessageBoxWindow"===t.$options.name||"WizardWindow"===t.$options.name)return t;for(let e of t.$children){let t=getModalWindow(e);if(t)return t}}}let isLowLevelModel;Ext.namespace("SYNO.SDS.BaseWindow"),Ext.define("SYNO.SDS.AbstractWindow",{extend:"Ext.Window",closeDisabled:!1,toolTarget:"toolCt",toolCtCls:"x-window-toolCt",toolTemplate:new Ext.XTemplate('
 
'),realHeight:void 0,realWidth:void 0,constructor:function(t){var e=Ext.urlDecode(location.search.substr(1));this.enableAlertHeight=e.alertHeight;var i=SYNO.SDS.Desktop?SYNO.SDS.Desktop.getElement():Ext.getBody();t=Ext.apply({autoFitDesktopHeight:!1,maximizable:!0,minimizable:!0,closable:!0,width:300,height:300,constrain:!1,constrainHeader:!0,modal:!1,renderTo:i,manager:SYNO.SDS.WindowMgr},t),SYNO.SDS.AbstractWindow.superclass.constructor.call(this,t),(this.constrain||this.constrainHeader)&&this.resizer&&(this.resizer.constrainTo=this.container),this.mon(this,"titlechange",this.onWindowTitleChanged,this)},initEvents:function(){if(SYNO.SDS.AbstractWindow.superclass.initEvents.apply(this,arguments),this.resizer){var t=Ext.Resizable.positions;for(var e in t)this.resizer[t[e]]&&this.mon(this.resizer[t[e]].el,"mousedown",this.toFront,this)}this.mon(this,"beforeclose",this._onClose,this),this.mon(this,"beforemaximize",this._onBeforeMaximize,this),this.mon(this,"maximize",this._onMaximize,this),this.mon(this,"minimize",this._onMinimize,this),this.mon(this,"restore",this._onRestore,this),this.mon(this,"activate",this._onActivate,this),this.mon(this,"deactivate",this._onDeactivate,this),this.header&&this.mon(this.header,"contextmenu",this.onHeaderContextMenu,this)},_onClose:function(){return!this.closeDisabled&&this.onClose.apply(this,arguments)},_onMaximize:function(){return this.onMaximize.apply(this,arguments)},_onBeforeMaximize:function(){return this.onBeforeMaximize.apply(this,arguments)},_onMinimize:function(){return this.onMinimize.apply(this,arguments)},_onRestore:function(){return this.onRestore.apply(this,arguments)},_onActivate:function(){return this.onActivate.apply(this,arguments)},_onDeactivate:function(){return this.onDeactivate.apply(this,arguments)},_onDragWindow:function(t){SYNO.SDS.TaskBar},_endDragWindow:function(t,e){SYNO.SDS.TaskBar},onClose:Ext.emptyFn,onMaximize:Ext.emptyFn,onBeforeMaximize:Ext.emptyFn,onMinimize:Ext.emptyFn,onRestore:Ext.emptyFn,onActivate:Ext.emptyFn,onDeactivate:Ext.emptyFn,onHeaderContextMenu:function(t){t.preventDefault()},onShow:function(){this.removeClass("syno-window-hide"),delete this.hideForMinimize,this.enableAlertHeight&&this.isVisible()&&this.getHeight()>580&&window.alert(String.format("Height: {0}px, Plz contact your PM to adjust UI.",this.getHeight())),this.tryConstrainHeight()},doConstrain:function(){var t,e;this.constrainHeader&&(t=this.getSize(),(e=this.el.getConstrainToXY(this.container,!0,void 0))&&(e[0]+t.width>this.container.getWidth()&&(e[0]=this.container.getWidth()-t.width),this.setPosition(e[0],e[1])),this.tryConstrainHeight())},tryConstrainHeight:function(){if(this.realHeight=this.getHeight(),this.realWidth=this.getWidth(),!0!==this.isWizard){let t=Ext.getBody().getHeight();tt&&(this.setHeight(t),this.heightConstrained=!0)},disableCloseButton:function(){var t=this.toolCt.child(".x-tool.x-tool-close");this.closeDisabled=!0,t&&t.addClass("disabled")},enableCloseButton:function(){var t=this.toolCt.child(".x-tool.x-tool-close");this.closeDisabled=!1,t&&t.removeClass("disabled")},_onCloseAction:function(){if(this.closeDisabled)return!1;this[this.closeAction].apply(this,arguments)},beforeDestroy:function(){this.onBeforeDestroy(),SYNO.SDS.AbstractWindow.superclass.beforeDestroy.apply(this,arguments)},setIcon:function(t){this.header&&this.header.setStyle("background-image",t?"url("+t+")":"")},onBeforeDestroy:function(){this.appInstance&&this.appInstance.removeInstance(this)},open:function(){return this.opened?this.onRequest.apply(this,arguments):(this.opened=!0,this.onOpen.apply(this,arguments))},onOpen:function(){this.minimized?this.el.hide():this.show()},onRequest:function(){this.isVisible()?this.toFront():this.show()},onWindowTitleChanged:function(t,e){this.rendered&&this.focusEl instanceof Ext.Element&&this.focusEl.set({"aria-label":Ext.util.Format.stripTags(e)})},getSizeAndPosition:function(){var t,e={};return this.maximized||this.hidden?(this.draggable&&this.restorePos?(e.x=this.restorePos[0],e.y=this.restorePos[1]):(e.x=this.x,e.y=this.y),this.resizable&&(this.restoreSize?(e.width=this.restoreSize.width,e.height=this.restoreSize.height):(e.width=this.width,e.height=this.height))):(t=this.el.origXY||this.getPosition(!1),e.pageX=t[0],e.pageY=t[1],this.resizable&&(e.width=this.getWidth(),e.height=this.getHeight())),e},setResizable:function(t){this.el[t?"removeClass":"addClass"]("no-resize")},getConstrainSize(){let t=this.getSize();return t.width0)for(t=i.modalWin.length-1;t>=0;t--){if(i.modalWin[t]&&!(i.modalWin[t].hidden||i.modalWin[t].isDestroyed||i.modalWin[t].destroying)){i=i.modalWin[t];break}0===t&&(e=!0)}else e=!0;return i},restoreWindowFocus:function(){!0!==this.focusLeave&&SYNO.SDS.FocusMgr&&(SYNO.SDS.FocusMgr.focusActiveWindow(),this.focusLeave=!0)},focusLastWindowPt:function(){var t,e=this.findTopWin();if(t=e.focusStack){var i,s,n=!1;for(i=t.length-1;i>=0&&!0!==n;i--)(s=Ext.fly(t[i]))&&s.dom&&s.isVisible()&&-1!==s.dom.getAttribute("tabIndex")&&(s.focus(),n=!0);n||(this.focusEl.focus(),s=this.focusEl),e.focusStack=[s.dom]}else e.focusEl&&e.focusEl.focus()},addFocusPt:function(){var t,e=document.activeElement;e&&Ext.fly(e).up(".x-window")&&((t=this.findTopWin()).focusStack||(t.focusStack=[]),t.focusStack.push(e))},updateDsmStyle:function(t){Ext.isDefined(t)&&(t.dsmStyle?this.dsmStyle=t.dsmStyle:t.owner&&this.setToOwnerDsmStyle(t.owner))},getDsmStyle:function(){return this.dsmStyle},isV5Style:function(){return"v5"===this.getDsmStyle()},setToOwnerDsmStyle:function(t){Ext.isFunction(t.getDsmStyle)&&(this.dsmStyle=t.getDsmStyle())},addStatusBar:function(t){var e={xtype:"statusbar",defaultText:" ",statusAlign:"left",buttonAlign:"left",items:[]};return this.isV5Style()&&(e.defaults={xtype:"syno_button",btnStyle:"grey"}),t.buttons&&(e.items=e.items.concat(t.buttons),delete t.buttons),Ext.applyIf(t,{fbar:e}),t},createGhost:function(t,e,i){if(this.isV5Style()&&(t+=" sds-window-v5"),SYNO.SDS.UIFeatures.test("windowGhost"))return SYNO.SDS.BaseWindow.superclass.createGhost.apply(this,arguments);var s=this.el.dom,n=document.createElement("div"),o=n.style;return n.className="x-panel-ghost-simple",o.width=s.offsetWidth+"px",o.height=s.offsetHeight+"px",i?Ext.getDom(i).appendChild(n):this.container.dom.appendChild(n),new Ext.Element(n)},isModalized:function(){return!1},hasOwnerWin:function(t){var e=this;do{if(t===e)return!0;e=e._isVue?e.$options.owner:e.owner}while(e);return!1},getTopWin:function(){for(var t=this,e=this;t;)e=t,t=t._isVue?t.$options.owner:t.owner;return e},getGroupWinAccessTime:function(){var t=this._lastAccess||0;return Ext.each(this.modalWin,function(e){e&&e._lastAccess&&e._lastAccess>t&&(t=e._lastAccess)}),Ext.each(this.siblingWin,function(e){e&&e._lastAccess&&e._lastAccess>t&&(t=e._lastAccess)}),t},getMsgBox:function(t){if(!this.msgBox||this.msgBox.isDestroyed){var e=t&&t.owner||this;e=e.isDestroyed?null:e,this.isV5Style()?this.msgBox=new SYNO.SDS.MessageBoxV5({owner:e,preventDelay:t&&t.preventDelay||!1,draggable:t&&t.draggable||!1}):this.msgBox=new SYNO.SDS.MessageBox({owner:e})}return this.msgBox.getWrapper(t)},confirmLeave:function(t){var e={yes:{text:_T("common","leave")},cancel:!0};this.getMsgBox().confirm("",_T("common","confirm_lostchange"),t,this,e)},confirmLostChangePromise:function(t,e,i,s,n){var o,r={};if(Ext.isFunction(t))o=t;else{if(!Ext.isObject(t))return void SYNO.Debug.error("func should be object(for promise) or function(for callback)");r=t}var a=r.save,l=r.dontSave,c=r.cancel,d=r.confirmText;i=i||Ext.emptyFn,s=s||Ext.emptyFn,n=n||Ext.emptyFn,this.getMsgBox().confirm("",d||_T("common","confirm_lostchange_without_save"),o||function(t){Ext.isFunction(i)&&i.apply(e,[]),"yes"===t?this.confirmLostChangeCallback(a,s,e):"cancel"===t?this.confirmLostChangeCallback(c,n,e):"leftCustom"===t&&this.confirmLostChangeCallback(l,s,e)}.bind(this),this,{yes:_T("common","save"),cancel:!0,leftCustom:{text:_T("common","dont_save"),extraStyle:"syno-ux-button-dontsave"}})},confirmLostChangeCallback:function(t,e,i){if(Ext.isFunction(t)){var s=t.apply(i,[]);s&&s.then&&Ext.isFunction(s.then)||(s=Promise.resolve()),s.then(function(t){Ext.isFunction(e)&&e.apply(i,[])}.bind(i)).catch(function(t){}.bind(i))}else SYNO.Debug.error("Callback should be callable")},getToastBox:function(t,e,i,s){this.toastBox&&!this.toastBox.isDestroyed&&this.toastBox.destroy();var n={text:t,closable:e,owner:this};return Ext.isObject(i)&&(Ext.isString(i.text)&&(n.actionText=i.text),Ext.isFunction(i.fn)&&(n.actionHandler=i.fn),Ext.isObject(i.scope)&&(n.actionHandlerScope=i.scope)),Ext.isObject(s)&&(Ext.isNumber(s.delay)&&(n.delay=s.delay),Ext.isNumber(s.offsetY)&&(n.offsetY=s.offsetY),Ext.isNumber(s.offsetX)&&(n.offsetX=s.offsetX),Ext.isDefined(s.alignEl)&&(n.alignEl=s.alignEl),n.alignBottom=!0===s.alignBottom),this.toastBox=new SYNO.SDS.ToastBox(n),this.toastBox},onBeforeDestroy:function(){function t(t){t&&t.destroy()}this.msgBox&&this.msgBox.destroy(),this.toastBox&&this.toastBox.destroy(),Ext.each(this.modalWin,t),Ext.each(this.siblingWin,t),delete this.msgBox,delete this.modalWin,delete this.siblingWin,delete this.maskTask,SYNO.SDS.BaseWindow.superclass.onBeforeDestroy.apply(this,arguments)},onMinimize:function(){function t(t){t&&(t.hideForMinimize=!0,t.minimize())}SYNO.SDS.BaseWindow.superclass.onMinimize.apply(this,arguments),Ext.each(this.modalWin,t),Ext.each(this.siblingWin,t)},applyToAllWindows:function(t){Ext.each(this.modalWin,t),Ext.each(this.siblingWin,t)},addClassToAllWindows:function(t){this.el.addClass(t),this.applyToAllWindows(function(e){e.addClassToAllWindows(t)})},removeClassFromAllWindows:function(t){this.el.removeClass(t),this.applyToAllWindows(function(e){e.removeClassFromAllWindows(t)})},disableAllShadow:function(){this.el.disableShadow(),this.applyToAllWindows(function(t){t.disableAllShadow()})},onClose:function(){var t;function e(t){return!t||(t.close(),t.isDestroyed)}return Ext.each(this.modalWin,e),Ext.each(this.sinkModalWin,e),this.modalWin.length||Ext.each(this.siblingWin,e),(t=!this.modalWin.length&&!this.siblingWin.length)&&(t=!1!==SYNO.SDS.BaseWindow.superclass.onClose.apply(this,arguments)),t},onActivate:function(){var t=this.getTopWin();t.taskButton&&t.taskButton.setState("active"),this.el.replaceClass("deactive-win","active-win"),SYNO.SDS.BaseWindow.superclass.onActivate.apply(this,arguments)},onDeactivate:function(){var t=this.getTopWin();t.taskButton&&t.taskButton.setState("deactive"),this.el.replaceClass("active-win","deactive-win"),SYNO.SDS.BaseWindow.superclass.onDeactivate.apply(this,arguments),this.el&&this.el.enableShadow(!0)},blinkShadow:function(t){if(this.isV5Style())return this.blinkShadowV5(t);!this.shadow||t<=0||(this.el.disableShadow(),function(){this.el.enableShadow(!0),this.blinkShadow.createDelegate(this,[--t]).defer(100)}.createDelegate(this).defer(100))},blinkShadowV5:function(t){!this.el||!this.el.isVisible()||t<=0||(this.el.addClass("sds-window-v5-no-shadow"),function(){this.el&&this.el.isVisible()&&(this.el.removeClass("sds-window-v5-no-shadow"),this.blinkShadowV5.createDelegate(this,[--t]).defer(100))}.createDelegate(this).defer(100))},synchronizedMask:function(t){this.mask(t)},delayedMask:function(t,e){e=Ext.isNumber(e)?e:200,this.maskTask||(this.maskTask=new Ext.util.DelayedTask(this.setMaskOpacity,this,[t])),this.mask(0),this.maskTask.delay(e)},setMaskOpacity:function(t){if(this.el.dom){var e=Ext.Element.data(this.el.dom,"mask");e&&e.setOpacity(t)}},mask:function(t,e,i,s){if(!this.isDestroyed)if(t=Ext.isNumber(t)?t:0,this.maskCnt++,this.maskCnt>1)this.setMaskOpacity(t,s);else{var n=this.el.mask(e,i);n.addClass("sds-window-mask"),this.mon(n,"mousedown",this.blinkModalChild,this),this.setMaskOpacity(t,s)}},unmask:function(){if(!(this.isDestroyed||--this.maskCnt>0)){this.maskCnt=0,this.maskTask&&this.maskTask.cancel();var t=Ext.Element.data(this.el,"mask");this.mun(t,"mousedown",this.blinkModalChild,this),this.el.unmask()}},blinkModalChild:function(){if(SYNO.SDS.WindowMgr){this.modalWin.sort(SYNO.SDS.WindowMgr.sortWindows);var t=this.modalWin[this.modalWin.length-1];t?t.blinkModalChild():this.isModalized()&&(this.toFront(),this.blinkShadow(3))}},clearStatus:function(t){var e=this.getFooterToolbar();e&&Ext.isFunction(e.clearStatus)&&e.clearStatus(t)},clearStatusBusy:function(t){this.unmask(),0===this.maskCnt&&this.clearStatus(t)},setStatus:function(t){t=t||{};var e=this.getFooterToolbar();e&&Ext.isFunction(e.setStatus)&&e.setStatus(t)},setStatusOK:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","setting_applied"),iconCls:this.isV5Style()?"syno-ux-statusbar-success":"x-status-valid",clear:!0}),this.setStatus(t)},setStatusError:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","error_system"),iconCls:this.isV5Style()?"syno-ux-statusbar-error":"x-status-error"}),this.setStatus(t)},setStatusBusy:function(t,e,i){t=t||{},Ext.applyIf(t,{text:_T("common","loading"),iconCls:this.isV5Style()?"syno-ux-statusbar-loading":"x-status-busy"}),this.setStatus(t),this.maskForBusy(e,i)},maskForBusy:function(t,e){t=Ext.isNumber(t)?t:.4,(e=Ext.isNumber(e)?e:400)>0?this.delayedMask(t,e):this.synchronizedMask(t)},hide:function(){this.maximized||(this.restoreSize=this.getSize(),this.restorePos=this.getPosition(!0)),this.addClass("syno-window-hide"),SYNO.SDS.BaseWindow.superclass.hide.apply(this,arguments)},centerTitle:function(){var t,e=0;this.tools&&(Ext.each(["help","minimize","maximize","close"],function(t){this.tools[t]&&(e+=32)},this),this.header&&(t=this.header.child(".x-window-header-text"))&&t.setStyle("padding-left",e+"px"))},fillPadding:function(t){var e;if(!(e=this.getFirstItem(t)))return t;this.isGridPanel(e)||this.isFormPanel(e)?this.fillWindowPadding(t):this.isTabPanel(e)&&this.hasItems(e)&&this.fillWindowPadding(t)},hasItems:function(t){return!!Ext.isArray(t.items)||t.items instanceof Ext.util.MixedCollection},fillWindowPadding:function(t){Ext.applyIf(t,{padding:"16px 16px 0 16px"})},getFirstItem:function(t){var e;return Ext.isArray(t.items)&&1===t.items.length?e=t.items[0]:Ext.isObject(t.items)&&(e=t.items),e},isTabPanel:function(t){return this.isPanelOf(t,Ext.TabPanel,["tabpanel","syno_tabpanel"])},isFormPanel:function(t){return this.isPanelOf(t,Ext.form.FormPanel,["form","syno_formpanel"])},isGridPanel:function(t){return this.isPanelOf(t,Ext.grid.GridPanel,["grid","syno_gridpanel"])},isPanelOf:function(t,e,i){var s,n,o;if(!t)return!1;if(t instanceof e)return!0;for(s=t.xtype,n=0,o=i.length;n

'}),this.titleEl=this.bodyEl.child(".ext-mb-title"),this.msgEl=this.bodyEl.child(".ext-mb-text"),this.brEl=this.bodyEl.child(".ext-mb-br"),this.wrapperEl=this.bodyEl.child(".ext-mb-fix-cursor"),this.gridEl=this.bodyEl.child(".ext-mb-grid"),this.progressBar=new Ext.ProgressBar({renderTo:this.bodyEl}),this.focusEl.set({"aria-labelledby":this.msgEl.id}),this.focusEl.dom.removeAttribute("aria-label"),this.bodyEl.createChild({cls:"x-clear"}),this.titleEl.enableDisplayMode(),this.gridEl.enableDisplayMode(),this.addManagedComponent(this.progressBar),this.progressStatus=this.bodyEl.createChild({tag:"span",cls:"syno-mb-progress-status"}),this.progressInfo=this.bodyEl.createChild({tag:"div",cls:"syno-mb-progress-info"}),this.progressBar.addClass("syno-mb-progress")},handleButton:function(t,e){this.fbButtons[t].blur();var i=this.activeTextField?this.activeTextField.getValue():"";this.preventDelay?this.opt.fn.call(this.opt.scope||window,t,i,this.opt,e):Ext.callback(this.opt.fn,this.opt.scope||window,[t,i,this.opt,e],1),SYNO.SDS.MessageBoxV5.superclass.close.call(this)},setIconClass:function(t){if(t&&""!==t)return this.bodyEl.addClass("x-dlg-icon"),this.addClass(t),void(this.mbIconCls=t);this.bodyEl.removeClass("x-dlg-icon"),this.mbIconCls=""},createTextField:function(){this.textbox||(this.textbox=new SYNO.ux.TextField({renderTo:this.wrapperEl}),this.textbox.el.addKeyListener(Ext.EventObject.ENTER,this.handleButton.createDelegate(this,["ok"])))},createTextArea:function(){this.textarea||(this.textarea=new SYNO.ux.TextArea({renderTo:this.wrapperEl}),this.textarea.el.addKeyListener(Ext.EventObject.ENTER,this.handleButton.createDelegate(this,["ok"])))},createPasswordField:function(){this.passwordField||(this.passwordField=new SYNO.ux.TextField({renderTo:this.wrapperEl,type:"password"}),this.passwordField.el.addKeyListener(Ext.EventObject.ENTER,this.handleButton.createDelegate(this,["ok"])))},removeTextArea:function(){this.textarea&&(this.textarea.destroy(),this.textarea=null)},removeTextfield:function(){this.textbox&&(this.textbox.destroy(),this.textbox=null)},removePassword:function(){this.passwordField&&(this.passwordField.destroy(),this.passwordField=null)},setTitle:function(t,e){!0===e?(this.titleEl.update(t),this.titleEl.show()):(this.titleEl.hide(),SYNO.SDS.MessageBoxV5.superclass.setTitle.apply(this,[t]))},showMsg:function(t){if(this.opt=t,this.setTitle(t.title||this.emptyText,this.opt.useMessageTitle),this.tools.close&&this.tools.close.setDisplayed(!1!==t.closable&&!0!==t.progress&&!0!==t.wait),this.gridEl.hide(),this.activeTextField=null,t.prompt=t.prompt||!!t.multiline,t.prompt?(t.multiline?(this.createTextArea(),this.activeTextField=this.textarea,this.textarea.setHeight(Ext.isNumber(t.multiline)?t.multiline:this.defaultTextHeight),this.removeTextfield(),this.removePassword()):t.password?(this.createPasswordField(),this.activeTextField=this.passwordField,this.removeTextfield(),this.removeTextArea()):(this.createTextField(),this.activeTextField=this.textbox,this.removeTextArea(),this.removePassword()),this.activeTextField.setValue(t.value||"")):(this.removeTextfield(),this.removeTextArea(),this.removePassword()),this.setIconClass(Ext.isDefined(t.icon)?t.icon:null),this.buttonWidth=this.updateButtons(t.buttons),this.progressBar.setVisible(!0===t.progress||!0===t.wait),this.updateProgress(0,t.progressText,t.msg,!0,t.progressInfo),this.updateText(t.msg),t.wait&&this.progressBar.wait(t.waitConfig),t.cls&&this.el.addClass(t.cls),t.progress?this.progressBar.progressBar.set({"aria-labelledby":this.msgEl.id}):this.progressBar.progressBar.set({tabIndex:"-1"}),!0===t.wait&&this.progressBar.wait(t.waitConfig),Ext.isArray(t.msgArray)){var e=this.bodyEl.child("div.ext-mb-content"),i=Ext.util.Format.htmlEncode(Ext.util.Format.htmlEncode(t.msg));this.brEl.enableDisplayMode("DISPLAY"),this.brEl.hide(),this.msgEl.set({"ext:qtip":i}),e.addClass("ext-mb-grid-desc"),this.gridEl.show(),this.createGridPanel(t.msgArray)}t.hideBrElement&&(this.brEl.enableDisplayMode("DISPLAY"),this.brEl.hide()),this.show(),this.owner&&!this.owner.isVisible()&&(this.hideForMinimize=!0,this.minimize())},createGridPanel:function(t){var e=t.map(function(t){return[t]});if(this.grid)this.grid.store.loadData(e);else{var i=new Ext.grid.ColumnModel({columns:[{dataIndex:"data",renderer:function(t,e,i){var s=Ext.util.Format.htmlEncode(t);return e.attr='ext:qtip="'+Ext.util.Format.htmlEncode(s)+'"',s}}]});this.grid=new SYNO.ux.GridPanel({colModel:i,store:new Ext.data.ArrayStore({autoDestroy:!0,fields:["data"],data:e}),viewConfig:{rowOverCls:"",selectedRowClass:""},hideHeaders:!0,enableHdMenu:!1,height:304,autoHeight:!1,renderTo:this.gridEl,listeners:{viewready:function(t){this.view.updateScroller()}}}),this.addManagedComponent(this.grid)}},selectBtn:function(t,e,i){const s=Object.values(this.fbButtons).filter(t=>!t.hidden);if(0===s.length)return;const n="previous"===i?-1:"next"===i?1:0,o=Ext.getCmp(Ext.get(t.target).up(".syno-ux-button").id),r=s.findIndex(t=>t===o);s[Math.min(Math.max(0,r+n),s.length-1)].focus()},close:function(){!1!==this.opt.canClose&&(this.opt.buttons&&this.opt.buttons.no&&!this.opt.buttons.cancel?this.handleButton("no","close"):this.handleButton("cancel","close"))},doClose:function(){if(this.activeGhost){var t=Ext.dd.DragDropMgr;this.dd===t.dragCurrent&&(t.dragCurrent=null,t.dragOvers={}),this.unghost(!1,!1)}this.removePassword(),this.removeTextArea(),this.removeTextfield(),this.callParent(arguments)},genButtonConfig:function(t){return{btnStyle:this.getButtonStyle(t),text:this.buttonText[t],handler:this.handleButton.createDelegate(this,[t]),msgWin:this,transitionFocus:function(){this.el.hasClass("focus-effect")?this.el.removeClass("focus-effect"):this.el.addClass("focus-effect")},onBtnElFocus:function(t){this.focusTask=this.focusTask||this.addTask({id:"focus_effect",interval:600,run:this.transitionFocus,scope:this}),this.focusTask.start()},onBtnElBlur:function(t){this.focusTask.stop(),this.el.removeClass("focus-effect")},listeners:{afterrender:function(){this.hidden||(this.nav=new Ext.KeyNav(this.btnEl,{left:this.msgWin.selectBtn.createDelegate(this.msgWin,["previous"],!0),right:this.msgWin.selectBtn.createDelegate(this.msgWin,["next"],!0)}),this.mon(this.btnEl,{focus:this.onBtnElFocus,blur:this.onBtnElBlur,scope:this},this))}}}},getButtons:function(t){var e=[],i=this;return this.fbButtons={},this.buttonText.custom=this.buttonText.no,Ext.each(this.leftButtonNames,function(t){e.push(i.fbButtons[t]=new SYNO.ux.Button(i.genButtonConfig(t),this))}),e.push("->"),Ext.each(this.buttonNames,function(t){e.push(i.fbButtons[t]=new SYNO.ux.Button(i.genButtonConfig(t),this))}),e},setButtonsCls:function(t){for(var e in this.fbButtons){this.fbButtons[e].addClass(t)}},getButtonStyle:function(t){return"ok"==t||"yes"==t?"blue":"grey"},isModalized:function(){return!this.sinkable},getTopWin:function(){return this.sinkable?this:this.callParent()},isCustomBtnVisible:function(){return!this.fbButtons.custom.hidden},updateProgress:function(t,e,i,s,n){return s=s||!1,this.progressStatus.update(e),this.progressInfo.update(n),(i||e)&&!0!==s?this.updateText(i):i&&this.msgEl.update(i),this.progressBar.updateProgress(t,e),this},updateButtons:function(t){var e,i,s,n=0;return this.fbButtons.custom.removeClass("syno-mb-custom-btn"),t?(Ext.iterate(this.fbButtons,function(o,r){(e=t[o])?(r.show(),this.updateBtnByCfg(o,r,e),!this.extra||this.extra.btnStyle===r.btnStyle||"yes"!==o&&"ok"!==o||!r.el||r.el.hasClass(s)||(i=String.format("syno-ux-button-{0}",r.btnStyle),s=String.format("syno-ux-button-{0}",this.extra.btnStyle||"blue"),r.removeClass(i),r.addClass(s)),n+=r.container.getWidth()):r.hide()},this),this.isCustomBtnVisible()&&this.fbButtons.custom.addClass("syno-mb-custom-btn"),n):(Ext.each(this.buttonNames,function(t){this.fbButtons[t].hide()},this),Ext.each(this.leftButtonNames,function(t){this.fbButtons[t].hide()},this),n)},updateBtnByCfg:function(t,e,i){var s=this.buttonText[t],n="grey";e.el&&(Ext.isString(i)?s=i:Ext.isObject(i)&&i.text&&(s=i.text),e.setText(s),e.removeClass("syno-ux-button-blue"),e.removeClass("syno-ux-button-red"),e.removeClass("syno-ux-button-grey"),Ext.isObject(i)&&i.btnStyle?n=i.btnStyle:"yes"!==t&&"ok"!==t||(n="blue"),e.addClass("syno-ux-button-"+n),Ext.isObject(i)&&i.extraStyle&&e.addClass(i.extraStyle))},updateText:function(t){this.opt.width||this.setSize(this.maxWidth,100),this.msgEl.update(t||this.emptyText);var e,i=this.msgEl.getWidth()+this.msgEl.getMargins("lr"),s=this.getFrameWidth("lr"),n=this.body.getFrameWidth("lr");e=Math.max(Math.min(this.opt.width||i+s+n,this.opt.maxWidth||this.maxWidth),Math.max(this.opt.minWidth||this.minWidth,this.buttonWidth||0)),e+=2*(this.fbar.getBox().x-this.getBox().x),!0===this.opt.prompt&&this.activeTextField.setWidth(e-s-n),Ext.isIE&&e==this.buttonWidth&&(e+=4),this.setSize(e,"auto")},confirmDelete:function(t,e,i,s,n,o){var r={yes:{text:_T("common","delete"),btnStyle:"red"},cancel:{text:this.buttonText.cancel}};return this.showMsg(Object.assign({title:t,msg:e,buttons:n||r,fn:i,icon:"confirm-delete-icon",scope:s,minWidth:this.minWidth},o)),this},focus:function(){var t=this.focusEl;this.fbButtons.yes&&this.fbButtons.yes.isVisible()?this.fbButtons.yes.focus():(t=t||this.focusEl).focus.defer(10,t)},progress:function(t,e,i,s={}){return this.showMsg(Object.assign({title:t,msg:e,buttons:!1,progress:!0,closable:!1,minWidth:this.minProgressWidth,progressText:i,progressInfo:s.progressInfo},s)),this},wait:function(t,e,i,s){return this.showMsg(Object.assign({title:e,msg:t,buttons:!1,closable:!1,wait:!0,minWidth:this.minProgressWidth,waitConfig:i},s)),this},alert:function(t,e,i,s,n){return this.showMsg(Object.assign({title:t,msg:e,buttons:Ext.MessageBox.OK,fn:i,scope:s,minWidth:this.minWidth},n)),this},showGridMsg:function(t,e,i,s,n,o,r){return this.showMsg(Object.assign({title:t,msg:e,msgArray:i,buttons:o||Ext.MessageBox.YESNO,fn:s,scope:n,maxWidth:380,minWidth:this.minWidth},r)),this},confirm:function(t,e,i,s,n,o){return this.showMsg(Object.assign({title:t,msg:e,buttons:n||Ext.MessageBox.YESNO,fn:i,scope:s,minWidth:this.minWidth},o)),this},prompt:function(t,e,i,s,n,o,r,a){return this.showMsg(Object.assign({title:t,msg:e,buttons:Ext.MessageBox.OKCANCEL,fn:i,minWidth:this.minPromptWidth,scope:s,prompt:!0,multiline:n,value:o,password:r},a)),this},show:function(){this.alignTo(this.owner?this.owner.el:document.body,"c-c"),this.callParent(arguments)},getWrapper:function(t){function e(t,e){return function(){return e.apply(t,arguments)}}return this.msgBoxWrapper||(this.msgBoxWrapper={confirmGrid:e(this,this.showGridMsg),show:e(this,this.showMsg),hide:e(this,this.doClose),progress:e(this,this.progress),wait:e(this,this.wait),alert:e(this,this.alert),confirm:e(this,this.confirm),confirmDelete:e(this,this.confirmDelete),prompt:e(this,this.prompt),getDialog:function(){return this}.createDelegate(this),isVisible:e(this,this.isVisible),setIcon:e(this,this.setIconClass),updateProgress:e(this,this.updateProgress),updateText:e(this,this.updateText)}),this.extra={},Ext.apply(this.extra,t||{}),this.extra&&this.extra.sinkable&&Ext.apply(this,{sinkable:!!this.extra.sinkable}),this.msgBoxWrapper}}),SYNO.SDS.MessageBoxV5.YESNOCANCEL={custom:!0,yes:!0,cancel:!0},SYNO.SDS.MessageBox=SYNO.SDS.MessageBoxV5,Ext.define("SYNO.SDS.ToastBox",{extend:"Ext.BoxComponent",actionTextEl:null,alignEl:null,closeBtnEl:null,closable:"",actionHandler:Ext.emptyFn,actionHandlerScope:null,delay:3e3,offsetY:0,offsetX:0,constructor:function(t){t.owner||SYNO.Debug("owner required"),!0===t.alignBottom?this.offsetY=0:this.offsetY=18;var e='
{0}{1}{2}
',i="",s="",n="";!0===t.closable&&(n='
',n=String.format(n,this.closeBtnId=Ext.id(),_T("common","close"))),Ext.isString(t.text)&&(i='{1} ',i=String.format(i,this.textId=Ext.id(),t.text)),Ext.isString(t.actionText)&&(s='{1}',s=String.format(s,this.actionTextId=Ext.id(),t.actionText));var o={cls:"syno-sds-toast-box",html:e=String.format(e,i,s,n),renderTo:t.owner.id,listeners:{afterrender:{fn:this.defineToastBoxBehavior,scope:this,single:!0},beforedestroy:{fn:this.unbindEvents,scope:this}}};Ext.apply(o,t),this.callParent([o])},defineToastBoxBehavior:function(){this.alignBox(),Ext.isNumber(this.delay)&&-1!==this.delay&&this.destroyBox.defer(this.delay,this),this.bindEvents()},alignBox:function(){var t="t-t";this.alignBottom&&(t="b-b"),this.getEl().alignTo(this.alignEl||this.owner.getEl(),t,[this.offsetX,this.offsetY])},bindEvents:function(){this.closeBtnEl=Ext.get(this.closeBtnId),this.closeBtnEl&&(this.closeBtnEl.on("click",this.destroyBox,this),this.closeBtnEl.addKeyListener(Ext.EventObject.ENTER,this.destroyBox,this),this.closeBtnEl.addKeyListener(Ext.EventObject.SPACE,this.destroyBox,this)),this.actionTextEl=Ext.get(this.actionTextId),this.actionTextEl&&(this.actionTextEl.on("click",this.actionHandler.createSequence(this.destroyBox,this),this.actionHandlerScope||this),this.actionTextEl.addKeyListener(Ext.EventObject.ENTER,this.actionHandler.createSequence(this.destroyBox,this),this.actionHandlerScope||this),this.actionTextEl.addKeyListener(Ext.EventObject.SPACE,this.actionHandler.createSequence(this.destroyBox,this),this.actionHandlerScope||this))},unbindEvents:function(){this.closeBtnEl&&this.closeBtnEl.un("click",this.destroyBox,this),this.actionTextEl&&this.actionTextEl.un("click",this.actionHandler.createSequence(this.destroyBox),this.actionHandlerScope||this)},destroyBox:function(){this.destroy()}}),SYNO.SDS.IconBadge=Ext.extend(Object,{constructor:function(){this.container=Ext.DomHelper.createDom({tag:"div",cls:"sds-expose-desc-ct"}),this.el=Ext.get(this.container),this.icon=Ext.DomHelper.createDom({tag:"img",cls:"sds-expose-desc-img",style:String.format("width: {0}px",SYNO.SDS.UIFeatures.IconSizeManager.Header)}),this.title=Ext.DomHelper.createDom({tag:"div",cls:"sds-expose-desc-text"}),this.el.appendChild(this.icon),this.el.appendChild(this.title),Ext.get(document.body).appendChild(this.container)},setIconText:function(t,e){this.icon.src=t,this.title.innerHTML=e},setXY:function(t,e){this.el.setLeft(t),this.el.setTop(e)}}),Ext.namespace("SYNO.SDS.Utils"),SYNO.SDS.Utils.SearchField=Ext.extend(SYNO.ux.FleXcroll.ComboBox,{constructor:function(t){t.listeners=Ext.applyIf(t.listeners||{},{render:{fn:function(t){t.trigger.hide(),t.trigger.removeClass("syno-ux-combobox-trigger")}}}),SYNO.SDS.Utils.SearchField.superclass.constructor.call(this,Ext.apply({title:_T("common","search_results"),loadingText:_T("common","searching"),emptyText:_T("user","search_user"),queryParam:"query",queryDelay:500,listEmptyText:_T("search","no_search_result"),grow:!0,width:200,listWidth:360,maxHeight:360,minChars:1,autoSelect:!1,typeAhead:!1,editable:!0,mode:"remote",listAlign:["tr-br?",[16,0]],ctCls:"syno-textfilter",cls:"syno-textfilter-text",listClass:"sds-search-result",triggerConfig:{tag:"button","aria-label":_T("common","clear_input"),cls:"x-form-trigger syno-textfilter-trigger"},store:new SYNO.API.JsonStore({autoDestroy:!0,appWindow:this.findAppWindow()||!1,api:"SYNO.Core.UISearch",method:"uisearch",version:1,root:"items",id:"_random",fields:["id","title","owner","topic","type",{name:"desc",convert:function(t,e){return String.format(t,_D("product"))}}],baseParams:{lang:_S("lang"),type:t.type||"all"}})},t))},initEvents:function(){SYNO.SDS.Utils.SearchField.superclass.initEvents.apply(this,arguments),this.keyNav.disable(),this.mon(this.el,"click",this.onClick,this),this.mon(this.getStore(),"load",this.onStoreLoad,this),this.mon(this.el,"focus",this.setListAria,this,{single:!0}),this.enterNav=new Ext.KeyNav(this.el,{enter:this.focusResult,scope:this})},setListAria:function(){this.innerList.set({role:"listbox",tabindex:0,"aria-label":_T("common","search_results")}),this.setListKeyNav()},setListKeyNav:function(){this.listKeyNav=new Ext.KeyNav(this.innerList,{up:function(t){this.inKeyMode=!0,this.selectPrev()},down:function(t){this.isExpanded()?(this.inKeyMode=!0,this.selectNext()):this.onTriggerClick()},enter:function(t){this.onViewClick(!1)},esc:function(t){this.collapse(),this.getAriaEl().focus()},tab:function(t){this.collapse(),this.getAriaEl().focus()},scope:this,doRelay:function(t,e,i){if("down"==i||this.scope.isExpanded()){var s=Ext.KeyNav.prototype.doRelay.apply(this,arguments);return(Ext.isIE9&&Ext.isStrict||!Ext.isIE)&&Ext.EventManager.useKeydown&&this.scope.fireKey(t),s}return!0},forceKeyDown:!0,defaultEventAction:"stopEvent"})},focusResult:function(){0===this.getStore().getCount()?(this.innerList.set({tabindex:0,"aria-label":_T("search","no_search_result")}),this.innerList.dom.removeAttribute("role")):this.innerList.set({role:"listbox",tabindex:0,"aria-label":_T("common","search_results")}),this.innerList.focus()},onClick:function(){this.getValue().length>=this.minChars&&(this.hasFocus||(this.blur(),this.focus()),this.expand())},onStoreLoad:function(t){t.filterBy(function(t){var e="";switch(t.get("type")){case"app":if(e=SYNO.SDS.Utils.ParseSearchID(t.get("id")).className,SYNO.SDS.Utils.isHiddenControlPanelModule(t.get("id")))return!1;break;case"help":if(e="SYNO.SDS.HelpBrowser.Application",SYNO.SDS.isNVR&&t.get("id").indexOf("SYNO.SDS.Tutorial.Application")>=0)return!1;break;default:return!0}return SYNO.SDS.StatusNotifier.isAppEnabled(e)})},onSelect:function(t,e){!1!==this.fireEvent("beforeselect",this,t,e)&&(this.collapse(),this.fireEvent("select",this,t,e))},select:function(t,e){if(this.selectedIndex=t,this.view.select(t),!1!==e){var i=this.view.getNode(t);i&&this.innerList.scrollChildIntoView(i,!1)}var s=this.view.getSelectedNodes()[0];this.innerList.set({"aria-activedescendant":s.id})},onViewOver:function(t,e){if(!this.inKeyMode){var i=this.view.findItemFromChild(e);if(i){var s=this.view.indexOf(i);this.select(s,!1)}else this.view.clearSelections()}},onViewClick:function(t){var e=this.view.getSelectedIndexes()[0],i=this.store.getAt(e);i&&(this.onSelect(i,e),this.view.clearSelections()),!1!==t&&this.el.focus()},onKeyUp:function(t){var e=t.getKey(),i=this.getValue();this.trigger.setVisible(!!i),i.length=t.length)return this.getPasswordBlankText();for(""!==d&&-1!==c.indexOf(d)||""!==u&&-1!==c.indexOf(u)||(o.exclude_username=!0),a=0;a.?/ ".indexOf(l)?o.included_special_char=!0:-1!=="1234567890".indexOf(l)&&(o.included_numeric_char=!0);for(a in!0===s&&!0===n&&(o.mixed_case=!0),t.length>=this.passwordPolicy.min_length&&(o.min_length_enable=!0),o)!0===this.passwordPolicy[a]&&!1===o[a]&&("min_length_enable"===a?r.push(_T("passwd",a)+" "+this.passwordPolicy.min_length):r.push(_T("passwd",a)));return 0===r.length||_T("passwd","passwd_strength_warn")+r.join(", ")+_T("common","period")}}),window.__TEST__?window.SYNO={SDS:{Utils:{}}}:Ext.namespace("SYNO.SDS.Utils"),window._D=window._D||function(){},window._S=window._S||function(){},String.prototype.hashCode=function(){var t,e=0;if(0===this.length)return e;for(t=0;t=0;a--)n[a]&&"icon"===n[a].getAttribute("rel")&&((s=n[a].getAttribute("sizes"))&&i!==s||r.removeChild(n[a]));r.appendChild(o)},SYNO.SDS.Utils.clone=function(t){if(!t||"object"!=typeof t)return t;if("function"==typeof t.clone)return t.clone();var e,i,s="[object Array]"===Object.prototype.toString.call(t)?[]:{};for(e in t)t.hasOwnProperty(e)&&(i=t[e],s[e]=i&&"object"==typeof i?SYNO.SDS.Utils.clone(i):i);return s},SYNO.SDS.Utils.mergeDeep=function(t,...e){if(!e.length)return t;const i=e.shift();if(Ext.isObject(t)&&Ext.isObject(i))for(const e in i)Ext.isObject(i[e])?(t[e]||Object.assign(t,{[e]:{}}),SYNO.SDS.Utils.mergeDeep(t[e],i[e])):Object.assign(t,{[e]:i[e]});return SYNO.SDS.Utils.mergeDeep(t,...e)},SYNO.SDS.Utils.nextElementSibling=function(t,e){var i=t.nextElementSibling;if(!e)return i;for(;i;){if(i.matches(e))return i;i=i.nextElementSibling}return null},SYNO.SDS.Utils.SelectableCLS="allowDefCtxMenu selectabletext",SYNO.SDS.Utils.IsJson=function(t){return""!==t&&(t=(t=(t=t.replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@")).replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g,"]")).replace(/(?:^|:|,)(?:\s*\[)+/g,""),/^[\],:{}\s]*$/.test(t))},SYNO.SDS.Utils.isLowLevelModel=function(){if(Ext.isDefined(isLowLevelModel))return isLowLevelModel;const t=_D("upnpmodelname");return isLowLevelModel=/(j|slim|se)$/.test(t)&&t.indexOf("620slim")<0},window.__TEST__&&(module.exports=SYNO.SDS.Utils),SYNO.SDS.Utils.utfencode=function(t){var e,i,s="";for(t=t.replace(/\r\n/g,"\n"),e=0;e127&&i<2048?(s+=String.fromCharCode(i>>6|192),s+=String.fromCharCode(63&i|128)):(s+=String.fromCharCode(i>>12|224),s+=String.fromCharCode(i>>6&63|128),s+=String.fromCharCode(63&i|128));return s},SYNO.SDS.Utils.bin2hex=function(t){var e,i,s=[];for(i=(t=SYNO.SDS.Utils.utfencode(t)+"").length,e=0;e=t.cms_id)return this.delayOpen(t);SYNO.API.Info.UpdateById({cms_id:t.cms_id,callback:this.delayOpen,args:arguments,scope:this},!0)},delayOpen:function(){return this.opened?this.onRequest.apply(this,arguments):(this.opened=!0,this.onOpen.apply(this,arguments))},onOpen:function(t){!1!==this.beforeOpen(t)?(this.initInstance(t),this.checkAlive()):this.destroy()},onRequest:function(t){this.window&&this.window.open(t),this.trayItem&&this.trayItem.open(t),this.appItem&&this.appItem.open(t)},checkAlive:function(){this.destroying||this.instances&&this.instances.length||this.destroy()},addInstance:function(t){t.appInstance=this,this.instances=this.instances||[],this.instances.push(t),this.addManagedComponent(t)},removeInstance:function(t){t.appInstance=null,this.instances=this.instances||[],this.instances.remove(t),this.removeManagedComponent(t),this.checkAlive()},shouldNotifyMsg:function(t,e){return!0},getJsConfig:function(){return this.jsConfig},getRestoreSizePos:function(t){return this.getUserSettings("restoreSizePos")||{}},getUserSettings:function(t){return SYNO.SDS.UserSettings.getProperty(this.jsConfig.jsID,t)},setUserSettings:function(t,e){return SYNO.SDS.UserSettings.setProperty(this.jsConfig.jsID,t,e)},getStateParam:function(){var t={windowState:{}};return Ext.isEmpty(this.window)?t:(Ext.apply(t,{windowState:this.window.getStateParam()},this.window.openConfig),t)}}),Ext.namespace("SYNO.SDS.AppWindow"),Ext.define("SYNO.SDS.FullScreenToolbar",{extend:"Ext.Container",constructor:function(t){t.appWin&&t.appWin instanceof SYNO.SDS.AppWindow?(this.offsetX=t&&t.offset?t.offset[0]:0,this.offsetY=t&&t.offset?t.offset[1]:0,this.callParent([this.fillConfig(t)])):SYNO.Debug.error("Need to add appWin in config!")},fillConfig:function(t){this.contentBox=new Ext.BoxComponent({cls:"syno-sds-fullscreen-toolbar-content-container"});var e={hideMode:"offset",cls:"syno-sds-fullscreen-toolbar",renderTo:SYNO.SDS.Desktop.getEl(),items:[this.contentBox]};return Ext.apply(e,t)},adjustPos:function(){var t="tl",e=[_S("standalone")?10:0,_S("standalone")?10:0],i=this.appWin.fsHandler,s=this.el.parent();i?(s=i.el,t="br",e[0]-=this.el.getWidth()):"b"===this.dir?(t="bl",e[1]-=_S("standalone")?this.el.getHeight()+10:this.el.getHeight()):"r"===this.dir&&(t="tr",e[0]-=_S("standalone")?this.el.getWidth()+10:this.el.getWidth()),e[0]+=this.offsetX,e[1]+=this.offsetY,this.el.alignTo(s,t,e),this.el.applyStyles({zIndex:parseInt(this.appWin.el.getStyle("zIndex"),10)+1})},cancleHideTask:function(){this.hideTask||(this.hideTask=new Ext.util.DelayedTask(this.hide,this)),this.hideTask.delay(2e3)},show:function(t,e){this.cancleHideTask(),this.adjustPos(),this.el.hasClass("dissolve-in")||(this.removeClass("dissolve-out"),this.addClass("dissolve-in"))},hide:function(t){if(t)return Ext.each(this.contentBox.el.dom.childNodes,function(t){var e=Ext.get(t);e.orgParent.appendChild(e)}),this.removeParentClsFromContentBox(),void this.callParent();this.el.hasClass("dissolve-in")&&(this.removeClass("dissolve-in"),this.addClass("dissolve-out")),this.hideTask&&(this.hideTask=null)},addParentClsToContentBox:function(t){Ext.isArray(t)?Ext.each(t,this.addParentClsToContentBox,this):Ext.isString(t)&&(this.contentBox.addClass(t),this.contentBox.addedCls||(this.contentBox.addedCls=[]),this.contentBox.addedCls.push(t))},removeParentClsFromContentBox:function(){this.contentBox.addedCls&&this.contentBox.addedCls.each(function(t){this.contentBox.removeClass(t)},this)},addElements:function(t){Ext.isArray(t)?Ext.each(t,this.addElements,this):Ext.isObject(t)&&t instanceof Ext.Element&&(t.orgParent=t.parent(),this.contentBox.el.appendChild(t))}}),Ext.define("SYNO.SDS.AppWindow",{extend:"SYNO.SDS.BaseWindow",moveDirty:!1,resizeDirty:!1,autoCenter:!0,initialized:!1,taskButton:null,ariaRole:"application",constructor:function(t){var e;t=Ext.apply({},t,{useStatusBar:Ext.isDefined(t.buttons),showHelp:!0,toggleGrayOverlay:!0,toggleFullScreen:!1,autoCenter:!0}),t=Ext.apply(t,{title:null,iconCls:"x-panel-icon",openConfig:{dsm_version:_S("majorversion")+"."+_S("minorversion")}}),!_S("standalone")&&t.appInstance&&(!0===t.autoStart||!0!==t.fromRestore&&!1!==t.autoRestoreSizePos)&&Ext.apply(t,this.getRestoreSizePos(t)),!_S("standalone")&&t.showHelp&&(Ext.isArray(t.tools)||(t.tools=[]),t.tools.push({id:"help",text:_T("common","alt_help"),scope:this,handler:this.onClickHelp})),t.toggleFullScreen&&SYNO.SDS.UIFeatures.test("isSupportFullScreen")&&(this.isFullScreen=!1,Ext.isArray(t.tools)||(t.tools=[]),t.tools.push({id:"fullscreen",text:_T("personal_settings","menu_style_fullscreen"),scope:this,handler:this.onClickFullScrren})),e=!Ext.isDefined(t.maximizable)||t.maximizable;var i=!!t.appInstance&&t.appInstance.blMainApp;if(_S("standalone")){if(i)Ext.apply(t,{maximizable:!1,maximized:e,closable:!1,modal:!1}),t.cls=(t.cls||"")+(this.cls||"")+" sds-standalone-main-window","true"===_S("remove_banner")&&(t.cls+=" sds-standalone-main-window--no-banner"),document.title=t.title||document.title;else if(Ext.apply(t,{maximizable:!1,maximized:!1,closable:!0,modal:!0}),e){Ext.EventManager.onWindowResize(this.onModalWindowResize,this),Ext.apply(t,{x:10,y:10,width:Ext.lib.Dom.getViewWidth()-20,height:Ext.lib.Dom.getViewHeight()-20})}Ext.apply(t,{resizable:!1,draggable:!1,minimizable:!1})}if((_S("isMobile")||Ext.isIE10Touch)&&e&&Ext.apply(t,{maximized:!0}),t=this.overwriteAppWinConfig(t),SYNO.SDS.AppWindow.superclass.constructor.call(this,t),t.maximized?SYNO.SDS.StatusNotifier.fireEvent("windowMaximize"):(_S("standalone")&&this.anchorTo(this.container,"c-c"),(_S("isMobile")||Ext.isIE10Touch)&&this.anchorTo(this.container,"t-t")),this.mon(this,"move",this.onWindowMove,this),this.resizer&&this.mon(this.resizer,"resize",this.onHandlerResize,this),t.toggleFullScreen&&this.bindFullScreenEvents(),_S("standalone")&&i){var s,n=this.getSmallIcon(!0);s=SYNO.SDS.UIFeatures.test("isRetina")?[32,64,256]:[16,32,128],Ext.each(s,function(t){n.indexOf("webman/3rdparty/")>=0?SYNO.SDS.Utils.addFavIconLink(n.replace(/(res=)(\d)*/,"$1"+t),"image/png",t+"x"+t):SYNO.SDS.Utils.addFavIconLink(n.replace(/(_16|_32)/,"_"+t),"image/png",t+"x"+t)}),this.mon(this,"titlechange",function(){document.title=this.title||document.title},this)}!0===this.splitWindow&&this.addClass("x-window-split")},getTrait(){return this.jsConfig&&this.jsConfig.jsID?this.jsConfig.jsID:this.callParent()},_onBeforeMaximize:function(){return SYNO.SDS.StatusNotifier.fireEvent("windowBeforeMaximize",this),this.callParent()},_onMinimize:function(){return SYNO.SDS.StatusNotifier.fireEvent("windowMinimize",this),this.callParent()},_onActivate:function(){return SYNO.SDS.StatusNotifier.fireEvent("windowActivate",this),this.callParent()},_onRestore:function(){return SYNO.SDS.StatusNotifier.fireEvent("windowRestore",this),this.callParent()},_onClose:function(){return SYNO.SDS.StatusNotifier.fireEvent("windowClose",this),this.callParent()},bindFullScreenEvents:function(){document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.handleFSChange.createDelegate(this),!1):document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.handleFSChange.createDelegate(this),!1):document.mozFullScreenEnabled?document.addEventListener("mozfullscreenchange",this.handleFSChange.createDelegate(this),!1):document.msFullscreenEnabled&&document.addEventListener("MSFullscreenChange",this.handleFSChange.createDelegate(this),!1)},isAlwaysOnTop:function(){if(!0===this.toggleFullScreen&&!0===this.isFullScreen)return!0},handleFSChange:function(){if(this.isFullScreen){if(SYNO.SDS.UIFeatures.isFullScreenMode()){if(!1===this.fireEvent("beforeenablefullscreen"))return;_S("standalone")||(SYNO.SDS.TaskBar.hide(),SYNO.SDS.Desktop.getEl().setStyle({top:"0px",zIndex:0,height:window.screen.height+"px"}),this.lastStateMaximized=this.maximized,this.lastStateMaximized?(this.setPosition(0,0),this.fitContainer()):this.toggleMaximize()),this.hideTools(),this.fireEvent("windowfullscreenenabled")}else{if(!1===this.fireEvent("beforedisablefullscreen"))return;this.isFullScreen=!1,this.showTools(),_S("standalone")||(this.lastStateMaximized?(SYNO.SDS.TaskBar&&this.setPosition(0,SYNO.SDS.TaskBar.height()),this.fitContainer()):this.toggleMaximize(),SYNO.SDS.Desktop.getEl().setStyle({zIndex:"",height:Ext.getBody().getHeight()+"px"}),SYNO.SDS.TaskBar.show()),this.fireEvent("windowfullscreendisabled")}SYNO.SDS.WindowMgr.orderWindows()}},showFSToolbar:function(){this.fsToolbar.show()},initFSToolbar:function(t,e,i,s,n){e=e||"t",this.fsToolbar||(this.fsToolbar=new SYNO.SDS.FullScreenToolbar({appWin:this,dir:e,offset:n})),t&&this.fsToolbar.addElements(t,i),i&&this.fsToolbar.addParentClsToContentBox(i),!0===s&&this.fsToolbar.show(),this.el.on("mousemove",this.showFSToolbar,this),this.el.on("click",this.showFSToolbar,this)},destroyFSToolbar:function(t){this.el.un("mousemove",this.showFSToolbar,this),this.el.un("click",this.showFSToolbar,this),this.fsToolbar&&this.fsToolbar.hide(!t)},overwriteAppWinConfig:function(t){return t},genIndPortHeader:function(){var t=this.el.createChild({tag:"div",cls:"sds-standalone-main-window-header"},this.header.dom),e=!1===this.showHelp;new Ext.Toolbar({renderTo:t,toolbarCls:"sds-standalone-main-window-header__toolbar",buttonAlign:"right",items:[{xtype:"syno_button",cls:"sds-standalone-main-window-header__toolbar__btn",text:_S("user"),scope:this,menu:new SYNO.ux.Menu({cls:"sds-standalone-main-window-header__toolbar__menu",items:[{cls:"sds-standalone-logout",iconCls:"sds-standalone-logout-icon",text:_T("common","logout"),scope:this,hidden:!_S("rewrite_mode")||e,handler:function(){SYNO.SDS.StatusNotifier.fireEvent("logout"),window.onbeforeunload=SYNO.SDS.onBasicBeforeUnload;try{SYNO.SDS.Utils.Logout.action()}catch(t){}}},{cls:"sds-standalone-help",iconCls:"sds-standalone-help-icon",text:_T("common","alt_help"),hidden:e,scope:this,handler:this.onClickHelp}]})}],listeners:{scope:this,single:!0,buffer:80}})},afterRender:function(){SYNO.SDS.AppWindow.superclass.afterRender.apply(this,arguments),_S("standalone")&&this.alignTo(document.body,"c-c"),this.isStandaloneMainWindow()&&(this.header.dom.innerHTML='
'+this.header.dom.innerHTML+"
","true"!==_S("remove_banner")&&this.genIndPortHeader()),!0===this.maximized&&0==this.minimized&&SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("windowMaximize",this),!1===this.autoCenter||_S("standalone")||this.centerItIfOutOfBound()},destroy:function(){_S("standalone")&&Ext.EventManager.removeResizeListener(this.onModalWindowResize,this),this.aboutWindow&&this.aboutWindow.destroy(),SYNO.SDS.AppWindow.superclass.destroy.apply(this,arguments)},onModalWindowResize:function(){this.setPosition(10,10),this.setSize(Ext.lib.Dom.getViewWidth()-20,Ext.lib.Dom.getViewHeight()-20)},isStandaloneMainWindow:function(){return _S("standalone")&&this.appInstance&&this.appInstance.blMainApp},getSmallIcon:function(t){var e,i=this.jsConfig.jsBaseURL+"/"+(this.jsConfig.icon||this.jsConfig.icon_16),s=this.isStandaloneMainWindow();e=t?"FavHeader":s?"StandaloneHeader":this.isV5Style()?"Header":"HeaderV4";let n=SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(i,e);return this.appInstance.jsConfig.version&&(n=`${n}&app_version=${this.appInstance.jsConfig.version}`),n},init:function(){if(!this.initialized){if(!1!==this.toggleMinimizable&&this.setIcon(this.getSmallIcon()),!_S("standalone")&&!1!==this.toggleMinimizable){Promise.resolve(this.appInstance.taskButton||SYNO.SDS.TaskBar.addTaskButton({appName:this.appInstance.jsConfig.jsID,windowName:this.jsConfig.jsID})).then(t=>{t.init(this),t.setState("deactive"),this.taskButton=t})}this.setTitle(SYNO.SDS.UIString.GetLocalizedString(this.getTitle(),this.appInstance.jsConfig.jsID)),this.initialized=!0}},onBeforeDestroy:function(){SYNO.SDS.AppWindow.superclass.onBeforeDestroy.apply(this,arguments),this.taskButton&&this.taskButton.destroy(),this.taskButton=null},showAboutWindow:function(t={}){let e=this.getJsConfig();e.pureEnv?SYNO.Debug.error("pure environment can not run about window which is framework provided"):(this.aboutWindow||(this.aboutWindow=Vue.extend({template:'',props:["synoId","name","customName","desc","icon","copyrightYear","isBeta","swapNameAndDesc","theme","customCls"]})),this.openVueWindow(this.aboutWindow,{synoId:t.synoId||e.jsID,name:SYNO.SDS.UIString.GetLocalizedString(this.getTitle(),e.jsID),customName:Array.isArray(e.customAboutTitle)?[SYNO.SDS.UIString.GetLocalizedString(e.customAboutTitle[0],e.jsID),SYNO.SDS.UIString.GetLocalizedString(e.customAboutTitle[1],e.jsID)]:null,desc:t.desc||"",icon:SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(e.jsBaseURL+"/"+(e.icon||e.icon_32),"desktop"),copyrightYear:e.buildTime?e.buildTime.split("-")[0]:_S&&_S("builddate")?_S("builddate").split("/")[0]:"",isBeta:void 0!==t.isBeta?t.isBeta:this.isBeta||!1,swapNameAndDesc:t.swapNameAndDesc||!1,theme:t.theme||{},customCls:t.customCls||""}))},hideAboutWindow:function(){this.aboutWindow&&this.aboutWindow.hide()},showTools:function(){var t,e=this.maximized;for(t in this.tools)if(this.tools.hasOwnProperty(t)){if(!this.maximizable&&"maximize"===t||!this.maximizable&&"restore"===t||e&&"maximize"===t||!e&&"restore"===t)continue;"fullscreen"==t&&this.tools[t].removeClass("collapse"),this.tools[t].show()}},hideTools:function(){var t;for(t in this.tools)if(this.tools.hasOwnProperty(t)){if("fullscreen"===t){this.tools[t].addClass("collapse");continue}this.tools[t].hide()}},onClickFullScrren:function(){var t=SYNO.SDS.Desktop.getEl().dom;SYNO.SDS.UIFeatures.isFullScreenMode()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(this.isFullScreen=!0,t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},onClickHelp:function(){var t=this.appInstance?this.appInstance.jsConfig.jsID:this.jsConfig.jsID,e=this.getHelpParam();Ext.isString(e)&&e.length&&(t+=":"+e),_S("standalone")?SYNO.SDS.WindowLaunch("SYNO.SDS.HelpBrowser.Application",{topic:t}):SYNO.SDS.AppLaunch("SYNO.SDS.HelpBrowser.Application",{topic:t},!1)},getHelpParam:Ext.emptyFn,setTitle:function(t,e,i){SYNO.SDS.AppWindow.superclass.setTitle.apply(this,arguments)},getTitle:function(){const t=this.getJsConfig();return this.title||t.title},getJsConfig:function(){return this.appInstance?this.appInstance.jsConfig:this.jsConfig},updateTaskButton:function(t){this.taskButton&&this.taskButton.updateActionState(t)},restore:function(){!0!==this.isFullScreen&&SYNO.SDS.AppWindow.superclass.restore.call(this)},onHeaderContextMenu:function(t){!0!==this.isFullScreen&&SYNO.SDS.AppWindow.superclass.onHeaderContextMenu.apply(this,arguments)},onMaximize:function(){SYNO.SDS.AppWindow.superclass.onMaximize.apply(this,arguments),this.updateTaskButton("maximize"),this.saveRestoreData()},onMinimize:function(){_S("standalone")||(this.minimizable?this.hide():this.el.frame(),SYNO.SDS.AppWindow.superclass.onMinimize.apply(this,arguments),this.updateTaskButton("minimize"))},onRestore:function(){SYNO.SDS.AppWindow.superclass.onRestore.apply(this,arguments),this.updateTaskButton("restore"),this.saveRestoreData()},mask:function(){SYNO.SDS.AppWindow.superclass.mask.apply(this,arguments),this.updateTaskButton("mask")},unmask:function(){SYNO.SDS.AppWindow.superclass.unmask.apply(this,arguments),this.updateTaskButton("unmask")},onWindowMove:function(){this.moveDirty=!0,this.saveRestoreData()},onHandlerResize:function(){this.resizeDirty=!0,this.saveRestoreData()},saveRestoreData:function(){let t=this.appInstance.getUserSettings("restoreSizePos"),e=Ext.apply(this.getSizeAndPosition(),{fromRestore:!0,maximized:this.maximized});t&&(this.moveDirty?this.moveDirty=!1:(t.pageX&&(e.pageX=t.pageX),t.pageY&&(e.pageY=t.pageY)),this.resizeDirty?this.resizeDirty=!1:(t.width&&(e.width=t.width),t.height&&(e.height=t.height))),this.appInstance.setUserSettings("restoreSizePos",e)},adjustPageXY:function(t){return t?(Ext.isDefined(t.pageX)&&t.pageX<0&&(t.pageX=0),Ext.isDefined(t.pageY)&&t.pageY<0&&(t.pageY=0),Ext.isDefined(t.x)&&t.x<0&&(t.x=0),Ext.isDefined(t.y)&&t.y<0&&(t.y=0),t):{}},isOutOfBound:function(){let t=Ext.lib.Dom.getViewWidth(!0),e=Ext.lib.Dom.getViewHeight(!0);if(Ext.isDefined(this.pageX)&&(this.pageX<0||this.pageX+this.width>t))return!0;let i=SYNO.SDS.TaskBar?SYNO.SDS.TaskBar.height():0;return!(!Ext.isDefined(this.pageY)||!(this.pageYe))},centerItIfOutOfBound:function(){this.isOutOfBound()&&(SYNO.SDS.WindowMgr.centerWindow(this,{withOffset:this.autoStart}),this.moveDirty=!0)},getRestoreSizePos:function(t){var e=t.appInstance.getUserSettings("restoreSizePos")||{};return Ext.isDefined(t.minWidth)&&Ext.isDefined(e.width)&&e.width0||this.maskCnt>0)&&(this.blinkModalChild(),!0)},setMaskMsgVisible:function(t){if(this.el.isMasked()){var e=Ext.Element.data(this.el,"maskMsg");e&&e.dom&&(e.setVisibilityMode(Ext.Element.VISIBILITY),e.setVisible(t))}},setMaskOpacity:function(t){SYNO.SDS.AppWindow.superclass.setMaskOpacity.call(this,t),this.setMaskMsgVisible(0!==t)},delayedMask:function(t,e,i,s){e=e||200,this.maskTask||(this.maskTask=new Ext.util.DelayedTask(this.setMaskOpacity,this,[t])),this.mask(0,i,s),this.setMaskMsgVisible(!1),this.maskTask.delay(e)},synchronizedMask:function(t,e,i){this.mask(t,e,i),this.setMaskMsgVisible(0!==t)},setStatusBusy:function(t,e,i){t=t||{},Ext.applyIf(t,{text:_T("common","loading"),iconCls:"x-mask-loading"}),e=Ext.isNumber(e)?e:.4,(i=Ext.isNumber(i)?i:400)>0?this.delayedMask(e,i,t.text,t.iconCls):this.synchronizedMask(e,t.text,t.iconCls),this.canClose=!1},clearStatusBusy:function(t){this.unmask(),this.canClose=!0},onClose:function(){if(this.isStandaloneMainWindow()||!1===this.canClose)return!1;this.saveRestoreData(),this.callParent()},getOpenConfig:function(t){if(Ext.isString(t)&&!Ext.isEmpty(this.openConfig[t]))return this.openConfig[t]},setOpenConfig:function(t,e){Ext.isString(t)&&!Ext.isEmpty(t)&&(this.openConfig[t]=e)},hasOpenConfig:function(t){return!(!Ext.isString(t)||Ext.isEmpty(t))&&void 0!==this.openConfig[t]}}),Ext.namespace("SYNO.SDS.LegacyAppWindow"),SYNO.SDS.LegacyAppWindow=Ext.extend(SYNO.SDS.AppWindow,{iframeId:"",url:Ext.SSL_SECURE_URL,constructor:function(t){this.iframeId=Ext.id(),SYNO.SDS.LegacyAppWindow.superclass.constructor.call(this,Ext.apply({width:this.jsConfig.width||800,height:this.jsConfig.height||600,html:String.format('',this.iframeId,Ext.SSL_SECURE_URL)},t)),this.setURL(this.url)},onActivate:function(){SYNO.SDS.LegacyAppWindow.superclass.onActivate.apply(this,arguments),this.unmaskBody()},onDeactivate:function(){SYNO.SDS.LegacyAppWindow.superclass.onDeactivate.apply(this,arguments),this.maskBody()},setURL:function(t){Ext.getDom(this.iframeId).src=t},getURL:function(){return Ext.getDom(this.iframeId).src},maskBody:function(){var t=this.body.mask();t.setOpacity(0),this.mon(t,"mousedown",this.toFront,this)},unmaskBody:function(){var t=Ext.Element.data(this.body,"mask");t&&(this.mun(t,"mousedown",this.toFront,this),this.body.unmask())}}),SYNO.SDS.DefinePageList=function(t,e){Ext.define(t,{extend:e,layout:"border",border:!1,plain:!0,listItems:null,help:void 0,activePage:null,pageList:null,pageCt:null,defaultCollapsible:!0,constructor:function(t){var e,i;i=Ext.apply({items:[this.getPageList(t),this.getPageCt()]},t),this.callParent([i]),this.ctMaskCnt=0,e=this.pageList.getSelectionModel(),this.mon(e,"selectionchange",this.onSelectionChange,this),this.mon(e,"beforeselect",this.onBeforeSelect,this),this.mon(this.pageList.getLoader(),"load",this.onGetPageList,this,{single:!0})},onGetPageList:function(){this.fireEvent("moduleready",this)},getPageList:function(t){var e;return this.pageList||(e={region:"west",width:240,padding:"16px 12px 0 12px",defaultCollapsible:Ext.isDefined(t.defaultCollapsible)?t.defaultCollapsible:this.defaultCollapsible},t.dataUrl?e.dataUrl=t.dataUrl:t.listItems&&(e.listItems=t.listItems),this.pageList=new SYNO.ux.ModuleList(e)),this.pageList},getPageCt:function(){return this.pageCt||(this.pageCt=new Ext.Panel({layout:"card",padding:"16px 16px 0 16px",bodyStyle:"margin-left: 1px",border:!1,frame:!1,hideMode:"offsets",region:"center"})),this.pageCt},mask:function(t,e,i,s){if(s)return this.callParent(arguments);if(!this.isDestroyed)if(t=t||0,this.ctMaskCnt++,this.ctMaskCnt>1)this.setMaskOpacity(t);else{var n=this.getPageCt().el.mask(e,i);n.addClass("sds-window-mask"),this.mon(n,"mousedown",this.blinkModalChild,this),this.setMaskOpacity(t),this.updateTaskButton("mask")}},unmask:function(t){if(t)return this.callParent(arguments);if(!(this.isDestroyed||--this.ctMaskCnt>0)){this.ctMaskCnt=0,this.maskTask&&this.maskTask.cancel();var e=Ext.Element.data(this.getPageCt().el,"mask");this.mun(e,"mousedown",this.blinkModalChild,this),this.getPageCt().el.unmask(),this.updateTaskButton("unmask")}},setMaskOpacity:function(t,e){if(e)return this.callParent([t]);this.getPageCt().el.isMasked()&&Ext.Element.data(this.getPageCt().el,"mask").setOpacity(t)},selectPage:function(t){var e,i;return!!t&&((e=(i=this.getPageList()).getNodeById(t))&&i.getSelectionModel().isSelected(e)?(this.handleOpenParams(),!0):i.selectModule(t))},getActivePage:function(){return this.pageCt.layout.activeItem},getHelpParam:function(){var t,e;return(t=this.getActivePage())?Ext.isFunction(t.getHelpParam)?t.getHelpParam():(e=this.getPageList().getNodeById(t.itemId))&&e.attributes&&Ext.isString(e.attributes.help)?e.attributes.help:this.help:this.help},onLoad:function(){},onBeforeSelect:function(t,e,i){var s,n=!0;if(this.getPageCt().el.isMasked())return!1;if(this.isSkipDeactivateCheck())return this.clearSkipDeactivateCheck(),!0;if(!e.leaf)return!0;if(!e.attributes.fn)return SYNO.Debug.error("Error: not implemented yet!!"),!1;if(i&&i.leaf&&(s=this.pageCt.getComponent(i.attributes.fn))&&Ext.isFunction(s.onPageDeactivate)&&(n=s.onPageDeactivate()),!1===n)if(this.pageList.findNext=!1,s.hasLeaveLostChangeDialog)this.confirmLeave(function(t){"yes"===t&&(this.setSkipDeactivateCheck(),this.selectPage(e.attributes.fn))});else{var o=s.onPageConfirmLostChangeSave&&s.onPageConfirmLostChangeSave.bind(s),r=s.onPageConfirmLostChangeDontSave&&s.onPageConfirmLostChangeDontSave.bind(s),a=s.onPageConfirmLostChangeCancel&&s.onPageConfirmLostChangeCancel.bind(s);this.confirmLostChangePromise({save:o||Ext.emptyFn,dontSave:r||Ext.emptyFn,cancel:a||Ext.emptyFn},this,Ext.emptyFn,function(){this.setSkipDeactivateCheck(),this.selectPage(e.attributes.fn)})}return n},onSelectionChange:function(t,e){var i;e.leaf&&(i=e.attributes.fn)&&this.launchPage(i)},onClose:function(){var t=this.getActivePage(),e=this.callParent(arguments);if(this.isSkipDeactivateCheck())return this.clearSkipDeactivateCheck(),!0;if(!1===e)return!1;if(t&&Ext.isFunction(t.onPageDeactivate)&&!1===t.onPageDeactivate()){if(t.hasLeaveLostChangeDialog)this.confirmLeave(function(t){"yes"===t&&(this.setSkipDeactivateCheck(),this.close())});else{var i=t.onPageConfirmLostChangeSave&&t.onPageConfirmLostChangeSave.bind(t),s=t.onPageConfirmLostChangeDontSave&&t.onPageConfirmLostChangeDontSave.bind(t),n=t.onPageConfirmLostChangeCancel&&t.onPageConfirmLostChangeCancel.bind(t);this.confirmLostChangePromise({save:i||Ext.emptyFn,dontSave:s||Ext.emptyFn,cancel:n||Ext.emptyFn},this,Ext.emptyFn,function(){this.setSkipDeactivateCheck(),this.close()})}return!1}return e},launchPage:function(t){var e=this.pageCt,i=e.getComponent(t);return i||(i=this.createPage(t),e.add(i)),!!i&&(e.layout.setActiveItem(t),this.activePage=i,this.selectTab(0),i.onPageActivate&&i.onPageActivate(this.openParams),!0)},handleOpenParams:function(){Ext.isFunction(this.activePage.onPageFocus)&&this.activePage.onPageFocus(this.openParams),this.openParams&&this.openParams.tab&&this.selectTab(this.openParams.tab)},selectTab:function(t){var e=this.getActivePage();e&&e instanceof Ext.TabPanel&&Ext.isFunction(e.setActiveTab)&&e.setActiveTab(t)},createPage:function(t){var e,i=this.appWin||this,s=i.jsConfig;return(e=new(Ext.getClassByName(t))({appWin:i,jsConfig:s,owner:this})).itemId=t,e},confirmLostChange:function(t,e){SYNO.Debug.warn("confirmLostChange deprecated!!, please remove it"),this.getMsgBox().confirm("",_T("common","confirm_lostchange"),t,e)},isSkipDeactivateCheck:function(){return!!this.skipDeactivateCheckFlag},setSkipDeactivateCheck:function(){this.skipDeactivateCheckFlag=!0},clearSkipDeactivateCheck:function(){this.skipDeactivateCheckFlag=!1},onOpen:function(t){this.callParent(arguments),this.onLaunchPage(t)},onRequest:function(t){this.callParent(arguments),this.onLaunchPage(t)},onLaunchPage:function(t){var e=this.getPageList().getRootNode();e&&e.childrenRendered&&e.childNodes.length>0?this.launchPageOnOpen(t):this.mon(this,"moduleready",function(){this.launchPageOnOpen(t)},this,{single:!0})},launchPageOnOpen:function(t){var e;this.checkModalOrMask()||(e=t&&t.fn?t.fn:this.activePage,this.openParams=t,this.selectPage(e)&&(this.openParams=null))},setNotification:function(t,e){this.getPageList().setNotification(t,e)},clearNotification:function(t){this.getPageList().clearNotification(t)}})},SYNO.SDS.DefinePageList("SYNO.SDS.PageListAppWindow","SYNO.SDS.AppWindow"),SYNO.SDS.DefinePageList("SYNO.SDS.PageListPanel","SYNO.ux.Panel"),Ext.define("SYNO.SDS.AboutWindow",{extend:"SYNO.SDS.ModalWindow",isBeta:!1,constructor:function(t){var e,i,s,n,o;if(!t||!t.owner)throw"No Owner!";e=t.owner.appInstance.jsConfig,n=t.owner.isBeta||this.isBeta,o=e.buildTime?Date.parseDate(e.buildTime,"Y-m-d"):Date.parseDate(_S("builddate"),"Y/m/d"),s=n?String.format('{1}',t.pkgColor,SYNO.SDS.UIString.GetLocalizedString(e.title,e.jsID)):String.format('{1}',t.pkgColor,SYNO.SDS.UIString.GetLocalizedString(e.title,e.jsID)),i={cls:"about-window",layout:"border",closable:!0,resizable:!1,draggable:!1,width:460,height:275,header:!1,useStatusBar:!1,closeAction:"hide",items:[{xtype:"box",region:"west",cls:"about-west",html:String.format('',e.jsBaseURL+"/"+String.format(e.icon,256,SYNO.SDS.UIFeatures.test("isRetina")?"2x":"1x"))},{xtype:"container",region:"center",cls:"about-center",height:259,items:[{xtype:"box",cls:"about-syno",html:Ext.isEmpty(t.aboutHeader)?"Synology":t.aboutHeader},{xtype:"box",cls:"about-pkgname",html:s},{xtype:"box",cls:"about-divider"},{xtype:"box",cls:"about-version",html:String.format("{0}: {1}",_T("nfs","nfs_key_version"),e.version)},{xtype:"box",cls:"about-ip",html:String.format("{0}: {1}",_T("common","osname"),_S("productversion")+"-"+_S("version"))},{xtype:"box",cls:"about-copyright",width:314,html:String.format(_T("copyright","copyright"),o.getUTCFullYear())}]}]},Ext.apply(i,t),this.callParent([i])}}),SYNO.SDS.Utils.GetAppIcon=function(t,e){if(t in SYNO.SDS.Config.FnMap){var i=SYNO.SDS.Config.FnMap[t].config;return SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(i.jsBaseURL+"/"+i.icon,e)}return""},SYNO.SDS.Utils.GetAppTitle=function(t){if(t in SYNO.SDS.Config.FnMap){var e=SYNO.SDS.Config.FnMap[t].config;return SYNO.SDS.UIString.GetLocalizedString(e.title,t)}return""},Ext.define("SYNO.SDS.Wizard.Step",{extend:"Ext.Panel",getNext:function(){return this.nextId?this.nextId:null},checkState:function(){var t=this.owner,e=t.getButton("back"),i=t.getButton("next");Ext.isEmpty(e)||(t.hasHistory()?e.show():e.hide(),e.enable()),null===this.nextId?i.setText(_T("common","done")):i.setText(_T("common","next")),_S("demo_mode")&&this.disableNextInDemoMode?(i.disable(),i.setTooltip(_JSLIBSTR("uicommon","error_demo"))):(i.enable(),i.setTooltip(""))}}),Ext.define("SYNO.SDS.Wizard.WelcomeStep",{extend:"SYNO.SDS.Wizard.Step",constructor:function(t){if(!Ext.isObject(t))throw Error("invalid cfg of WelcomeStep");var e={items:[{role:"article",xtype:"syno_panel",html:t.description||"",tabIndex:0,padding:"0px",bodyCssClass:"welcome-text"}]};Ext.isEmpty(t.leftTitle)||SYNO.Debug.error("Error: leftTitle is deprecated, please use title instead."),this.callParent([Ext.apply(e,t)])},checkState:function(){var t=this.owner.getButton("next");this.callParent(arguments),t.setText(_T("common","start"))},activate:function(){this.adjustLayout(!0)},deactivate:function(){this.adjustLayout(!1)},adjustLayout:function(t){var e=this.owner,i=e.getWelcomeFBar(),s=e.getNormalFBar();i!==s&&i&&s&&(t?(i.show(),s.hide()):(i.hide(),s.show()))},updateHeight:function(){var t=this.owner.getHeight()-46-56;this.setHeight(t)}}),Ext.define("SYNO.SDS.Wizard.SummaryStore",{extend:"Ext.data.JsonStore",constructor:function(){SYNO.SDS.Wizard.SummaryStore.superclass.constructor.call(this,{autoDestroy:!0,root:"data",fields:["key","value"]})},append:function(t,e){this.loadData({data:[{key:t,value:e}]},!0)},appendSub:function(t,e){this.append(String.format("    {0}",t),e)},appendNoChange:function(t){this.append(t,String.format("[{0}]",_T("tree","nochangepage")))}}),Ext.define("SYNO.SDS.Wizard.SummaryStep",{extend:"SYNO.ux.GridPanel",showCommitButton:!1,constructor:function(t){var e=Ext.apply({headline:_T("ezinternet","ezinternet_summary_title"),description:_T("wizcommon","summary_descr"),viewConfig:{forceFit:!1},columns:[{width:200,header:_T("status","header_item"),dataIndex:"key",renderer:this.fieldRenderer},{id:"value",autoExpand:!0,header:_T("status","header_value"),dataIndex:"value",renderer:this.descRenderer,scope:this}],enableHdMenu:!1,enableColumnMove:!1,autoExpandColumn:"value",store:new SYNO.SDS.Wizard.SummaryStore},t);SYNO.SDS.Wizard.SummaryStep.superclass.constructor.call(this,e)},fieldRenderer:function(t,e){return e.attr='ext:qtip="'+Ext.util.Format.htmlEncode(t)+'"',''+t+""},descRenderer:function(t,e,i,s,n,o){var r=Ext.util.Format.htmlEncode(t);return e.attr='ext:qtip="'+Ext.util.Format.htmlEncode(r)+'"',''+r+""},activate:function(){var t=this.owner.stepStack,e=null;this.getStore().removeAll(!0);for(var i=0;i ',done:'
 
',fail:'
 
'};if(e[t])return e[t]},checkState:function(){this.owner.hasHistory()?this.owner.getButton("back").show():this.owner.getButton("back").hide(),this.owner.disableCloseButton(),null===this.nextId?this.owner.getButton("next").setText(_T("common","finish")):this.owner.getButton("next").setText(_T("common","next"))},activate:function(){var t=this,e=this.getStore(),i=this.owner.stepStack,s=null;this.owner.clearStatus(),e.removeAll(!0),Ext.each(i,function(i){var n=this.owner.getStep(i);Ext.isFunction(n.appendTask)&&(e.commitChanges(),n.appendTask(e),s=e.getModifiedRecords(),Ext.each(s,function(e){var s=e.get("option");s&&!s.backId&&(s.backId=i),e.report=function(e){t.report(e)},e.doNextTask=function(e){t.doNextTask(e)}},this))},this),e.commitChanges(),this.getView().refresh(),e.getCount()>0?this.start():this.finish.defer(300,this)},deactivate:function(){if(this.currentTask)return SYNO.Debug.error("task is running"),!1},report:function(t){t&&(t.success?this.owner.setStatusOK(t):this.owner.setStatusError(t))},start:function(){this.owner.getButton("back").disable(),this.owner.getButton("next").disable(),this.doTask(0)},finish:function(){!Ext.isString(this.getBack())?(this.owner.getButton("back").disable(),this.owner.getButton("back").hide(),this.report({success:!0})):(this.owner.getButton("back").enable(),this.owner.getButton("next").setText(_T("common","cancel"))),this.owner.enableCloseButton(),this.owner.getButton("next").enable(),this.currentTask=null},getBack:function(){var t=this.getStore(),e=null,i=0;for(i=0;i=0;e--)if(this.stepStack[e]===t)return!0;return!1},hasHistory:function(){return this.stepStack.length>0},syncView:function(){var t=this.getActiveStep();t&&(Ext.isFunction(t.checkState)&&t.checkState(),this.banner&&(this.setHeadline(t.headline||""),this.setDescription(t.description||"")))}}),Ext.define("SYNO.SDS.Wizard.AppWindow",{extend:"SYNO.SDS.AppWindow",isWizard:!0,constructor:function(t){(t=t||{}).cls=t.cls||"",t.cls+=" sds-wizard-window",t.minimizable=!1,this.callParent([this.configWizard(t)]),this.stepStack=[]},afterRender:function(){this.callParent(arguments);var t=this.header.child(".x-window-header-text"),e=this.initialConfig.title+String.format('
- {0}
',this.getActiveStep().headline);t.update(e)},onOpen:function(){this.callParent(arguments);var t=this.getActiveStep();t&&Ext.isFunction(t.activate)&&!1===t.activate()||this.syncView()},onClose:function(){var t=this.getActiveStep();return(!t||!Ext.isFunction(t.deactivate)||!1!==t.deactivate("close"))&&!1!==this.callParent(arguments)},getWelcomeFBar:SYNO.SDS.Wizard.BaseWindow.prototype.getWelcomeFBar.clone(),getNormalFBar:SYNO.SDS.Wizard.BaseWindow.prototype.getNormalFBar.clone(),addHeaderToStep:SYNO.SDS.Wizard.BaseWindow.prototype.addHeaderToStep.clone(),configWizard:SYNO.SDS.Wizard.BaseWindow.prototype.configWizard.clone(),configSteps:SYNO.SDS.Wizard.BaseWindow.prototype.configSteps.clone(),appendSteps:SYNO.SDS.Wizard.BaseWindow.prototype.appendSteps.clone(),getStep:SYNO.SDS.Wizard.BaseWindow.prototype.getStep.clone(),getActiveStep:SYNO.SDS.Wizard.BaseWindow.prototype.getActiveStep.clone(),setActiveStep:SYNO.SDS.Wizard.BaseWindow.prototype.setActiveStep.clone(),configButtons:SYNO.SDS.Wizard.BaseWindow.prototype.configButtons.clone(),getButton:SYNO.SDS.Wizard.BaseWindow.prototype.getButton.clone(),setHeader:SYNO.SDS.Wizard.BaseWindow.prototype.setHeader.clone(),goNext:SYNO.SDS.Wizard.BaseWindow.prototype.goNext.clone(),toggleFootbar:SYNO.SDS.Wizard.BaseWindow.prototype.toggleFootbar.clone(),goBack:SYNO.SDS.Wizard.BaseWindow.prototype.goBack.clone(),inHistory:SYNO.SDS.Wizard.BaseWindow.prototype.inHistory.clone(),hasHistory:SYNO.SDS.Wizard.BaseWindow.prototype.hasHistory.clone(),getAllSteps:SYNO.SDS.Wizard.BaseWindow.prototype.getAllSteps.clone(),syncView:SYNO.SDS.Wizard.BaseWindow.prototype.syncView.clone()}),Ext.define("SYNO.SDS.Wizard.ModalWindow",{extend:"SYNO.SDS.ModalWindow",isWizard:!0,constructor:function(t){(t=t||{}).cls=t.cls||"",t.cls+=" sds-wizard-window",t.minimizable=!1,this.callParent([this.configWizard(t)]),this.stepStack=[]},afterRender:function(){this.callParent(arguments);var t=this.header.child(".x-window-header-text"),e=this.initialConfig.title+String.format('
- {0}
',this.getActiveStep().headline);t.update(e)},onOpen:function(){this.callParent(arguments);var t=this.getActiveStep();t&&Ext.isFunction(t.activate)&&!1===t.activate()||this.syncView()},onClose:function(){var t=this.getActiveStep();return(!t||!Ext.isFunction(t.deactivate)||!1!==t.deactivate("close"))&&!1!==this.callParent(arguments)},getWelcomeFBar:SYNO.SDS.Wizard.BaseWindow.prototype.getWelcomeFBar.clone(),getNormalFBar:SYNO.SDS.Wizard.BaseWindow.prototype.getNormalFBar.clone(),addHeaderToStep:SYNO.SDS.Wizard.BaseWindow.prototype.addHeaderToStep.clone(),configWizard:SYNO.SDS.Wizard.BaseWindow.prototype.configWizard.clone(),configSteps:SYNO.SDS.Wizard.BaseWindow.prototype.configSteps.clone(),appendSteps:SYNO.SDS.Wizard.BaseWindow.prototype.appendSteps.clone(),getStep:SYNO.SDS.Wizard.BaseWindow.prototype.getStep.clone(),getActiveStep:SYNO.SDS.Wizard.BaseWindow.prototype.getActiveStep.clone(),setActiveStep:SYNO.SDS.Wizard.BaseWindow.prototype.setActiveStep.clone(),configButtons:SYNO.SDS.Wizard.BaseWindow.prototype.configButtons.clone(),getButton:SYNO.SDS.Wizard.BaseWindow.prototype.getButton.clone(),setHeader:SYNO.SDS.Wizard.BaseWindow.prototype.setHeader.clone(),goNext:SYNO.SDS.Wizard.BaseWindow.prototype.goNext.clone(),toggleFootbar:SYNO.SDS.Wizard.BaseWindow.prototype.toggleFootbar.clone(),goBack:SYNO.SDS.Wizard.BaseWindow.prototype.goBack.clone(),inHistory:SYNO.SDS.Wizard.BaseWindow.prototype.inHistory.clone(),hasHistory:SYNO.SDS.Wizard.BaseWindow.prototype.hasHistory.clone(),getAllSteps:SYNO.SDS.Wizard.BaseWindow.prototype.getAllSteps.clone(),syncView:SYNO.SDS.Wizard.BaseWindow.prototype.syncView.clone(),setMaskMsgVisible:function(t){if(this.el.isMasked()){var e=Ext.Element.data(this.el,"maskMsg");e&&e.dom&&(e.setVisibilityMode(Ext.Element.VISIBILITY),e.setVisible(t))}},setMaskOpacity:function(t){SYNO.SDS.AppWindow.superclass.setMaskOpacity.call(this,t),this.setMaskMsgVisible(0!==t)},delayedMask:function(t,e,i,s){e=e||200,this.maskTask||(this.maskTask=new Ext.util.DelayedTask(this.setMaskOpacity,this,[t])),this.mask(0,i,s),this.setMaskMsgVisible(!1),this.maskTask.delay(e)},synchronizedMask:function(t,e,i){this.mask(t,e,i),this.setMaskMsgVisible(0!==t)},setStatusBusy:function(t,e,i){t=t||{},Ext.applyIf(t,{text:_T("common","loading"),iconCls:"x-mask-loading"}),e=Ext.isNumber(e)?e:.4,(i=Ext.isNumber(i)?i:400)>0?this.delayedMask(e,i,t.text,t.iconCls):this.synchronizedMask(e,t.text,t.iconCls)},setStatusError:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","error_system")}),this.getMsgBox().alert(_T("error","error_error"),t.text)}}),Ext.namespace("SYNO.SDS.TaskRunner"),SYNO.SDS._TaskMgr=function(t){var e=t||10,i=[],s=[],n=0,o=!1,r=!1,a=function(t,e){for(var i;0!==e;)i=t%e,t=e,e=i;return t},l=function(){var s=function(){var e,s,n=i[0].interval;for(e=1;s=i[e];e++)n=a(n,s.interval);return Math.max(n,t)}();return s!==e&&(e=s,!0)},c=function(){o=!1,clearTimeout(n),n=0},d=function(t){s.push(t),t.onStop&&t.onStop.apply(t.scope||t)},u=function(t){t.processing=!0,Promise.resolve(t.run.apply(t.scope||t,t.args||[++t.taskRunCount])).then(e=>{!1===e&&d(t),t.processing=!1})},h=function(){var t,o,a,p,_=!1,S=(new Date).getTime();for(t=0;o=s[t];t++)i.remove(o),_=!0;if(s=[],i.length){for(t=0;o=i[t];++t)if(o=i[t],!r||!0===o.preventHalt){if(p=S-o.taskRunTime,o.interval<=p){if(!1===o.processing)try{u(o)}catch(t){if(!Ext.isIE&&(SYNO.Debug.error("TaskRunner: task "+o.id+" exception: ",t),Ext.isDefined(SYNO.SDS.JSDebug)))throw o.taskRunTime=S,t}if(o.taskRunTime=S,a=o.interval,o.interval=o.adaptiveInterval(),a!==o.interval&&(_=!0),o.taskRunCount===o.repeat)return void d(o)}o.duration&&o.duration<=S-o.taskStartTime&&d(o)}_&&l(),n=setTimeout(h,e)}else c()};this.start=function(t,e){var s=(new Date).getTime();return i.push(t),t.taskStartTime=s,t.taskRunTime=!1===e?s:0,t.taskRunCount=0,o?(l(),clearTimeout(n),setImmediate(h)):o||(o=!0,l(),setImmediate(h)),t},this.stop=function(t){return d(t),t},this.stopAll=function(){var t,e;for(c(),t=0;e=i[t];t++)e.onStop&&e.onStop();i=[],s=[]},this.setHalt=function(t){r=t}},SYNO.SDS.TaskMgr=new SYNO.SDS._TaskMgr(100),SYNO.SDS.TaskRunner=Ext.extend(Ext.util.Observable,{tasks:null,constructor:function(){SYNO.SDS.TaskRunner.superclass.constructor.apply(this,arguments),this.addEvents("add","remove","beforestart"),this.tasks={}},destroy:function(){this.stopAll(),this.tasks={},this.isDestroyed=!0},start:function(t,e){if(!this.isDestroyed)return t.running||(this.fireEvent("beforestart",t),SYNO.SDS.TaskMgr.start(t,e)),t.running=!0,t},stop:function(t){return t.running&&SYNO.SDS.TaskMgr.stop(t),t.running=!1,t},stopAll:function(){for(var t in this.tasks)if(this.tasks.hasOwnProperty(t)){if(!this.tasks[t].running)continue;SYNO.SDS.TaskMgr.stop(this.tasks[t])}},addTask:function(t){return t.id=t.id||Ext.id(),this.tasks[t.id]=t,this.fireEvent("add",t),t},createTask:function(t){t.id=t.id||Ext.id();var e=this.tasks[t.id];return e?e.apply(t):(e=new SYNO.SDS.TaskRunner.Task(t,this),this.addTask(e)),e},createAjaxTask:function(t){t.id=t.id||Ext.id();var e=this.tasks[t.id];return e?e.apply(t):(e=new SYNO.SDS.TaskRunner.AjaxTask(t,this),this.addTask(e)),e},createWebAPITask:function(t){t.id=t.id||Ext.id();var e=this.tasks[t.id];return e?e.apply(t):(e=new SYNO.SDS.TaskRunner.WebAPITask(t,this),this.addTask(e)),e},removeTask:function(t){var e=this.tasks[t];e&&(this.fireEvent("remove",e),delete this.tasks[t])},getTask:function(t){return this.tasks[t]||null}});const LOW_LEVEL_RUNNER_INTERVAL_PENALTY=2;SYNO.SDS.TaskRunner.Task=Ext.extend(Ext.util.Observable,{INTERVAL_DEFAULT:6e4,INTERVAL_FALLBACK:6e4,manager:null,running:!1,processing:!1,removed:!1,taskFirstRunTime:0,constructor:function(t,e){SYNO.SDS.TaskRunner.Task.superclass.constructor.apply(this,arguments),this.manager=e,this.apply(t)},apply:function(t){this.applyInterval(t.interval),delete t.interval,this.applyConfig(t)},applyConfig:function(t){Ext.apply(this,t)},applyInterval:function(t){this.intervalData=t,Ext.isFunction(this.intervalData)||Ext.isArray(this.intervalData)||Ext.isNumber(this.intervalData)||(this.intervalData=this.INTERVAL_DEFAULT),this.interval=this.adaptiveInterval()},adaptiveInterval:function(){var t,e=0,i=this.intervalData,s=null;if(this.taskFirstRunTime&&(e=(new Date).getTime()-this.taskFirstRunTime),Ext.isNumber(i))s=i;else if(Ext.isFunction(i))s=i.call(this.scope||this,e);else if(Ext.isArray(i))for(t=0;te);++t)s=i[t].interval;return Ext.isNumber(s)||(SYNO.Debug.debug("TaskRunner: Task "+this.id+" interval fallback to "+this.INTERVAL_FALLBACK),s=this.INTERVAL_FALLBACK),SYNO.SDS.Utils.isLowLevelModel()&&(s*=2),s},start:function(t){var e=(new Date).getTime();if(!this.removed)return this.taskFirstRunTime||(this.taskFirstRunTime=!1===t?e+this.interval:e),this.manager.start(this,t)},stop:function(){if(!this.removed)return this.manager.stop(this)},restart:function(t){this.stop(),this.start(t)},remove:function(){this.stop(),this.manager.removeTask(this.id),this.removed=!0}}),SYNO.SDS.TaskRunner.AjaxTask=Ext.extend(SYNO.SDS.TaskRunner.Task,{constructor:function(t,e){this.reqId=null,this.reqConfig=null,this.cbHandler=null,this.autoJsonDecode=!1,this.single=!1,SYNO.SDS.TaskRunner.AjaxTask.superclass.constructor.call(this,t,e)},applyConfig:function(t){Ext.apply(this,{run:this.run,scope:this}),this.autoJsonDecode=!0===t.autoJsonDecode,this.single=!0===t.single,this.preventHalt=!0===t.preventHalt,this.cbHandler={},this.reqConfig={},Ext.copyTo(this.cbHandler,t,["scope","callback","success","failure"]),Ext.apply(this.reqConfig,t),Ext.apply(this.reqConfig,{success:null,failure:null,callback:this.onCallback,scope:this}),Ext.applyIf(this.reqConfig,{method:"GET"}),delete this.reqConfig.id,delete this.reqConfig.autoJsonDecode,delete this.reqConfig.single},stop:function(){this.reqId&&(Ext.Ajax.abort(this.reqId),this.reqId=null),SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.apply(this,arguments)},run:function(){this.reqConfig.url?(SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.call(this),this.reqId=Ext.Ajax.request(this.reqConfig)):this.remove()},onCallback:function(t,e,i){var s=i,n=Ext.apply({},t);if(Ext.apply(n,{scope:this.cbHandler.scope,callback:this.cbHandler.callback,success:this.cbHandler.success,failure:this.cbHandler.failure}),e&&this.autoJsonDecode)try{s=Ext.util.JSON.decode(i.responseText)}catch(t){s={success:!1},e=!1}e&&n.success?n.success.call(n.scope,s,t):!e&&n.failure&&n.failure.call(n.scope,s,t),n.callback&&n.callback.call(n.scope,t,e,s),this.fireEvent("callback",t,e,s),e&&this.single?(this.reqId=null,this.remove()):this.reqId&&(this.reqId=null,this.start(!1))}}),SYNO.SDS.TaskRunner.WebAPITask=Ext.extend(SYNO.SDS.TaskRunner.AjaxTask,{constructor:function(t,e){SYNO.SDS.TaskRunner.WebAPITask.superclass.constructor.call(this,t,e)},applyConfig:function(t){Ext.apply(this,{run:this.run,scope:this}),this.single=!0===t.single,this.preventHalt=!0===t.preventHalt,this.cbHandler={},this.reqConfig={},Ext.copyTo(this.cbHandler,t,["callback","scope"]),Ext.apply(this.reqConfig,t),Ext.apply(this.reqConfig,{callback:this.onCallback,scope:this}),delete this.reqConfig.id,delete this.reqConfig.single},run:function(){SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.call(this),this.reqId=SYNO.API.Request(this.reqConfig)},onCallback:function(t,e,i,s){var n=Ext.apply({},s);Ext.apply(n,{scope:this.cbHandler.scope,callback:this.cbHandler.callback}),n.callback&&n.callback.call(n.scope,t,e,i,n),this.fireEvent("callback",t,e,i,n),this.single?(this.reqId=null,this.remove()):this.reqId&&(this.reqId=null,this.start(!1))}}),Ext.namespace("SYNO.SDS.BackgroundTaskMgr"),SYNO.SDS._BackgroundTaskMgr=Ext.extend(Ext.util.Observable,{taskRunner:null,pollingTaskRunner:null,tasks:null,pollingTask:null,taskName:"BackgroundTask",settings:"SYNO.SDS.UserSettings",constructor:function(){SYNO.SDS._BackgroundTaskMgr.superclass.constructor.apply(this,arguments),this.addEvents("add","remove","progress"),this.taskRunner=new SYNO.SDS.TaskRunner,this.tasks={},this.taskRunner.on("remove",this.onTaskRunnerRemove,this),"BackgroundTask"===this.taskName&&SYNO.SDS.StatusNotifier.isAppEnabled("SYNO.SDS.App.FileStation3.Instance")?this.initBackdroundTask():this.loadUserSettings()},initBackdroundTask:function(){var t=this;if(!this.pollingTaskRunner){this.pollingTaskRunner=new SYNO.SDS.TaskRunner;var e={interval:3e5,api:"SYNO.FileStation.BackgroundTask",method:"list",params:{is_list_sharemove:!0,is_vfs:!0,bkg_info:!0},version:3,callback:function(e,i){e&&Ext.iterate(i.tasks,function(e,i){e.background&&e.background.id&&Ext.isEmpty(t.taskRunner.getTask(e.background.id))&&!e.finished&&t.addWebAPITask(e.background)})},scope:t};this.pollingTask=this.pollingTaskRunner.createWebAPITask(e),this.pollingTask.start(!0)}},loadUserSettings:function(){var t,e=Ext.getClassByName(this.settings).getProperty(this.taskName,"tasks");for(t in e)if(e.hasOwnProperty(t)){var i=e[t];if(!i)return void this.removeTask(t);i.query&&i.query.api?this.addWebAPITask(e[t]):this.addTask(e[t])}},addTask:function(t){t.id=t.id||Ext.id(),this.tasks[t.id]=SYNO.Util.copy(Ext.copyTo({},t,"id,title,query,cancel,options"));var e=new SYNO.SDS._BackgroundTaskMgr.Task(t,this.taskRunner);(e.id=t.id,e.addCallback(this.onTaskProgress,this),this.taskRunner.addTask(e).start(),this.fireEvent("add",e),this.pollingTask)?this.pollingTask.restart(!0):Ext.getClassByName(this.settings).setProperty(this.taskName,"tasks",this.tasks);return e},addWebAPITask:function(t){t.id=t.id||Ext.id(),this.tasks[t.id]=SYNO.Util.copy(Ext.copyTo({},t,"id,title,query,cancel,options"));var e=new SYNO.SDS._BackgroundTaskMgr.WebAPITask(t,this.taskRunner);(e.id=t.id,e.addCallback(this.onTaskProgress,this),this.taskRunner.addTask(e).start(),this.fireEvent("add",e),this.pollingTask)?this.pollingTask.restart(!0):Ext.getClassByName(this.settings).setProperty(this.taskName,"tasks",this.tasks);return e},getTask:function(t){return this.taskRunner.getTask(t)},removeTask:function(t){var e=this.getTask(t);e&&e.remove(),this.fireEvent("remove",e)},onTaskRunnerRemove:function(t){delete this.tasks[t.id],Ext.getClassByName(this.settings).setProperty(this.taskName,"tasks",this.tasks)},onTaskProgress:function(t,e,i,s,n){this.fireEvent("progress",t,e,i,s,n)}}),SYNO.SDS._BackgroundTaskMgr.Task=Ext.extend(SYNO.SDS.TaskRunner.AjaxTask,{INTERVAL_DEFAULT:[{time:0,interval:3e3},{time:6e3,interval:5e3},{time:6e4,interval:6e3},{time:12e4,interval:7e3},{time:3e5,interval:1e4}],constructor:function(t,e){this.addEvents("progress"),SYNO.SDS._BackgroundTaskMgr.Task.superclass.constructor.apply(this,arguments)},applyConfig:function(t){this.ajaxTaskConfig={},Ext.copyTo(this.ajaxTaskConfig,t.query,"method,url,params"),Ext.apply(this.ajaxTaskConfig,{autoJsonDecode:!0,success:this.onQuerySuccess,callback:this.onQueryCallback,scope:this}),t.cancel&&(this.cancelAjaxConfig={},Ext.copyTo(this.cancelAjaxConfig,t.cancel,"method,url,params"),Ext.apply(this.cancelAjaxConfig,{autoJsonDecode:!0,success:this.onCancelSuccess,scope:this})),Ext.copyTo(this,t,"title,desc"),SYNO.SDS._BackgroundTaskMgr.Task.superclass.applyConfig.call(this,this.ajaxTaskConfig)},cancel:function(){this.cancelAjaxConfig?(this.stop(),SYNO.SDS._BackgroundTaskMgr.Task.superclass.applyConfig.call(this,this.cancelAjaxConfig),this.start()):this.onCancelSuccess()},restart:function(){SYNO.SDS._BackgroundTaskMgr.Task.superclass.applyConfig.call(this,this.ajaxTaskConfig),SYNO.SDS._BackgroundTaskMgr.Task.superclass.restart.apply(this,arguments)},remove:function(){this.purgeListeners(),SYNO.SDS._BackgroundTaskMgr.Task.superclass.remove.apply(this,arguments)},addCallback:function(t,e){this.on("progress",t,e)},removeCallback:function(t,e){this.un("progress",t,e)},onQuerySuccess:function(t,e){t.success&&this.fireEvent("progress",this,"query",t.finished,t.progress,t.data,e.params,e),t.success&&!t.finished||(SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("checknotify"),this.remove())},onQueryCallback:function(t,e,i){e||!i||403!==i.status&&404!==i.status||this.remove()},onCancelSuccess:function(t,e){SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("checknotify"),!1!==this.fireEvent("progress",this,"cancel",null,null,t.data||t,e.params,e)&&this.remove()}}),SYNO.SDS._GroupSettingBackgroundTaskMgr=Ext.extend(SYNO.SDS._BackgroundTaskMgr,{taskName:"GroupBackgroundTask",settings:"SYNO.SDS.GroupSettings",constructor:function(){SYNO.SDS._GroupSettingBackgroundTaskMgr.superclass.constructor.apply(this,arguments),SYNO.SDS.StatusNotifier.on("syncGroupSettings",this.syncGroupSettings,this)},syncGroupSettings:function(){this.loadGroupSettings()},loadGroupSettings:function(){var t,e=Ext.getClassByName(this.settings).getProperty(this.taskName,"tasks");for(t in e)this.getTask(e[t])||this.addTask(e[t])}}),SYNO.SDS._MailBackgroundTaskMgr=Ext.extend(SYNO.SDS._BackgroundTaskMgr,{taskName:"MailTask",settings:"SYNO.SDS.UserSettings",addWebAPITask:function(t){t.id=t.id||Ext.id(),this.tasks[t.id]=SYNO.Util.copy(Ext.copyTo({},t,"id,title,query,cancel,options"));var e=new SYNO.SDS._BackgroundTaskMgr.WebAPITask(t,this.taskRunner);return e.id=t.id,e.sender=t.sender,e.reciever=t.reciever,e.subject=t.subject,e.addCallback(this.onTaskProgress,this),this.taskRunner.addTask(e).start(),this.fireEvent("add",e),Ext.getClassByName(this.settings).setProperty(this.taskName,"tasks",this.tasks),e}}),SYNO.SDS._UploadBackgroundTaskMgr=Ext.extend(SYNO.SDS._BackgroundTaskMgr,{taskName:"UploadTask",settings:"SYNO.SDS.UserSettings"}),SYNO.SDS._PackageBackgroundTaskMgr=Ext.extend(SYNO.SDS._GroupSettingBackgroundTaskMgr,{taskName:"PackageTask",settings:"SYNO.SDS.GroupSettings"}),SYNO.SDS._BackgroundTaskMgr.WebAPITask=Ext.extend(SYNO.SDS.TaskRunner.WebAPITask,{INTERVAL_DEFAULT:SYNO.SDS._BackgroundTaskMgr.Task.prototype.INTERVAL_DEFAULT,constructor:function(t,e){this.addEvents("progress"),SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.constructor.apply(this,arguments)},applyConfig:function(t){this.ajaxTaskConfig={},Ext.copyTo(this.ajaxTaskConfig,t.query,"api,method,version,cancelable,url,params"),Ext.apply(this.ajaxTaskConfig,{callback:this.onQuerySuccess,scope:this}),t.cancel&&(this.cancelAjaxConfig={},Ext.copyTo(this.cancelAjaxConfig,t.cancel,"api,method,version,url,params"),Ext.apply(this.cancelAjaxConfig,{callback:this.onCancelSuccess,scope:this})),Ext.copyTo(this,t,"title,desc"),SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.applyConfig.call(this,this.ajaxTaskConfig)},cancel:function(){this.cancelAjaxConfig?(this.stop(),SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.applyConfig.call(this,this.cancelAjaxConfig),this.start()):this.onCancelSuccess()},restart:function(){SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.applyConfig.call(this,this.ajaxTaskConfig),SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.restart.apply(this,arguments)},remove:function(){this.purgeListeners(),SYNO.SDS._BackgroundTaskMgr.WebAPITask.superclass.remove.apply(this,arguments)},addCallback:function(t,e){this.on("progress",t,e)},removeCallback:function(t,e){this.un("progress",t,e)},onQuerySuccess:function(t,e,i,s){t?this.fireEvent("progress",this,"query",e.finished,e.progress,e,i,s):this.fireEvent("progress",this,"fail",null,null,e,i,s),t&&!e.finished||(SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("checknotify"),this.remove())},onCancelSuccess:function(t,e,i,s){SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("checknotify"),!1!==this.fireEvent("progress",this,"cancel",null,null,e,i,s)&&this.remove()}}),Ext.namespace("SYNO.SDS._AppMgr"),SYNO.SDS._AppMgr=Ext.extend(Ext.util.Observable,{list:null,constructor:function(){SYNO.SDS._AppMgr.superclass.constructor.apply(this,arguments),this.list={},SYNO.SDS.StatusNotifier.on("beforeUserSettingsUnload",this.saveStates,this)},register:function(t){this.list[t.id]=t},unregister:function(t){delete this.list[t.id]},get:function(t){return"object"==typeof t?t:this.list[t]},getBy:function(t,e){var i=[];for(var s in this.list)if(this.list.hasOwnProperty(s)){var n=this.list[s];!1!==t.call(e||n,n)&&i.push(n)}return i},getByAppName:function(t){return this.getBy(function(e){let i=e.jsConfig;return e.getJsConfig&&(i=e.getJsConfig()),t===i.jsID})},eachMissingApps:function(t,e){for(var i in this.list){let s=this.list[i],n=s.jsConfig;s.getJsConfig&&(n=s.getJsConfig());let o=n.jsID;if(this.list[i]&&"function"!=typeof this.list[i]&&(!Ext.isDefined(SYNO.SDS.Config.FnMap[o])||!SYNO.SDS.StatusNotifier.isAppEnabled(o))&&!1===t.call(e||this.list[i],this.list[i]))return}},each:function(t,e){for(var i in this.list)if(this.list[i]&&"function"!=typeof this.list[i]&&!1===t.call(e||this.list[i],this.list[i]))return},saveStates:function(){this.saveAppState(),this.saveWidgetState()},saveAppState:function(){if(SYNO.SDS.UserSettings.getProperty("Desktop","rememberWindowState")&&!_S("standalone")){var t=[];this.each(function(e){var i=e.getJsConfig().jsID;"SYNO.SDS.DSMNotify.Application"!==i&&"SYNO.SDS.App.FileTaskMonitor.Instance"!==i&&!0!==e.getJsConfig().hidden&&t.push({className:i,params:e.getStateParam()})}),t.length&&SYNO.SDS.UserSettings.setProperty("Desktop","restoreParams",t)}},saveWidgetState:function(){if(!_S("standalone")){var t=[];this.each(function(e){"SYNO.SDS._Widget.Instance"===e.getJsConfig().jsID&&(t=e.getStateParam())&&e.setUserSettings("restoreParams",t)})}}}),Ext.namespace("SYNO.SDS._GestureMgr"),SYNO.SDS._GestureMgr=Ext.extend(Ext.util.Observable,{constructor:function(){SYNO.Debug.error("SYNO.SDS._GestureMgr is deprecated and will be removed in next milestone.")}}),Ext.define("SYNO.SDS._FocusMgr",{extend:"Ext.util.Observable",constructor:function(){Ext.isIE?document.onfocusin=this.onFocusChange:document.addEventListener("focus",this.onFocusChange,!0),this.callParent(arguments)},onFocusChange:function(){if(SYNO.SDS.WindowMgr){var t=SYNO.SDS.WindowMgr.getActiveAppWindow();t&&t.addFocusPt&&t.addFocusPt()}},focusActiveWindow:function(){if(SYNO.SDS.WindowMgr){var t=SYNO.SDS.WindowMgr.getActiveAppWindow();t&&t.focusLastWindowPt&&t.focusLastWindowPt()}}}),Ext.namespace("SYNO.SDS._WindowMgr"),SYNO.SDS._WindowMgr=Ext.extend(Ext.util.Observable,{zseed:9e3,list:null,accessList:null,minimizedWin:null,centeredWindowCount:0,centerOffsets:[20,20],front:null,offsetX:10,offsetY:10,exposeTransformDelayTime:900,exposeRestoreDelayTime:300,exposeIconHeight:38,exposeIconShift:38,constructor:function(){this.list={},this.accessList=[],this.minimizedWin=[],SYNO.SDS._WindowMgr.superclass.constructor.apply(this,arguments),Ext.EventManager.onWindowResize(this.onWindowResize,this)},getVueModalWindow:function(t){if(t){if("ModalWindow"===t.$options.name||"MessageBoxWindow"===t.$options.name||"WizardWindow"===t.$options.name)return t;for(let e of t.$children){let t=this.getVueModalWindow(e);if(t)return t}}},openModalWindow:function(t,e={}){const i=document.querySelector("#sds-desktop");let s=document.createElement("div"),n=new t({propsData:e});i.appendChild(s),n.$mount(s);let o=this.getVueModalWindow(n);return o.init(),Vue.nextTick(()=>{o.alignCenterToElement&&o.alignCenterToElement(i)}),{window:o,component:n}},onWindowResize:function(){SYNO.SDS.WindowMgr.allHided&&SYNO.SDS.WindowMgr.toggleAllWin(),this.exposeMask&&this.exposeWindow()},sortWindows:function(t,e){var i=t.getTopWin?t.getTopWin():t,s=e.getTopWin?e.getTopWin():e,n=t.isModalized&&t.isModalized()?1:0,o=e.isModalized&&e.isModalized()?1:0,r=t.isAlwaysOnTop&&t.isAlwaysOnTop()?1:0,a=e.isAlwaysOnTop&&e.isAlwaysOnTop()?1:0,l=t.isAlwaysOnBottom&&t.isAlwaysOnBottom()?1:0,c=e.isAlwaysOnBottom&&e.isAlwaysOnBottom()?1:0;return l!==c?c?1:-1:r!==a?a?-1:1:i!==s?i.getGroupWinAccessTime()0){t.sort(this.sortWindows);for(var i=t[0].manager.zseed,s=0;st*this.centeredWindowCount)),t.alignTo(SYNO.SDS.Desktop.getEl(),"c-c",i),this.centeredWindowCount++}},setActiveWin:function(t){t!==this.front&&(this.front&&this.front.setActive(!1),this.front=t,t&&(t._isVue||(Ext.each(t.modalWin||[],function(t){t&&t.hideForMinimize&&(delete t.hideForMinimize,t.show())}),Ext.each(t.siblingWin||[],function(t){t&&t.hideForMinimize&&(delete t.hideForMinimize,t.show())})),this.bringToFront(t),t.setActive(!0)))},activateLast:function(){for(var t,e=this.accessList.length-1;e>=0;--e)if(!(t=this.accessList[e]).hidden){if(t.isSkipActive&&t.isSkipActive())continue;return this.setActiveWin(this.accessList[e]),this.accessList[e]}this.setActiveWin(null)},getMaximizeAppWindowCount:function(t){return this.accessList.reduce(function(e,i){return t&&t.id&&i.id&&t.id===i.id?e:(i._isVue||i instanceof SYNO.SDS.AppWindow)&&i.isVisible()&&!0===i.maximized?e+1:e},0)},register:function(t){if(t.manager&&t.manager.unregister(t),t.manager=this,this.list[t.id]=t,this.accessList.push(t),this.bindActivateLast=this.activateLast.bind(this),t.on?t.on("hide",this.activateLast,this):t._isVue&&t.$on("hide",this.bindActivateLast),t.fromRestore||t.isModalized&&t.isModalized()||this.cascadeOverlap(t),t.autoStart&&t.maximized&&t.appInstance){let{x:e,y:i,pageX:s,pageY:n}=t.appInstance.getRestoreSizePos();Ext.isDefined(e)||Ext.isDefined(i)||Ext.isDefined(s)||Ext.isDefined(n)||this.cascadeOverlap(t)}},unregister:function(t){delete t.manager,delete this.list[t.id],t.un?t.un("hide",this.activateLast,this):t._isVue&&t.$off("hide",this.bindActivateLast),this.accessList.remove(t),this.minimizedWin.remove(t)},get:function(t){return"object"==typeof t?t:this.list[t]},bringToFront:function(t){if((t=this.get(t))._lastClick=(new Date).getTime(),t===this.front)return SYNO.SDS.StatusNotifier.fireEvent("allwinordered",this.accessList,t),!1;do{if(t._lastAccess=(new Date).getTime(),t.isModalized&&!t.isModalized())break;t=t._isVue?t.$options.owner:t.owner}while(t);return this.orderWindows(),!0},sendToBack:function(t){return(t=this.get(t))._lastAccess=-(new Date).getTime(),this.orderWindows(),t},hideAll:function(){for(var t in this.list)this.list[t]&&"function"!=typeof this.list[t]&&this.list[t].isVisible()&&this.list[t].hide()},getActive:function(){return this.front},getActiveAppWindow:function(){var t=this.getActive();if(t instanceof SYNO.SDS.AppWindow)return t;for(;t&&!t.appInstance;)t=t.owner;return t},getBy:function(t,e){for(var i=[],s=this.accessList.length-1;s>=0;--s){var n=this.accessList[s];!1!==t.call(e||n,n)&&i.push(n)}return i},each:function(t,e){for(var i in this.list)if(this.list[i]&&"function"!=typeof this.list[i]&&!1===t.call(e||this.list[i],this.list[i]))return},cascadeOverlap:function(t){var e;e=t.container?t.container.getSize():t.getSize();var i=this.offsetX+t.getWidth(),s=this.offsetY+t.getHeight();i>e.width&&s>e.height?this.offsetX=this.offsetY=10:i>e.width?(10==this.offsetX&&(this.offsetY=10),this.offsetX=10):s>e.height&&(this.offsetX+=30,this.offsetY=10),t.setPosition(this.offsetX,this.offsetY),this.offsetX+=30,this.offsetY+=30},toggleAllWin:function(t){this.showAllButton=this.showAllButton||t,this.toggleAllWinMinimize()},setShowAllButtonDisabled:function(t){this.showAllButton&&this.showAllButton.setDisabled(t)},toggleAllWinMinimize:function(){this.setShowAllButtonDisabled(!0);var t=[],e=0,i=function(){if(!(--e>0)){var t=(new Date).getTime();Ext.each(this.minimizedWin,function(e,i){e._lastAccess=t+i}),this.orderWindows(),this.setShowAllButtonDisabled(!1)}};Ext.each(this.accessList,function(e){e.isVisible()&&(!1===e.toggleMinimizable?e.close():t.push(e))},this),t.length?(Ext.invoke(t,"minimize"),this.minimizedWin=t,this.setShowAllButtonDisabled(!1)):this.minimizedWin.length?Ext.each(this.minimizedWin,function(t){e++,t.show(void 0,i,this)},this):this.setShowAllButtonDisabled(!1)},restoreWin:function(t){var e=function(){this.allToggleing--,this.allToggleing<=0&&(this.allToggleing=0,SYNO.SDS.StatusNotifier.fireEvent("allwinrestored"))};t.el.origXY&&(Ext.isIE?(t.el.setXY([t.el.origXY[0],t.el.origXY[1]]),delete t.el.origXY,this.allToggleing++,e.defer(50,this)):(this.allToggleing++,t.el.shift({x:t.el.origXY[0],y:t.el.origXY[1],easing:"easeOutStrong",duration:this.animDuration,scope:this,callback:function(){t.el.origShadowDisabled||t.el.enableShadow(!0),t.unmask(),delete t.el.origXY,e.apply(this)}})),t.childWinMgr&&t.childWinMgr.each(this.restoreWin,this))},exposeWindow:function(){if(SYNO.SDS.UIFeatures.test("exposeWindow"))if(this.exposeMask)this.restoreTransform();else if(SYNO.SDS.DesktopMgr.show(SYNO.SDS.Desktop),!this.isRestoreTransform){if(SYNO.SDS.WindowMgr.allHided)return SYNO.SDS.WindowMgr.toggleAllWin(),void SYNO.SDS.StatusNotifier.on("allwinrestored",this.exposeWindow,this,{single:!0});this.shownAppWins=[];var t=SYNO.SDS.TaskButtons.getAllAppWins();if(0!==t.length){Ext.each(t,function(t){if(!t.isVisible()){if(this.isSkipExposeAppWindow(t))return!0;t.show(!1),this.shownAppWins.push(t)}},this),this.hiddenNonAppWins=[],Ext.each(this.accessList,function(t){t.isVisible()&&!t.taskButton&&(t.hide(!1),this.hiddenNonAppWins.push(t))},this);var e=this.calWindowPosition(t),i=e.xyValues;this.exposeMask=Ext.getBody().createChild({tag:"div",cls:"sds-expose-mask",tabIndex:0}),this.focusMask(),this.exposeMask.on("click",this.restoreTransform,this);var s=0;Ext.each(t,function(t){t.isVisible()&&(t.el._origPos={x:t.el.getLeft(!0),y:t.el.getTop(!0)},t.el._toWin=i[s],this.transformWindow(t,e.noWin),s++)},this),this.exposeMask.setStyle({opacity:"0.6","z-index":1e3}),SYNO.SDS.StatusNotifier.fireEvent("allwinexpose")}}},focusMask:function(){this.exposeMask.focus()},transformWindow:function(t,e){if(!t)return!1;var i=t.el;i.disableShadow();var s=i._toWin;if(i._exposeMask=i.createChild({tag:"div",cls:"sds-expose-win-mask"}),t.focusEl.on("focus",this.focusMask,this),!0===e)i.addClass("sds-expose-win-hidden");else{var n=i.getSize(),o=s.w/n.width;n.height*o>s.h&&(o=s.h/n.height),o=Math.min(o,1).toFixed(2);var r=s.x-i._origPos.x,a=s.y-i._origPos.y;i.addClass("sds-expose-win-transform"),i.setStyle("-webkit-transform",String.format("translate3d({1}px, {2}px, 0) scale3d({0}, {0}, 1)",o,r,a)),i.setStyle("-moz-transform",String.format("translate({1}px, {2}px) scale({0})",o,r,a)),i.setStyle("-o-transform",String.format("translate({1}px, {2}px) scale({0})",o,r,a)),i.setStyle("transform",String.format("translate({1}px, {2}px) scale({0})",o,r,a))}return t._deferTaskId=this.afterTransformWindow.defer(!0===e?0:this.exposeTransformDelayTime,this,[t,e]),t},afterTransformWindow:function(t,e){if(!t)return!1;var i=t.el,s=i._toWin;if(Ext.isEmpty(i.dom))return!1;var n=i._exposeMask;if(t.mon(n,"mousedown",function(t){t.stopEvent()},this),t.mon(n,"click",this.onWinMaskClick,this,{win:t}),t.mon(n,"mouseenter",function(t){var e=t.getTarget();Ext.fly(e).addClass("sds-expose-win-over")},this),t.mon(n,"mouseleave",function(t){var e=t.getTarget();Ext.fly(e).removeClass("sds-expose-win-over")},this),i.iconBadge=new SYNO.SDS.IconBadge,t.jsConfig&&t.getTitle()&&t.jsConfig.icon){var o=t.jsConfig.jsBaseURL+"/"+(t.jsConfig.icon||t.jsConfig.icon_16);i.iconBadge.setIconText(SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(o,"Header"),SYNO.SDS.UIString.GetLocalizedString(t.getTitle(),t.jsConfig.jsID))}else i.iconBadge.setIconText("",t.title||"");i.iconBadge.setXY(s.x,s.y-this.exposeIconHeight+this.exposeIconShift),t.mon(i.iconBadge.el,"click",this.onWinMaskClick,this,{win:t})},onWinMaskClick:function(t,e,i){return this.restoreTransform(),function(){i.win.show()}.defer(this.exposeRestoreDelayTime,this),t.stopEvent(),!1},restoreTransform:function(){this.isRestoreTransform||(this.isRestoreTransform=!0,this.exposeMask&&this.exposeMask.setStyle("opacity","0"),Ext.each(this.accessList,function(t){var e=t.el;if(t.focusEl.un("focus",this.focusMask,this),t._deferTaskId&&(window.clearTimeout(t._deferTaskId),t._deferTask=null),e._origPos){e.iconBadge&&(e.iconBadge.el.hide(),e.iconBadge.el.remove(),e.iconBadge=null),e._exposeMask&&(e._exposeMask.remove(),delete e._exposeMask,e._exposeMask=null),e.hasClass("sds-expose-win-hidden")?e.removeClass("sds-expose-win-hidden"):(e.addClass("sds-expose-win-transform-restore"),e.setStyle("-webkit-transform",""),e.setStyle("-moz-transform",""),e.setStyle("-o-transform",""),e.setStyle("transform",""));(function(){e.removeClass("sds-expose-win-transform"),e.removeClass("sds-expose-win-transform-restore"),e.enableShadow(!0)}).defer(this.exposeRestoreDelayTime,this)}},this),Ext.each(this.hiddenNonAppWins,function(t){t.isSkipUnexpose&&t.isSkipUnexpose()||t.show(!1)},this),Ext.each(this.shownAppWins,function(t){t.hide(!1),t.minimize()},this),function(){this.exposeMask&&(this.exposeMask.un("click",this.restoreTransform,this),this.exposeMask.remove(),this.exposeMask=null),SYNO.SDS.StatusNotifier.fireEvent("allwinunexpose"),this.isRestoreTransform=!1}.defer(this.exposeRestoreDelayTime,this))},calWindowPosition:function(t){var e=0;Ext.each(t,function(t){t.isVisible()&&e++});var i=SYNO.SDS.Desktop.getEl().getSize(),s=i.width,n=i.height,o=0,r=0,a=this.exposeIconHeight,l=1;e<3?(o=1===e?s-100:(s-150)/2,r=n-100-a):(o=(s-200)/3,r=(n-50*((l=Math.ceil(e/3))+1)-l*a)/l),o=Math.round(o),r=Math.round(r);for(var c={},d=[],u=0;u9)&&(c.noWin=!0),c},isSkipExposeAppWindow:function(t){return!(!t.isSkipExpose||!0!==t.isSkipExpose())||!!(SYNO.SDS.AudioStation&&SYNO.SDS.AudioStation.MainWindow&&t instanceof SYNO.SDS.AudioStation.MainWindow&&!0===t.gIsOnMiniPlayerMode)}}),Ext.define("SYNO.API.InfoObject",{extend:"Ext.util.Observable",local:"info_local",constructor:function(){this.callParent(arguments),this._session={},this._define={},this._knownAPI={}},check:function(t){var e;if(!Ext.isObject(t))throw"Error! appwindow is incorrect!";if(Ext.isFunction(t.findAppWindow)&&(e=t.findAppWindow(),Ext.isObject(e)&&Ext.isObject(e.openConfig)&&Ext.isFunction(e.hasOpenConfig)&&Ext.isFunction(e.getOpenConfig)&&Ext.isFunction(e.setOpenConfig)))return e},getInstName:function(t){var e=this.local,i=this.check(t);return Ext.isObject(i)&&SYNO.SDS.Utils.CMS.IsAllowRelay(i)&&i.hasOpenConfig("cms_id")&&(e="cms_ds_"+i.getOpenConfig("cms_id")),e},getInstNameById:function(t){var e=this.local;return Ext.isNumber(t)&&0<=t&&(e="cms_ds_"+t),e},checkInst:function(t,e,i,s,n){return t!==this.local&&(Ext.isObject(s)&&Ext.isObject(i)?(this.handleResponse(e,i,s,n),!1):!(t in this._define&&t in this._session&&!0!==i)||(this.handleResponse({cms_id:0},void 0,void 0,n),!1))},updateInstById:function(t,e,i){var s,n,o;Ext.isObject(t)&&(t=(n=t).cms_id,s=this.getInstNameById(n.cms_id),o=Ext.copyTo({},n,"callback,args,scope")),!1!==this.checkInst(s,{cms_id:t},e,i,o)&&(SYNO.API.Request({api:"SYNO.CMS.DS",version:1,method:"relay",timeout:3e4,params:{id:t,timeout:30,webapi:{api:"SYNO.API.Info",version:1,method:"query"}},appOpt:o,cms_id:t,callback:function(t,e,i,n){this._knownAPI[s]=!0!==t?void 0:e},scope:this}),SYNO.API.Request({api:"SYNO.CMS.DS",version:1,method:"relay",timeout:3e4,params:{id:t,timeout:30,webapi:{api:"SYNO.Entry.Request",version:1,method:"request",compound:[{api:"SYNO.Core.System",version:1,method:"info",type:"define"},{api:"SYNO.Core.System",version:1,method:"info",type:"session"}]}},appOpt:o,cms_id:t,callback:this.onUpdateInst,scope:this}))},updateInst:function(t,e,i){var s=this.check(t),n=this.getInstName(t);!1!==this.checkInst(n,{appWindow:t},e,i)&&(s.sendWebAPI({api:"SYNO.API.Info",version:1,method:"query",callback:function(t,e,i,s){this._knownAPI[n]=!0!==t?void 0:e},scope:this}),this._knownAPI.hasOwnProperty(n)&&Ext.isEmpty(this._knownAPI[n])||s.sendWebAPI({compound:{stopwhenerror:!1,params:[{api:"SYNO.Core.System",version:1,method:"info",params:{type:"define"}},{api:"SYNO.Core.System",version:1,method:"info",params:{type:"session"}}]},callback:this.onUpdateInst,scope:this}))},checkUpdateResponse:function(t,e,i,s){var n;return n=Ext.isNumber(s.cms_id)?this.getInstNameById(s.cms_id):this.getInstName(s.appWindow),t?n!==this.local&&(2!==e.result.length?(SYNO.Debug.error("Incorrect response:"+Ext.encode(e.result)),!1):!1!==e.result[0].success&&!1!==e.result[1].success||(delete this._session[n],delete this._define[n],!1)):(SYNO.Debug.error("Update session and define fail"),!1)},onUpdateInst:function(t,e,i,s){this.checkUpdateResponse(t,e,i,s)?this.handleResponse(s,e.result[0].data,e.result[1].data,s.appOpt):this.handleResponse({cms_id:0},void 0,void 0,s.appOpt)},handleResponse:function(t,e,i,s){var n;(n=Ext.isNumber(t.cms_id)?this.getInstNameById(t.cms_id):this.getInstName(t.appWindow))!==this.local&&(this._define[n]=Ext.apply({},e),this._session[n]=Ext.apply({},i)),Ext.isObject(s)&&Ext.isFunction(s.callback)&&(n in this._knownAPI?s.callback.apply(s.scope||this,s.args):s.callback.defer(1e3,s.scope||this,s.args))},removeById:function(t){var e=this.getInstNameById(t);e!==this.local&&(delete this._define[e],delete this._session[e],delete this._knownAPI[e])},getDefine:function(t,e,i){var s=this.getInstName(t);return s===this.local?_D(e,i):Ext.isEmpty(this._session[s])?(this.updateInst(t),void SYNO.Debug.error("Please update first")):e in this._define[s]?this._define[s][e]:Ext.isString(i)?i:""},getSession:function(t,e){var i=this.getInstName(t);if(i===this.local)return _S(e);switch(e){case"lang":case"isMobile":case"demo_mode":case"SynoToken":return _S(e);default:return Ext.isEmpty(this._session[i])?(this.updateInst(t),void SYNO.Debug.error("[Info]Please update first")):this._session[i][e]}},getKnownAPI:function(t,e,i){var s=this.getInstName(t);return s===this.local?SYNO.API.GetKnownAPI(e,i):Ext.isEmpty(this._knownAPI[s])||Ext.isEmpty(this._knownAPI[s][e])?(this.updateInst(t),void SYNO.Debug.warn("[Info]Please update first")):this._knownAPI[s][e]}}),SYNO.API._InfoInstance=null,SYNO.API._Info=class{constructor(){return Ext.isEmpty(SYNO.API._InfoInstance)&&(SYNO.API._InfoInstance=new SYNO.API.InfoObject),this}get Instance(){return SYNO.API._InfoInstance}GetSession(t,e){return SYNO.API._InfoInstance.getSession(t,e)}GetDefine(t,e,i){return SYNO.API._InfoInstance.getDefine(t,e,i)}GetKnownAPI(t,e,i){return SYNO.API._InfoInstance.getKnownAPI(t,e,i)}Update(t,e,i){return SYNO.API.Info.Instance.updateInst(t,e,i)}UpdateById(t){return SYNO.API._InfoInstance.updateInstById(t)}RemoveById(t){return SYNO.API._InfoInstance.removeById(t)}},SYNO.API.Info=new SYNO.API._Info,Ext.namespace("SYNO.API"),SYNO.API.EncodeFlatParams=function(t){var e={};if(!t)return e;var i=function(t,e,s){for(var n in t)if(t.hasOwnProperty(n)){var o=t[n],r=e?e+"|"+n:n;Ext.isFunction(o)||(Ext.isObject(o)?i(t[n],r,s):s[r]=o)}};if(!Ext.isArray(t))return i(t,void 0,e),e;for(var s=0;s<(void 0).length;s++)(void 0)[s].api&&(void 0)[s].method?i((void 0)[s],(void 0)[s].api+"|"+(void 0)[s].method,e):i(t,void 0,e);return e},SYNO.API.DecodeFlatParams=function(t){var e={},i=function(t,e,s){var n,o=t.indexOf("|");0=400&&n.status<600&&(r=!0):r=!0:Ext.isObject(s.userInfo.params)&&Ext.isArray(s.userInfo.params.compound)?Ext.each(e.result,function(t){if(Ext.isObject(t.error)&&t.error.code>=105&&t.error.code<=107)return r=!0,!1},this):Ext.isNumber(e.code)?e.code>=105&&e.code<=107&&(r=!0):Ext.isObject(n)&&n.status>=400&&n.status<600&&(r=!0)),!0===r&&o.getMsgBox().alert(_T("error","error_error"),_T("cms","relaunch_app"),function(){o.close()}),r},SYNO.API._Manager=Ext.extend(Ext.util.Observable,{isDeprecated:!1,baseURL:"webapi",constructor:function(){SYNO.API._Manager.superclass.constructor.apply(this,arguments),this.jsDebug=Ext.urlDecode(location.search.substr(1)).jsDebug,this.knownAPI={"SYNO.API.Info":{path:"query.cgi",minVersion:1,maxVersion:1}}},queryAPI:function(t,e,i,s){var n=[];Ext.isArray(t)||(t=[t]),Ext.each(t,function(t){this.knownAPI.hasOwnProperty(t)||n.push(t)},this),this.requestAjaxAPI("SYNO.API.Info","query",1,{async:!Ext.isBoolean(s)||s},{query:n.join(",")},Ext.createDelegate(this.onQueryAPI,this,[e,i],!0))},onQueryAPI:function(t,e,i,s,n,o){t&&(Ext.isObject(i)&&"all"===i.query?this.knownAPI=Ext.apply({},e):Ext.apply(this.knownAPI,e)),n&&n.call(o,t,e,i,s)},getKnownAPI:function(t,e){var i,s,n=this.knownAPI[t];return Ext.isDefined(this.jsDebug)&&Ext.isObject(n)?(i=n.path+"/","SYNO.Entry.Request"===t&&Ext.isObject(e)&&Ext.isArray(e.compound)?(s=[],Ext.each(e.compound,function(t){Ext.isString(t.api)&&s.push(t.api)}),i+=s.join()):i+=t,Ext.apply({},{path:i},n)):n},getBaseURL:function(t,e,i,s,n){var o,r,a,l;if(Ext.isObject(t))if(s=e,n=i,(r=t).webapi&&(r=r.webapi),Ext.isObject(r.compound)){if(!Ext.isArray(r.compound.params))return void SYNO.Debug.error("params must be array",r.compound.params);t="SYNO.Entry.Request",e="request",i=1;for(var c=r.compound.params||[],d=[],u=0;u"[API] "+t.api+" :"+t.method).join("\n")+" - "+t.headers["Cusotm-Perf-Id"]}}),SYNO.API.EscapeStr=function(t){return t?t.replace(/[\\]/g,"\\\\").replace(/[,]/g,"\\,"):""},SYNO.API.Request=function(t){return SYNO.API.Manager.requestAjaxAPI(t)},SYNO.API.RequestPromise=function(t){return new Promise(function(e,i){t.callback=function(t,s,n,o){t?e(s):i(s)},SYNO.API.Request(t)}.bind(this))},SYNO.API.GetKnownAPI=function(t,e){return SYNO.API.Manager.getKnownAPI(t,e)},Ext.namespace("SYNO.API"),SYNO.API._Resonse=class{GetValByAPI(t,e,i,s){if(Ext.isObject(t)){if(Ext.isArray(t.result)){for(var n=t.result,o=0;on);++s)i=e[s].interval;return!!Ext.isNumber(i)&&(i<1&&(i=1),SYNO.SDS.Utils.isLowLevelModel()&&(i*=2),i)},addToQueue:function(t,e){var i,s=this.reg[t];return!Ext.isEmpty(s)&&(i=this.getInterval(s,e),Ext.isNumber(i)?(this.queue[t]=i,!0):(SYNO.Debug.error("[Polling]Register "+t+" interval is invalid"),!1))},addToPool:function(t,e,i){var s=this.getInstanceName(i);Ext.isEmpty(this.pool[s+t])&&(this.pool[s+t]=Ext.apply({register_id_list:[],auto_remove:!1,finish:!1},e||{}))},addToRegister:function(t){var e,i,s,n=Ext.id(void 0,"webapi_polling_register_id");if(!(Ext.isEmpty(t.task_id)&&Ext.isEmpty(t.webapi)||!Ext.isFunction(t.status_callback))&&(Ext.isNumber(t.interval)||Ext.isFunction(t.interval)||Ext.isArray(t.interval))){if(Ext.isEmpty(t.webapi)){if(e=this.getTask(t.task_id,t.appWindow),Ext.isEmpty(e))return;e.register_id_list=e.register_id_list.concat(n)}return i=parseInt((new Date).getTime()/1e3,10),s=t.immediate?i:i+this.getInterval(t,t.interval),this.reg[n]=Ext.apply({firstRunTime:s},t),n}},getTask:function(t,e){var i=this.getInstanceName(e);if(!Ext.isEmpty(t))return this.pool[i+t]},updateTask:function(t,e,i){var s=this.getTask(t,i)||{register_id_list:[]};Ext.copyTo(s,e,"auto_remove,finish")},removeTask:function(t,e){var i=this.getTask(t,e),s=this.getInstanceName(e);return!Ext.isEmpty(i)&&(Ext.isEmpty(i.register_id_list)||!Ext.isArray(i.register_id_list)?(delete this.pool[s+t],!0):(Ext.each(i.register_id_list,function(t){delete this.queue[t],delete this.reg[t]},this),delete this.pool[s+t],!0))},removeRegister:function(t){var e,i;if(Ext.isEmpty(t)||Ext.isEmpty(this.reg[t]))return SYNO.Debug.error("[Polling]No such register id"),!1;if(i=this.reg[t],Ext.isEmpty(i.webapi)){if(e=this.getTask(i.task_id,i.appWindow),Ext.isEmpty(e))return SYNO.Debug.error("[Polling]No such task"),!1;e.register_id_list.remove(t)}return i.status_callback=null,delete this.reg[t],!0},convertToTaskUser:function(t){var e;return Ext.isEmpty(t)?e=_S("user"):"admin"==t?e="@administrators":"everyone"==t&&(e="@users"),e},notifyTaskStatus:function(t,e,i,s){var n,o;n=this.getTask(t,s.app),Ext.isEmpty(n)||Ext.each(n.register_id_list,function(n){if(o=this.reg[n],!Ext.isEmpty(o)&&Ext.isFunction(o.status_callback))try{o.status_callback.call(o.scope||this,t,e,i,s)}catch(t){SYNO.Debug.error(t)}},this)},notifyWebAPIStatus:function(t,e,i,s,n){var o=this.reg[t];if(!Ext.isEmpty(o))if(Ext.isDefined(this.jsDebug))o.status_callback.call(o.scope||this,e,i,s,n);else try{o.status_callback.call(o.scope||this,e,i,s,n)}catch(t){SYNO.Debug.error(t)}},beginPolling:function(t){var e,i,s,n,o=!1,r={};for(i in"halt"===t&&delete this.pollingHalt,this.queue)if(this.queue.hasOwnProperty(i)){if(e=this.reg[i],Ext.isEmpty(e)){delete this.queue[i];continue}if(!0===this.pollingHalt&&!0!==e.preventHalt)continue;if(this.queue[i]--,this.queue[i]>0)continue;if(delete this.queue[i],!Ext.isFunction(e.status_callback))continue;if((s=e.appWindow||!1)&&!0===s.isDestroyed&&!0!==s.keepPolling){this.removeRegister(i);continue}if(n=this.getInstanceName(s),Ext.isEmpty(r[n])&&(r[n]={task_id_list:[],webapi:[],reg:[],opts:[],app:s}),!Ext.isEmpty(e.webapi)){o=!0,r[n].webapi.push(e.webapi),r[n].reg.push(i),r[n].opts.push(e.webapi);continue}if(Ext.isEmpty(this.getTask(e.task_id,e.appWindow)))continue;o=!0,r[n].task_id_list.indexOf(e.task_id)<0&&(r[n].task_id_list=r[n].task_id_list.concat(e.task_id))}if(this.endPolling(),!1!==o)for(n in r)r.hasOwnProperty(n)&&(Ext.isEmpty(r[n].task_id_list)||(r[n].webapi.push({api:this.api,version:this.version,method:"status",params:{task_id_list:r[n].task_id_list}}),r[n].reg.push("TASK"),r[n].opts.push({app:r[n].app,task_id_list:r[n].task_id_list})),this.reqId=SYNO.API.Request({compound:{stop_when_error:!1,mode:"parallel",params:r[n].webapi},appWindow:r[n].app,callback:this.pollingCompoundCallack,reg_ref:r[n].reg,opts_ref:r[n].opts,timeout:6e6,scope:this}));else this.pollingId=this.beginPolling.defer(1e3,this)},endPolling:function(t){"halt"!==t?(window.clearTimeout(this.pollingId),this.pollingId=null,Ext.isEmpty(this.reqId)||(Ext.Ajax.abort(this.reqId),delete this.reqId)):this.pollingHalt=!0},collectToQueue:function(t,e){var i,s,n,o,r=Ext.isArray(t)?t:[],a=function(t){Ext.each(t,function(t,e){s=this.reg[t],!Ext.isEmpty(s)&&Ext.isFunction(s.status_callback)&&this.addToQueue(t,s.interval)},this)};-1!==(o=r.indexOf("TASK"))&&(i=e[o],r.splice(o,1)),a.call(this,r),Ext.isObject(i)&&Ext.isArray(i.task_id_list)&&Ext.each(i.task_id_list,function(t){n=this.getTask(t,i.app),Ext.isEmpty(n)||!0!==n.finish&&a.call(this,n.register_id_list)},this),Ext.isEmpty(this.pollingId)&&(this.pollingId=this.beginPolling.defer(1e3,this))},pollingCompoundCallack:function(t,e,i,s){var n,o,r,a,l,c,d;if(this.reqId=null,n=t?e.result:[],o=s.reg_ref,r=s.opts_ref,!1===t){for(l=0;l',""),165:String.format(_T("error","error_set_system_settings"),'',"")},t.core={402:_T("share","no_such_share"),403:_T("error","error_invalid"),404:_T("error","error_privilege_not_enough"),1101:_T("error","error_subject"),1102:_T("firewall","firewall_restore_failed"),1103:_T("firewall","firewall_block_admin_client"),1104:_T("firewall","firewall_rule_exceed_max_number"),1105:_T("firewall","firewall_rule_disable_fail"),1198:_T("common","version_not_support"),1201:_T("error","error_subject"),1202:_T("firewall","firewall_tc_ceil_exceed_system_upper_bound"),1203:_T("firewall","firewall_tc_max_ceil_too_large"),1204:_T("firewall","firewall_tc_restore_failed"),1301:_T("error","error_subject"),1302:_T("firewall","firewall_dos_restore_failed"),1402:_T("service","service_ddns_domain_load_error"),1410:_T("service","service_ddns_operation_fail"),1500:_T("common","error_system"),1501:_T("common","error_apply_occupied"),1502:_T("routerconf","routerconf_external_ip_warning"),1503:_T("routerconf","routerconf_require_gateway"),1504:_T("routerconf","dns_setting_no_response"),1510:_T("routerconf","routerconf_update_db_failed"),1521:_T("routerconf","routerconf_exceed_singel_max_port"),1522:_T("routerconf","routerconf_exceed_combo_max_port"),1523:_T("routerconf","routerconf_exceed_singel_range_max_port"),1524:_T("routerconf","routerconf_exceed_max_rule"),1525:_T("routerconf","routerconf_port_conflict"),1526:_T("routerconf","routerconf_add_port_failed"),1527:_T("routerconf","routerconf_apply_failed"),1528:_T("routerconf","protocol_on_router_not_enabled"),1530:_T("routerconf","routerconf_syntax_version_error"),1600:_T("ups","operation_failed"),1601:_T("ups","set_info_failed"),1602:_T("ups","get_info_failed"),1701:_T("error","error_port_conflict"),1702:_T("error","error_file_exist"),1703:_T("error","error_no_path"),1704:_T("error","error_error_system"),1706:_T("error","error_volume_ro"),1903:_T("error","error_port_conflict"),1904:_T("error","error_port_conflict"),1905:_T("ftp","ftp_annoymous_root_share_invalid"),1951:_T("error","error_port_conflict"),2001:_T("error","error_error_system"),2002:_T("error","error_error_system"),2101:_T("error","error_error_system"),2102:_T("error","error_error_system"),2201:_T("error","error_error_system"),2202:_T("error","error_error_system"),2301:_T("error","error_invalid"),2303:_T("error","error_port_conflict"),2331:_T("nfs","nfs_key_wrong_format"),2332:_T("user","user_file_upload_fail"),2371:_T("error","error_mount_point_nfs"),2372:_T("error","error_hfs_plus_mount_point_nfs"),2401:_T("error","error_error_system"),2402:_T("error","error_error_system"),2403:_T("error","error_port_conflict"),2500:_T("error","error_unknown_desc"),2502:_T("error","error_invalid"),2503:_T("error","error_error_system"),2504:_T("error","error_error_system"),2505:_T("error","error_error_system"),2601:_T("network","domain_name_err"),2602:_T("network","domain_dns_name_err"),2603:_T("network","domain_kdc_ip_error"),2604:_T("network","error_badgname"),2605:_T("network","domain_unreachserver_err"),2606:_T("network","domain_port_unreachable_err"),2607:_T("network","domain_password_err"),2608:_T("network","domain_acc_revoked_ads"),2609:_T("network","domain_acc_revoked_rpc"),2610:_T("network","domain_acc_err"),2611:_T("network","domain_notadminuser"),2612:_T("network","domain_change_passwd"),2613:_T("network","domain_check_kdcip"),2614:_T("network","domain_error_misc_rpc"),2615:_T("network","domain_join_err"),2616:_T("directory_service","warr_enable_samba"),2626:_T("directory_service","warr_db_not_ready"),2628:_T("directory_service","warr_synoad_exists"),2702:_T("network","status_connected"),2703:_T("network","status_disconnected"),2704:_T("common","error_occupied"),2705:_T("common","error_system"),2706:_T("ldap_error","ldap_invalid_credentials"),2707:_T("ldap_error","ldap_operations_error"),2708:_T("ldap_error","ldap_server_not_support"),2709:_T("domain","domain_ldap_conflict"),2710:_T("ldap_error","ldap_operations_error"),2712:_T("ldap_error","ldap_no_such_object"),2713:_T("ldap_error","ldap_protocol_error"),2714:_T("ldap_error","ldap_invalid_dn_syntax"),2715:_T("ldap_error","ldap_insufficient_access"),2716:_T("ldap_error","ldap_insufficient_access"),2717:_T("ldap_error","ldap_timelimit_exceeded"),2718:_T("ldap_error","ldap_inappropriate_auth"),2719:_T("ldap_error","ldap_smb2_enable_warning"),2721:_T("ldap_error","ldap_confidentiality_required"),2723:_T("ldap_error","ldap_weak_pwd"),2799:_T("common","error_system"),2800:_T("error","error_unknown_desc"),2801:_T("error","error_unknown_desc"),2900:_T("error","error_unknown_desc"),2901:_T("error","error_unknown_desc"),2902:_T("relayservice","relayservice_err_network"),2903:_T("relayservice","error_alias_server_internal"),2904:_T("relayservice","relayservice_err_alias_in_use"),2905:_T("pkgmgr","myds_error_account"),2906:_T("relayservice","error_alias_used_in_your_own"),3000:_T("error","error_unknown_desc"),3001:_T("error","error_unknown_desc"),3002:_T("relayservice","relayservice_err_resolv"),3003:_T("relayservice","myds_server_internal_error"),3004:_T("error","error_auth"),3005:_T("relayservice","relayservice_err_alias_in_use"),3006:_T("relayservice","myds_exceed_max_register_error"),3009:_T("error","error_unknown_desc"),3010:_T("myds","already_logged_in"),3013:_T("myds","error_migrate_authen"),3015:_T("myds","invalid_machine"),3106:_T("user","no_such_user"),3107:_T("user","error_nameused"),3108:_T("user","error_nameused"),3109:_T("user","error_disable_admin"),3110:_T("user","error_too_much_user"),3111:_T("user","homes_not_found"),3112:_T("common","error_apply_occupied"),3113:_T("common","error_occupied"),3114:_T("user","error_nameused"),3115:_T("user","user_cntrmvdefuser"),3116:_T("user","user_set_fail"),3117:_T("user","user_quota_set_fail"),3118:_T("common","error_no_enough_space"),3119:_T("user","error_home_is_moving"),3121:_T("common","err_pass"),3122:_T("login","password_in_history"),3123:_T("login","password_too_common"),3124:_T("common","err_pass"),3130:_T("user","invalid_syntax_enclosed_trailing"),3131:_T("user","invalid_syntax_double_quote_in_middle"),3132:_T("user","invalid_syntax_not_double_quote_ending"),3191:_T("user","user_file_open_fail"),3192:_T("user","user_file_empty"),3193:_T("user","user_file_not_utf8"),3194:_T("user","user_upload_no_volume"),3202:_T("common","error_occupied"),3204:_T("group","failed_load_group"),3205:_T("group","failed_load_group"),3206:_T("group","error_nameused"),3207:_T("group","error_nameused"),3208:_T("group","error_badname"),3209:_T("group","error_toomanygr"),3210:_T("group","error_rmmember"),3217:_T("group","error_too_many_dir_admin"),3221:_T("share","error_too_many_acl_rules")+"("+_T("acl_editor","acl_rules_reach_limit_report").replace(/.*\//,"").trim().replace("_maxCount_","200")+")",3299:_T("common","error_system"),3301:_T("share","share_already_exist"),3302:_T("share","share_acl_volume_not_support"),3303:_T("share","error_encrypt_reserve"),3304:_T("share","error_volume_not_found"),3305:_T("share","error_badname"),3308:_T("share","encryption_wrong_key"),3309:_T("share","error_toomanysh"),3312:_T("share","share_normal_folder_exist"),3313:_T("share","error_volume_not_found"),3314:_T("share","error_volume_read_only"),3319:_T("share","error_nameused"),3320:_T("share","share_space_not_enough"),3321:_T("share","error_too_many_acl_rules")+"("+_T("acl_editor","acl_rules_reach_limit_report").replace(/.*\//,"").trim().replace("_maxCount_","200")+")",3322:_T("share","mount_point_not_empty"),3323:_T("error","error_mount_point_change_vol"),3324:_T("error","error_mount_point_rename"),3326:_T("share","error_key_file"),3327:_T("share","share_conflict_on_new_volume"),3328:_T("share","get_lock_failed"),3329:_T("share","error_toomanysnapshot"),3330:_T("share","share_snapshot_busy"),3332:_T("backup","is_backing_up_restoring"),3334:_T("share","error_mount_point_restore"),3335:_T("share","share_cannot_move_fstype_not_support"),3336:_T("share","share_cannot_move_replica_busy"),3337:_T("snapmgr","snap_system_preserved"),3338:_T("share","error_mounted_encrypt_restore"),3340:_T("snapmgr","snap_restore_share_conf_err"),3341:_T("snapmgr","err_quota_is_not_enough"),3344:_T("keymanager","error_invalid_passphrase"),3345:_T("keymanager","error_used_keystore"),3347:_T("share","umount_fail"),3400:_T("error","error_error_system"),3401:_T("error","error_error_system"),3402:_T("error","error_error_system"),3403:_T("app_privilege","error_no_such_user_or_group"),3404:_T("error","error_privilege_not_enough"),3405:_T("app_privilege","error_wrong_data_format"),3500:_T("error","error_invalid"),3501:_T("common","error_badport"),3502:_T("error","error_port_conflict"),3503:_T("error","error_port_conflict"),3504:_T("error","error_port_conflict"),3505:_T("app_port_alias","err_fqdn_duplicated"),3510:_T("error","error_invalid"),3511:_T("app_port_alias","err_port_dup"),3550:_T("volume","volume_no_volumes"),3551:_T("error","error_no_shared_folder"),3552:String.format(_T("volume","volume_crashed_service_disable"),_T("common","web_station")),3553:_T("volume","volume_expanding_waiting"),3554:_T("error","error_port_conflict"),3555:_T("common","error_badport"),3603:_T("volume","volume_share_volumeno"),3604:_T("error","error_space_not_enough"),3605:_T("usb","usb_printer_driver_fail"),3606:_T("login","error_cantlogin"),3607:_T("common","error_badip"),3608:_T("usb","net_prntr_ip_exist_error"),3609:_T("usb","net_prntr_ip_exist_unknown"),3610:_T("common","error_demo"),3611:_T("usb","net_prntr_name_exist_error"),3700:_T("error","error_invalid"),3701:_T("status","status_not_available"),3702:_T("error","error_invalid"),3710:_T("status","status_not_available"),3711:_T("error","error_invalid"),3712:_T("cms","fan_mode_not_supported"),3720:_T("status","status_not_available"),3721:_T("error","error_invalid"),3730:_T("status","status_not_available"),3731:_T("error","error_invalid"),3740:_T("status","status_not_available"),3741:_T("error","error_invalid"),3750:_T("status","status_not_available"),3751:_T("error","error_invalid"),3760:_T("status","status_not_available"),3761:_T("error","error_invalid"),3795:_T("error","error_port_conflict"),3800:_T("error","error_invalid"),3801:_T("error","error_invalid"),4000:_T("error","error_invalid"),4001:_T("error","error_error_system"),4002:_T("dsmoption","error_format"),4003:_T("dsmoption","error_size"),4005:_T("dsmoption","error_logo_size"),4006:_T("dsmoption","error_background_size"),4100:_T("error","error_invalid"),4101:_T("error","error_invalid"),4102:_T("app_port_alias","err_alias_refused"),4103:_T("app_port_alias","err_alias_used"),4104:_T("app_port_alias","err_port_used"),4105:_T("app_port_alias","err_port_used"),4106:_T("app_port_alias","err_port_used"),4107:_T("app_port_alias","err_fqdn_duplicated"),4154:_T("app_port_alias","err_fqdn_duplicated"),4155:_T("app_port_alias","err_port_used"),4156:_T("app_port_alias","err_invalid_backend_host"),4164:_T("app_port_alias","err_invalid_header_name"),4165:_T("app_port_alias","err_invalid_header_value"),4166:_T("app_port_alias","err_header_name_duplicated"),4168:_T("app_port_alias","err_proxy_timeout"),4169:_T("app_port_alias","err_proxy_timeout"),4170:_T("app_port_alias","err_proxy_timeout"),4300:_T("error","error_error_system"),4301:_T("error","error_error_system"),4302:_T("error","error_error_system"),4303:_T("error","error_invalid"),4304:_T("error","error_error_system"),4305:_T("error","error_error_system"),4306:_T("error","error_error_system"),4307:_T("error","error_error_system"),4308:_T("error","error_error_system"),4309:_T("error","error_invalid"),4310:_T("error","error_error_system"),4311:_T("network","interface_not_found"),4312:_T("tcpip","tcpip_ip_used"),4313:_T("tcpip","ipv6_ip_used"),4314:_T("tunnel","tunnel_conn_fail"),4315:_T("tcpip","ipv6_err_link_local"),4316:_T("network","error_applying_network_setting"),4317:_T("common","error_notmatch"),4319:_T("error","error_error_system"),4320:_T("vpnc","name_conflict"),4321:_T("vpnc","err_illegal_ca"),4322:_T("service","service_illegel_key"),4323:_T("service","service_ca_not_utf8"),4324:_T("service","service_unknown_cipher"),4325:_T("vpnc","l2tp_conflict"),4326:_T("vpnc","vpns_conflict"),4327:_T("vpnc","ovpnfile_invalid_format"),4328:_T("vpnc","ovpn_private_key_not_support"),4340:_T("background_task","task_processing"),4350:_T("tcpip","ipv6_invalid_config"),4351:_T("tcpip","ipv6_router_bad_lan_req"),4352:_T("tcpip","ipv6_router_err_enable"),4353:_T("tcpip","ipv6_router_err_disable"),4354:_T("tcpip","ipv6_no_public_ip"),4370:_T("ovs","ovs_not_support_bonding"),4371:_T("ovs","ovs_not_support_vlan"),4372:_T("ovs","ovs_not_support_bridge"),4373:_T("network","linkaggr_mode_inconsistent_err"),4380:_T("router_networktools","ping_target_invalid"),4381:_T("router_networktools","ping_timeout"),4382:_T("router_networktools","traceroute_target_invalid"),4500:_T("error","error_error_system"),4501:_T("error","error_error_system"),4502:_T("pkgmgr","pkgmgr_space_not_ready"),4503:_T("error","volume_creating"),4504:_T("pkgmgr","error_sys_no_space"),4506:_T("pkgmgr","noncancellable"),4520:_T("error","error_space_not_enough"),4521:_T("pkgmgr","pkgmgr_file_not_package"),4522:_T("pkgmgr","broken_package"),4529:_T("pkgmgr","pkgmgr_pkg_cannot_upgrade"),4530:_T("pkgmgr","error_occupied"),4531:_T("pkgmgr","pkgmgr_not_syno_publish"),4532:_T("pkgmgr","pkgmgr_unknown_publisher"),4533:_T("pkgmgr","pkgmgr_cert_expired"),4534:_T("pkgmgr","pkgmgr_cert_revoked"),4535:_T("pkgmgr","broken_package"),4540:_T("pkgmgr","pkgmgr_file_install_failed"),4541:_T("pkgmgr","upgrade_fail"),4542:_T("error","error_error_system"),4543:_T("pkgmgr","pkgmgr_file_not_package"),4544:_T("pkgmgr","pkgmgr_pkg_install_already"),4545:_T("pkgmgr","pkgmgr_pkg_not_available"),4548:_T("pkgmgr","install_version_less_than_limit"),4549:_T("pkgmgr","depend_cycle"),4570:_T("common","error_invalid_serial"),4580:_T("pkgmgr","pkgmgr_pkg_start_failed"),4581:_T("pkgmgr","pkgmgr_pkg_stop_failed"),4590:_T("pkgmgr","invalid_feed"),4591:_T("pkgmgr","duplicate_feed"),4592:_T("pkgmgr","duplicate_certificate"),4593:_T("pkgmgr","duplicate_certificate_sys"),4594:_T("pkgmgr","revoke_certificate"),4595:_T("service","service_illegel_crt"),4600:_T("error","error_error_system"),4601:_T("error","error_error_system"),4602:_T("notification","google_auth_failed"),4631:_T("error","error_error_system"),4632:_T("error","error_error_system"),4633:_T("error","sms_provider_not_found"),4634:_T("error","sms_provider_exist"),4635:_T("error","error_error_system"),4661:_T("pushservice","error_update_ds_info"),4681:_T("error","error_error_system"),4682:_T("error","error_error_system"),4683:_T("error","webhook_provider_not_found"),4684:_T("error","webhook_provider_exist"),4685:_T("error","error_error_system"),4800:_T("schedule","error_unknown"),4801:_T("schedule","error_load_failed"),4802:_T("schedule","error_delete_failed"),4803:_T("schedule","error_run_failed"),4804:_T("schedule","error_save_failed"),4900:_T("error","error_invalid"),4901:_T("error","error_error_system"),4902:_T("user","no_such_user"),4903:_T("report","err_dest_share_not_exist"),4904:_T("error","error_file_exist"),4905:_T("error","error_space_not_enough"),5000:_T("error","error_invalid"),5001:_T("error","error_invalid"),5002:_T("error","error_invalid"),5003:_T("error","error_invalid"),5004:_T("error","error_invalid"),5005:_T("syslog","err_server_disconnected"),5006:_T("syslog","service_ca_copy_failed"),5007:_T("syslog","service_ca_copy_failed"),5008:_T("log","no_active_log"),5009:_T("error","error_port_conflict"),5010:_T("error","error_invalid"),5011:_T("error","error_invalid"),5012:_T("syslog","err_name_conflict"),5016:String.format(_T("error","error_load_system_settings"),'',""),5017:String.format(_T("error","error_load_system_settings"),'',""),5018:String.format(_T("error","error_unexpected_load_settings"),'',""),5019:String.format(_T("error","error_load_system_settings"),'',""),5020:String.format(_T("error","error_set_system_settings"),'',""),5021:String.format(_T("error","error_load_system_settings"),'',""),5022:_T("syslog","error_quota_not_enough"),5023:_T("error","error_space_not_enough"),5024:_T("syslog","error_sys_no_space"),5100:_T("error","error_invalid"),5101:_T("error","error_invalid"),5102:_T("error","error_invalid"),5103:_T("error","error_invalid"),5104:_T("error","error_invalid"),5105:_T("error","error_invalid"),5106:_T("error","error_invalid"),5202:_T("update","error_apply_lock"),5203:_T("volume","volume_busy_waiting"),5205:_T("update","error_bad_dsm_version"),5206:_T("update","update_notice"),5207:_T("update","error_model"),5208:_T("update","error_apply_lock"),5209:_T("update","error_patch"),5210:_T("update","error_passive_patch"),5211:_T("update","upload_err_no_space"),5213:_T("pkgmgr","error_occupied"),5214:_T("update","check_new_dsm_err"),5215:_T("error","error_space_not_enough"),5216:_T("error","error_fs_ro"),5217:_T("error","error_dest_no_path"),5219:_T("update","autoupdate_cancel_failed_running"),5220:_T("update","autoupdate_cancel_failed_no_task"),5221:_T("update","autoupdate_cancel_failed"),5222:_T("update","error_verify_patch"),5223:_T("update","error_updater_prehook_failed"),5224:_T("update","error_hybrid_ha_patch_version_inconsistent"),5225:_T("update","error_hybrid_ha_passive_bad_model"),5300:_T("error","error_invalid"),5301:_T("user","no_such_user"),5510:_T("service","service_illegel_crt"),5511:_T("service","service_illegel_key"),5512:_T("service","service_illegal_inter_crt"),5513:_T("service","service_unknown_cypher"),5514:_T("service","service_key_not_match"),5515:_T("service","service_ca_copy_failed"),5516:_T("service","service_ca_not_utf8"),5517:_T("certificate","inter_and_crt_verify_error"),5518:_T("certificate","not_support_dsa"),5519:_T("service","service_illegal_csr"),5520:_T("backup","general_backup_destination_no_response"),5521:_T("certificate","err_connection"),5522:_T("certificate","err_server_not_match"),5523:_T("certificate","err_too_many_reg"),5524:_T("certificate","err_too_many_req"),5525:_T("certificate","err_mail"),5526:_T("s2s","err_invalid_param_value"),5527:_T("certificate","err_le_server_busy"),5528:_T("certificate","err_not_synoddns"),5529:_T("certificate","err_invalid_domain"),5530:_T("certificate","err_challenge_unauthorized"),5531:_T("certificate","err_no_realname_verified"),5532:_T("certificate","err_free_limit_exceeded"),5533:_T("certificate","err_illigal_access_token"),5534:_T("certificate","err_insecure_certificate"),5600:_T("error","error_no_path"),5601:_T("file","error_bad_file_content"),5602:_T("error","error_error_system"),5603:_T("texteditor","LoadFileFail"),5604:_T("texteditor","SaveFileFail"),5605:_T("error","error_privilege_not_enough"),5606:_T("texteditor","CodepageConvertFail"),5607:_T("texteditor","AskForceSave"),5608:_T("error","error_encryption_long_path"),5609:_T("error","error_long_path"),5610:_T("error","error_quota_not_enough"),5611:_T("error","error_space_not_enough"),5612:_T("error","error_io"),5613:_T("error","error_privilege_not_enough"),5614:_T("error","error_fs_ro"),5615:_T("error","error_file_exist"),5616:_T("error","error_no_path"),5617:_T("error","error_dest_no_path"),5618:_T("error","error_testjoin"),5619:_T("error","error_reserved_name"),5620:_T("error","error_fat_reserved_name"),5621:_T("texteditor","exceed_load_max"),5703:_T("time","ntp_service_disable_warning"),5800:_T("error","error_invalid"),5801:_T("share","no_such_share"),5901:_T("error","error_subject"),5902:_T("firewall","firewall_vpnpassthrough_restore_failed"),5903:_T("firewall","firewall_vpnpassthrough_specific_platform"),6000:_T("error","error_error_system"),6001:_T("error","error_error_system"),6002:_T("error","error_error_system"),6003:_T("error","error_error_system"),6004:_T("common","loadsetting_fail"),6005:_T("error","error_subject"),6006:_T("error","error_service_start_failed"),6007:_T("error","error_service_stop_failed"),6008:_T("error","error_service_start_failed"),6009:_T("firewall","firewall_save_failed"),6010:_T("common","error_badip"),6011:_T("common","error_badip"),6012:_T("common","error_badip"),6013:_T("share","no_such_share"),6014:_T("cms","cms_no_volumes"),6015:_T("ftp","tftp_no_privilege_restart_service"),6016:_T("ftp","tftp_invalid_root_folder"),6200:_T("error","error_error_system"),6201:_T("error","error_acl_volume_not_support"),6202:_T("error","error_fat_privilege"),6203:_T("error","error_remote_privilege"),6204:_T("error","error_fs_ro"),6205:_T("error","error_privilege_not_enough"),6206:_T("error","error_no_path"),6207:_T("error","error_no_path"),6208:_T("error","error_testjoin"),6209:_T("error","error_privilege_not_enough"),6210:_T("acl_editor","admin_cannot_set_acl_perm"),6211:_T("acl_editor","error_invalid_user_or_group"),6212:_T("error","error_acl_mp_not_support"),6213:_T("acl_editor","quota_exceeded"),6215:_T("acl_editor","acl_rules_reach_limit"),6216:_T("acl_editor","error_xattr_exceeded"),6703:_T("error","error_port_conflict"),6704:_T("error","error_port_conflict"),6705:_T("user","no_such_user"),6706:_T("user","error_nameused"),6708:_T("share","error_volume_not_found"),6709:_T("netbackup","err_create_service_share"),7100:_T("connections","error_disable_admin_name"),8000:_T("router_wireless","wifi_daemon_not_ready"),8001:_T("network","net_daemon_not_ready"),8002:_T("network","usbmodem_daemon_not_ready"),8003:_T("wireless_ap","ap_ssid_limit_alert"),8010:_T("router_topology","get_topology_fail"),8011:_T("network","net_get_fail"),8012:_T("network","net_get_setting_fail"),8013:_T("router_wireless","wifi_setting_get_fail"),8020:_T("router_topology","set_topology_fail"),8021:_T("network","net_set_fail"),8022:_T("network","net_set_setting_fail"),8023:_T("router_wireless","wifi_setting_set_fail"),8030:_T("network","get_redirect_info_fail"),8031:_T("router_common","dhcp_range_conflict_err"),8100:_T("router_wireless","guest_network_get_count_down_fail"),8101:_T("router_wireless","guest_network_set_count_down_fail"),8130:_T("pppoe","pppoe_get_setting_fail"),8131:_T("pppoe","pppoe_set_setting_fail"),8132:_T("pppoe","pppoe_no_interface_available"),8133:_T("pppoe","pppoe_service_start_fail"),8134:_T("pppoe","pppoe_service_stop_fail"),8135:_T("pppoe","pppoe_connection_failed"),8136:_T("pppoe","pppoe_disconnect_fail"),8150:_T("wireless_ap","country_code_get_fail"),8151:_T("wireless_ap","country_code_set_fail"),8152:_T("wireless_ap","country_code_read_list_fail"),8153:_T("wireless_ap","country_code_region_not_support"),8170:_T("routerconf","routerconf_exceed_max_rule"),8175:_T("smartwan","sw_too_many_rules"),8180:_T("routerconf","routerconf_exceed_max_rule"),8190:_T("router_parental","err_device_reach_max"),8200:_T("router_parental","err_domain_name_reach_max"),8230:_T("routerconf","routerconf_exceed_max_reservation"),8231:_T("routerconf","routerconf_exceed_max_reservation_v6"),9060:_T("disk_info","disk_upload_db_error_verify"),9061:_T("error","error_space_not_enough"),9062:_T("disk_info","disk_upload_db_error_version_too_old"),9063:_T("disk_info","disk_upload_db_error_model_not_match")},t},SYNO.API.AssignErrorStr=function(){SYNO.API.Errors=SYNO.API.GetErrors()},SYNO.API.AssignErrorStr(),SYNO.API.Erros=function(){if(Ext.isIE8)return SYNO.API.Errors;var t={},e=function(e){Object.defineProperty(t,e,{get:function(){return SYNO.Debug.warn("SYNO.API.Erros is deprecated (typo), please use SYNO.API.Errors instead."),SYNO.API.Errors[e]},configurable:!1})};for(var i in SYNO.API.Errors)SYNO.API.Errors.hasOwnProperty(i)&&e(i);return t}(),SYNO.SDS.Frameworks=new class{constructor(){this._map=new Map,this._scripts={vue:{globalId:"Vue",scriptTag:window.Vue},ext:{globalId:"Ext",scriptTag:window.Ext},vuex:{globalId:"Vuex",scriptTag:window.Vuex},"vue-router":{globalId:"VueRouter",scriptTag:window.VueRouter}}}get(t){return this._map.get(t)}replace(t,e){const i=this._scripts[t].globalId;i&&(window[i]=e),this._map.set(t,e)}useScriptTag(t){const e=this._scripts[t].globalId;window[e]=this._scripts[t].scriptTag}},window.__TEST__?window.SYNO={SDS:{}}:Ext.namespace("SYNO.SDS.EventEmitter"),SYNO.SDS.EventEmitter=class{constructor(){this._events=Object.create(null),this._eventsCount=0}get on(){return this.addListener}get un(){return this.removeListener}get fireEvent(){return this.emit}hasListener(t){return!!this._events[t]}_createListenerFn(t,e,i){if(!i)return t;if(i.delay)return function(){setTimeout(()=>{t.apply(e,arguments)},i.delay)};if(i.single){let i=!1;return function(){i||(t.apply(e,arguments),i=!0)}}if(i.buffer){let s;return function(){clearTimeout(s),s=setTimeout(()=>{t.apply(e,arguments)},i.buffer)}}return t}addListener(t,e,i,s){if("function"!=typeof e)throw new TypeError("fn is not a function");let n={fn:this._createListenerFn(e,i,s),scope:i||this,options:s};return this._events[t]?this._events[t].push(n):(this._events[t]=[n],this._eventsCount++),this}getListeners(t){let e=this._events[t];return e||[]}getListenerCount(t){let e=this._events[t];return e?e.length:0}emit(){let t=Array.prototype.slice.call(arguments,0),e=t[0],i=!0;if(!this._events[e])return i;const s=this._events[e].slice();for(let n of s)!1===n.fn.apply(n.scope||this,t.slice(1))&&(i=!1),n.options&&n.options.single&&this.removeListener(e,n.fn);return i}removeListener(t,e,i){if(!this._events[t])return this;if(e){let i=this._events[t].filter(t=>t.fn!==e);0===i.length?this._clearEvents(t):this._events[t]=i}else this._clearEvents(t);return this}removeAllListeners(t){t?this._events[t]&&this._clearEvents(t):(this._events=Object.create(null),this._eventsCount=0)}_clearEvents(t){this._eventsCount--,0===this._eventsCount?this._events=Object.create(null):delete this._events[t]}},window.__TEST__&&(module.exports=SYNO.SDS.EventEmitter),Ext.namespace("SYNO.SDS._StatusNotifier");const GRANT_PRIV_USER_ALL="all",GRANT_PRIV_USER_ADMIN="admin",GRANT_PRIV_USER_NORMAL="normal",GRANT_PRIV_ALL="all",GRANT_PRIV_LOCAL="local",GRANT_PRIV_DOMAIN="domain";SYNO.SDS._StatusNotifier=class extends SYNO.SDS.EventEmitter{constructor(){super(arguments)}isAppValid(t){return!0===this.isSupportedApp(t)&&(!!this.isAppHasPrivilege(t)&&(!!this.isServiceEnabled(t)&&!SYNO.SDS.Packages.isStop(t)))}isAppLaunchable(t){var e=SYNO.SDS.Config.FnMap[t];return!(!e||!Ext.isDefined(e.config))&&!1!==e.config.launchable}isAppEnabled(t){return!0===this.isSupportedApp(t)&&(!!this.isAppHasPrivilege(t)&&(!!this.isServiceEnabled(t)&&!(SYNO.SDS.Packages.isPackage(t)&&!SYNO.SDS.Packages.isEnable(t))))}isSupportedApp(t){var e,i,s,n=SYNO.SDS.Config.FnMap[t],o=!0;return!(!n||!Ext.isDefined(n.config))&&("app"!==(e=n.config).type||!Ext.isDefined(e.supportKey)||(i=Ext.isArray(e.supportKey)?e.supportKey:[e.supportKey],Ext.each(i,function(t){s=Ext.isDefined(t.value)?_D(t.key)===t.value:!Ext.isEmpty(_D(t.key)),o=Ext.isDefined(t.cond)&&"or"===t.cond?o||s:o&&s},this),o))}isAppHasActionPrivilege(t){if(!_S("is_admin")&&SYNO.SDS.ActionPrivilege.AllowList&&0new Promise((e,i)=>{const s=(...i)=>{this.onSaveSuccess(t,...i),e()};if(!this.modified||_S("demo_mode")||!_S("isLogined"))return s();this.dirty=!1,this.ajaxTask=this.addWebAPITask(Ext.apply({single:!0,params:{data:Ext.encode(this.modified)},callback:(...t)=>{s(...t),this.ajaxTask=null}},this.webapi.apply)).start(),this.ajaxTask._originalCallbackObj=t}))},onLoadSuccess:function(t,e,i,s){t&&(this.data=e)},handleCallback:function(t){var e;if(Ext.isObject(t)){e=t.scope||this;var i=t.callback;Ext.isFunction(i)&&i.apply(e,Array.from(arguments).slice(1))}},handlePreviousCallbacks:function(){for(const t of this._onCallbackObjs)this.handleCallback(t);this._onCallbackObjs=[]},onSaveSuccess:function(t,...e){!0!==this.dirty&&(this.modified=null),this.handlePreviousCallbacks(),this.handleCallback(t,...e)},getProperty:function(t,e){try{return this.data[t][e]}catch(t){return null}},setProperty:function(t,e,i){if(this.modified=this.modified||{},this.dirty=!0,null==i)return this.removeProperty(t,e);Ext.isObject(this.data[t])||(this.data[t]={}),this.data[t][e]=i,this.modified[t]=this.data[t],this.delayedTask.delay(3e3)},removeProperty:function(t,e){this.data[t]&&(this.dirty=!0,this.modified=this.modified||{},this.modified[t]=this.data[t],delete this.data[t][e],this.delayedTask.delay(3e3))}}),SYNO.SDS.UserSettingsProvider=Ext.extend(Ext.state.Provider,{constructor:function(){SYNO.SDS.UserSettingsProvider.superclass.constructor.apply(this,arguments)},set:function(t,e){null!=e?(SYNO.SDS.UserSettingsProvider.superclass.set.call(this,t,e),SYNO.SDS.UserSettings.setProperty("desktop","stateProvider",this.state)):this.clear(t)},clear:function(t){SYNO.SDS.UserSettingsProvider.superclass.clear.call(this,t),SYNO.SDS.UserSettings.setProperty("desktop","stateProvider",this.state)}}),Ext.namespace("SYNO.SDS._GroupSettings"),SYNO.SDS._GroupSettings=Ext.extend(SYNO.SDS._UserSettings,{admingrpsetmtime:0,webapi:{get:{api:"SYNO.Core.GroupSettings",method:"get",version:1},apply:{api:"SYNO.Core.GroupSettings",method:"apply",version:1}},constructor:function(){SYNO.SDS._UserSettings.superclass.constructor.apply(this,arguments),this.data=SYNO.SDS.initGroupSettings||{},this.delayedTask=new Ext.util.DelayedTask(this.save,this),this._onCallbackObjs=[],SYNO.SDS.StatusNotifier&&this.mon(SYNO.SDS.StatusNotifier,"logout",this.syncSave,this),this.registerUnloadEvent()},onSaveSuccess:function(t,e){SYNO.SDS._GroupSettings.superclass.onSaveSuccess.apply(this,arguments),Ext.isObject(t)&&t.success&&t.admingrpsetmtime&&(this.admingrpsetmtime=t.admingrpsetmtime)},onLoadSuccess:function(t,e,i,s){t&&e&&(this.data=e.data||{},this.admingrpsetmtime=e.admingrpsetmtime||0,SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("syncGroupSettings"))},syncSave:function(t){SYNO.SDS.StatusNotifier&&SYNO.SDS.StatusNotifier.fireEvent("beforeGroupSettingsUnload"),this.modified&&!_S("demo_mode")&&_S("isLogined")&&(this.ajaxTask&&this.ajaxTask.remove(),this.sendWebAPI(Ext.apply({async:!1,timeout:10,params:{data:Ext.encode(this.modified)},callback:this.onSaveSuccess.createDelegate(this,[t])},this.webapi.apply)))},reload:function(t){_S("is_admin")&&t!==this.admingrpsetmtime&&(this.admingrpsetmtime=t||0,this.load())}}),Ext.ns("SYNO.SDS.Utils.Notify"),SYNO.SDS.Utils.Notify.BindEvent=function(t){var e,i,s,n,o,r,a;if(t&&t.target&&"false"!=t.target.getAttribute("data-syno-bind")){if(r=(n=t.target).getAttribute("data-syno-param"),Ext.isString(r))try{o=Ext.decode(r)}catch(t){SYNO.Debug.error(t),o={}}r=n.getAttribute("data-syno-scope"),Ext.isString(r)&&!Ext.isEmpty(Ext.getClassByName(r))&&(a=Ext.getClassByName(r)),r=n.getAttribute("data-syno-func"),Ext.isString(r)&&Ext.isFunction(Ext.getClassByName(r))?Ext.getClassByName(r).call(a,o):Ext.isString(n.getAttribute("data-syno-app"))?(s=n.getAttribute("data-syno-app"),Ext.isString(n.getAttribute("data-syno-fn"))&&(i=n.getAttribute("data-syno-fn"),o=Ext.apply(o||{},{fn:i})),Ext.isString(n.getAttribute("data-syno-tab"))&&(e=n.getAttribute("data-syno-tab"),o=Ext.apply(o||{},{tab:e})),SYNO.SDS.AppLaunch(s,o)):Ext.isString(n.getAttribute("data-syno-win"))&&(s=n.getAttribute("data-syno-win"),SYNO.SDS.WindowLaunch(s))}},Ext.namespace("SYNO.SDS.Config"),Ext.namespace("SYNO.SDS.JSLoad"),Ext.define("SYNO.SDS.JSLoader",{singleton:!0,relaunchHotReloadModule:function(t,e){let i=SYNO.SDS.AppMgr.getByAppName(t);if(i&&0!==i.length)for(let s of i)s.window&&s.window.doClose&&s.window.doClose(),s.beforeDestroy&&s.beforeDestroy(),SYNO.SDS.AppLaunch(t,e,!0),SYNO.Debug("relaunch module named: "+t+" with options: "+JSON.stringify(e))},listenJSFileBySocket:function(){SYNO.SDS.SocketInst&&SYNO.SDS.JSDebug&&SYNO.SDS.SocketInst.registerJsFile((t,e)=>{window.eval(t);for(let t of e.ids){let e=Ext.getClassByName(t);e&&e.prototype&&(e.prototype.jsConfig=SYNO.SDS.Config.FnMap[t].config)}for(let t of e.appIds)this.relaunchHotReloadModule(t,e.launchAppOptions)})},launchHotReloadMode:function(){this.listenJSFileBySocket()},requestJSFileByScript:function(t,e,i){var s=SYNO.SDS.JSLoad.JSStatus[t],n=document.getElementsByTagName("head")[0],o=document.createElement("script"),r=t;r=Ext.urlAppend(t,"v="+(s&&s.version||_S("fullversion"))),Ext.isDefined(SYNO.SDS.JSDebug)&&(r=Ext.urlAppend(r,"_dc="+(new Date).getTime())),SYNO.Debug.debug("JSLoad requesting for "+t+" by script tag"),o.type="text/javascript",Ext.isIE?(o.onready=e,o.onreadystatechange=function(){"complete"!==this.readyState&&"loaded"!==this.readyState||this.onready()}):o.onload=e,o.async=!0,o.onerror=i,o.src=r,n.appendChild(o)},requestJSFileByAjax:function(t,e,i){var s=SYNO.SDS.JSLoad.JSStatus[t];SYNO.Debug.debug("JSLoad requesting for "+t+" by ajax"),Ext.Ajax.request({method:"GET",disableCaching:Ext.isDefined(SYNO.SDS.JSDebug),url:Ext.urlAppend(t,"v="+(s&&s.version||_S("fullversion"))),extraParams:{jsFile:t},scope:this,failure:function(t,s){var n=s.extraParams.jsFile,o=Math.round(5+5*Math.random());SYNO.Debug.error(n+": "+t.status+" "+t.statusText),SYNO.Debug.error("JSLoad request failed: "+n+", retry after "+o+" seconds"),Ext.defer(this.requestJSFileByAjax,1e3*o,this,[n,e,i])},success:function(t,s){try{var n=s.extraParams.jsFile;SYNO.Debug.debug("JSLoad request successed: "+n),window.execScript?window.execScript(t.responseText,"JavaScript"):window.eval(t.responseText),e()}catch(t){return SYNO.Debug.error("JSLoad import "+n+" failed: ",t,t.stack),void i(t)}}})},loadExtraModulesStrings:function(t){let e=[];if(t.extraModulesStrings)for(let i of t.extraModulesStrings){let t=SYNO.SDS.Config.FnMap[i];t&&t.config&&e.push(this.StringLoadFn(t.config,i))}return e},StringLoadFn:function(t,e){let i=Promise.resolve();return t.texts?i=SYNO.API.RequestPromise({api:"SYNO.Core.Desktop.Initdata",method:"get",version:1,params:{action:"get_module_strings",jsconfig:{texts:t.texts,jsBaseURL:t.jsBaseURL}}}).then(function(i){SYNO.SDS.Strings[e]=i,t.mappingStringToJsId&&(SYNO.SDS.Strings[t.mappingStringToJsId]=SYNO.SDS.Utils.mergeDeep(SYNO.SDS.Strings[t.mappingStringToJsId],i))}):i},JSLoadFn:function(t){let e=SYNO.SDS.Config.FnMap[t];return e?!0===e.config.waterfallLoadTexts?this.StringLoad(e.config,t).then(()=>this.JSLoadFile(e.jsFile)):Promise.all([this.StringLoad(e.config,t),this.JSLoadFile(e.jsFile)]):Promise.reject("No such app: "+t)},StringLoad:function(t,e){if(!0===t.textsLoaded)return Promise.resolve();let i=SYNO.SDS.JSLoad.StringStatus[e];if(i&&i.promise)return i.promise;i=Object.create(null),SYNO.SDS.JSLoad.StringStatus[e]=i;let s=this.loadExtraModulesStrings(t);return s.push(this.StringLoadFn(t,e)),i.promise=Promise.all(s).then(()=>{t.textsLoaded=!0,delete SYNO.SDS.JSLoad.StringStatus[e]}),i.promise},JSLoadFile:function(t){if(!SYNO.SDS.Config.JSConfig[t])return Promise.reject("No such file: "+t);if(this.isLoaded(t))return Promise.resolve();var e=SYNO.SDS.JSLoad.JSStatus[t];if(e.promise)return e.promise;var i=this.getDepends(t);return e.loading?(this.printLoopStat(t,i),Promise.reject("loop detected")):(e.loading=!0,e.promise=Promise.all(i.map(this.JSLoadFile.bind(this))).then(this.loadJS.bind(this,t)).then(this.afterLoadJS.bind(this,t)),e.promise)},isLoaded:function(t){var e,i=SYNO.SDS.Config.FnMap,s=SYNO.SDS.Config.JSConfig[t],n=SYNO.SDS.JSLoad.JSStatus[t];for(var o in s)if(!/\/\.url$/.exec(o)&&i[o].config.version){e=i[o].config.version,n.version!=e&&(n.loaded=!1,n.version=e);break}return n.loaded},getDepends:function(t){var e=SYNO.SDS.Config.JSConfig[t],i=[],s=[];return Ext.iterate(e,function(t,e){i=i.concat(e.depend||[]),s=s.concat(t)}),i.filter(function(t){return-1===s.indexOf(t)}).map(function(e){if(!SYNO.SDS.Config.FnMap[e])throw"fn not exist: "+e+", depend by: "+t;return SYNO.SDS.Config.FnMap[e].jsFile}).filter(function(t,e,i){return i.indexOf(t)===e&&!this.isLoaded(t)}.bind(this))},loadJS:function(t){return this.isLoaded(t)?Promise.resolve():new Promise(function(e,i){SYNO.SDS.JSLoader.requestJSFileByScript(t,e,i)})},afterLoadJS:function(t){var e=SYNO.SDS.Config.FnMap,i=SYNO.SDS.Config.JSConfig[t],s=SYNO.SDS.JSLoad.JSStatus[t];for(var n in s.loading=!1,s.promise=null,i)if(i.hasOwnProperty(n)){if(!e[n]||"app"!==e[n].config.type&&"lib"!==e[n].config.type&&"widget"!==e[n].config.type&&"standalone"!==e[n].config.type||!0===e[n].config.webpackUsed)continue;try{Ext.getClassByName(n).prototype.jsConfig=e[n].config}catch(t){if(SYNO.Debug.error("JSLoad apply JSConfig to "+n+" failed: ",t),Ext.isDefined(SYNO.SDS.JSDebug))throw t}}s.loaded=!0},printLoopStat:function(t,e){SYNO.Debug.error("=== loop start ==="),SYNO.Debug.error(t,"depends on",e),Ext.each(e,function(t){SYNO.Debug.error(t,"depends on",this.getDepends(t))},this),SYNO.Debug.error("=== loop end ===")}}),SYNO.SDS.JSLoad=function(t,e,i,s){SYNO.SDS.JSLoader.JSLoadFn(t).then(function(){Ext.isFunction(e)&&e.call(i)},function(t){SYNO.Debug.error(t,t.stack),Ext.isFunction(s)&&s.call(i)})},SYNO.SDS.JSLoadPromise=function(t){return SYNO.SDS.JSLoader.JSLoadFn(t)},SYNO.SDS.JSLoad.init=function(){SYNO.SDS.Config.FnMap={},SYNO.SDS.Config.AutoLaunchFnList=[];var t=SYNO.SDS.Config.JSConfig,e=SYNO.SDS.Config.FnMap;e["SYNO.SDS.VirtualGroup"]={config:{title:"Group Icon",jsBaseURL:"resources"}};const i={fullpage:1,widget:2,badge:3,notification:4,tray:5,show_window:6};function s(t,e){"app"===e.type&&!0===e.autoLaunch&&SYNO.SDS.Config.AutoLaunchFnList.push({appName:t,dependName:e.dependApp,autoLaunchType:e.autoLaunchType,autoLaunchSync:e.autoLaunchSync})}function n(t,i,s){var o=e[i].config.depend;if(s.push(i),Ext.isArray(o)){var r=o.indexOf(t);if(r>=0)return SYNO.Debug.warn("Dependency loop detected: "+t+" <--\x3e "+i),void o.splice(r,1);for(var a=0;a(Ext.isDefined(i[t.autoLaunchType])?i[t.autoLaunchType]:999)-(Ext.isDefined(i[e.autoLaunchType])?i[e.autoLaunchType]:999))}()},SYNO.SDS.JSLoad.RemoveJSSatusByAppName=function(t){var e=SYNO.SDS.Config.FnMap[t],i=SYNO.SDS.Config.JSConfig;e&&(SYNO.SDS.JSLoad.JSStatus[e.jsFile]={},i[e.jsFile]&&(i[e.jsFile].isLoaded=!1))},SYNO.SDS.JSLoad.JSStatus=Object.create(null),SYNO.SDS.JSLoad.StringStatus=Object.create(null),Ext.namespace("SYNO.SDS.UIString"),SYNO.SDS.UIString.LoadLanguage=function(t,e,i){var s=["webapi/entry.cgi?api=SYNO.Core.Desktop.JSUIString&version=1&method=getjs&lang="+t,"webapi/entry.cgi?api=SYNO.Core.Desktop.UIString&version=1&method=getjs&lang="+t],n=0;function o(t){++n>=s.length&&i()}function r(){"complete"!==this.readyState&&"loaded"!==this.readyState||this.onready()}if("def"!==t&&t!==_S("sys_lang")){var a=document.getElementsByTagName("head")[0];Ext.each(s,function(t){var i=t;i=Ext.urlAppend(i,"v="+e),Ext.isDefined(SYNO.SDS.JSDebug)&&(i=Ext.urlAppend(i,"_dc="+(new Date).getTime()));var s=document.createElement("script");s.type="text/javascript",Ext.isIE?(s.onready=o.createCallback(t),s.onreadystatechange=r):s.onload=o.createCallback(t),s.src=i,a.appendChild(s)})}else i()},SYNO.SDS.UIString.GetLocalizedString=function(t,e){if(!t||"string"!=typeof t)return"";var i,s,n,o,r=t.split(":",3);return 22&&(n[1]=n.splice(1,n.length-1).join("?")),i=n[1]?Ext.urlDecode(n[1]):{},s=Ext.apply(i,e);var o=n[0],r=Ext.urlEncode(s);return t=Ext.urlAppend(o,r,!1)},alterNotSupport:function(){new SYNO.SDS.MessageBoxV5({modal:!0,draggable:!1,renderTo:document.body}).alert(_T("relayservice","package_not_supported"),_T("relayservice","package_not_supported"))},maskDesktop:function(){var t=SYNO.SDS.Desktop.getEl();t.addClass("sds-window-v5"),t.addClass("sds-standalone-desktop"),t.mask&&t.mask(_T("common","loading"),"x-mask-loading x-standalone-loading")}}),Ext.define("SYNO.SDS.WindowLauncher.Util",{statics:{getStandaloneLaunchURL:function(t,e){var i=SYNO.SDS.Config.FnMap[t];if(i)return e=Ext.apply(e||{},{launchApp:t}),Ext.urlAppend(window.location.protocol+"//"+window.location.host+window.location.pathname,Ext.urlEncode(e),!i.config.allowURLNoSynoToken)},parseOptions:function(t,e,i,s){var n=SYNO.SDS.Config.FnMap[t];if(!n)return!1;var o="";s&&s.url?o=s.url:n.config.url?o=n.config.url:SYNO.SDS.UrlTag[n.config.urlTag]&&(o=SYNO.SDS.UrlTag[n.config.urlTag],!0===n.config.appendSynoTokenInUrlTag&&(o=Ext.urlAppend(o)));return!1!==i&&(i=!0),{className:t,param:e,url:o,type:s&&s.type?s.type:n.config.allowStandalone?"standalone":n.config.type,isOpenNewWindow:i,appConfig:n.config}}}}),SYNO.SDS.IsDSMPortalWhiteList=function(t){return t in{"SYNO.SDS.PersonalPhotoStation":!0,"SYNO.SDS.PhotoStation":!0,"SYNO.SDS.SurveillanceStation":!0}},SYNO.SDS.IsHABlackList=function(t){for(var e=["SYNO.SDS.EzInternet.Instance"],i=0;i0?e[e.length-1]:null},m=function(){if(_S("standalone")){var i=SYNO.SDS.Desktop.getEl();i.unmask&&i.unmask(),i.removeClass(["sds-window-v5","sds-window-init-loading"])}var o,r,a;try{var u;if(SYNO.SDS.WindowMgr&&SYNO.SDS.WindowMgr.allHided)return SYNO.SDS.WindowMgr.toggleAllWin(),void SYNO.SDS.StatusNotifier.on("allwinrestored",m,this,{single:!0});c.loadingCnt--;try{u=Ext.getClassByName(t)}catch(t){}if(u||"legacy"!==c.type||(r=c.url,a="".concat("Ext.namespace('{0}');","{0} = Ext.extend(SYNO.SDS.AppInstance, {","appWindowName: '{0}.MainWindow'","});","{0}.MainWindow = Ext.extend(SYNO.SDS.LegacyAppWindow, {","constructor: function(config) {","{0}.MainWindow.superclass.constructor.call(this, Ext.apply({","url: '{1}'","}, config));","}","});","{0}.prototype.jsConfig = SYNO.SDS.Config.FnMap['{0}'].config;","{0}.MainWindow.prototype.jsConfig = SYNO.SDS.Config.FnMap['{0}'].config;"),window.execScript?window.execScript(String.format(a,t,r),"JavaScript"):window.eval(String.format(a,t,r)),u=Ext.getClassByName(t)),l.config.pureEnv&&!(u.prototype instanceof SYNO.SDS.AppInstance)){const t=new u,i=document.createDocumentFragment();return function(t){l.config.pureEnv&&t&&(SYNO.SDS.WindowMgr=t.getWindowMgr&&t.getWindowMgr())}(t),t.pureMount&&t.pureMount(i,Object.assign({},e)),void(s&&s.call(n||window,t))}if(window.Vue&&u.prototype instanceof window.Vue){let i=new u,r=document.createElement("div"),a=document.createDocumentFragment();return a.appendChild(r),i.$mount(r),(o=getVueAppInstance(i))&&(o.beforeInit&&o.beforeInit({taskButton:d}),o.$props&&o.$props.fullsize?document.body.appendChild(a):SYNO.SDS.Desktop.getElement().appendChild(a),o.open(Ext.copyTo({},e,["autoCenter","instanceName"])),SYNO.SDS.SetVueInstParam(o,e),SYNO.SDS.Desktop&&i&&SYNO.SDS.Desktop.appendChild(i),SYNO.Debug.measure(t)),void(s&&s.call(n||window,o))}if(!(u.prototype instanceof SYNO.SDS.AppInstance))return void SYNO.Debug.error(t+" is not extends from AppInstance.");if(!1===function(t,e){return!(!Ext.isObject(e)||!e.is_cms_open)||SYNO.SDS.StatusNotifier.isAppEnabled(t)}(t,e))return;(o=new u(Ext.copyTo({taskButton:d},e,["autoCenter","instanceName"]))).open(e),SYNO.SDS.SetVueInstParam(o,e)}catch(e){if(SYNO.Debug.error(t+" launch failed: ",e,e.stack),Ext.isDefined(SYNO.SDS.JSDebug))throw e;return}if(o=h||S(),s){let t=!0;o&&(t=o._isVue?o._isDestroyed:o.isDestroyed),s.call(n||window,t?null:o)}SYNO.Debug.measure(t)};if(!u||!u.config)return;if(c=u.config,_S("ha_running")&&SYNO.SDS.IsHABlackList(t))return void new SYNO.SDS.MessageBoxV5({modal:!0,draggable:!1,renderTo:document.body}).getWrapper().alert(_D("product"),_TT("SYNO.SDS.HA.Instance","ui","warning_forbidden_action"));if(SYNO.SDS.Config.CheckCSPRefresh&&-1!=SYNO.SDS.Config.CheckCSPRefresh.indexOf(t))return void SYNO.SDS.Desktop.getMsgBox().confirm(_D("product"),_T("pkgmgr","csp_need_refresh"),function(o){if("yes"!==o){var r=SYNO.SDS.Config.CheckCSPRefresh.indexOf(t);SYNO.SDS.Config.CheckCSPRefresh.splice(r,1),SYNO.SDS.AppLaunch(t,e,i,s,n)}else window.location.href="/"},this);if(e&&e.className&&(p=e.className),!SYNO.SDS.StatusNotifier.isAppEnabled(p)||!SYNO.SDS.StatusNotifier.isAppLaunchable(p))return void(s&&s(null));if("url"===c.type||"standalone"===c.type&&!_S("standalone")||"legacy"===c.type&&"url"===c.urlDefMode)return void SYNO.SDS.WindowLaunch(t,e,!_S("rewriteApp")&&"url"!==c.type);if("standalone"!==c.type&&"app"!==c.type&&"legacy"!==c.type)return void SYNO.Debug.error(t+" is not app type.");if(SYNO.SDS.WindowMgr&&SYNO.SDS.WindowMgr.allHided)return SYNO.SDS.WindowMgr.toggleAllWin(),void SYNO.SDS.AppLaunch.defer(1e3,this,arguments);if(SYNO.SDS.WindowMgr&&SYNO.SDS.WindowMgr.exposeMask)return SYNO.SDS.WindowMgr.exposeWindow(),void SYNO.SDS.AppLaunch.defer(1e3,this,arguments);e=e||{},Ext.isString(e)&&(e=Ext.urlDecode(e)),i=i&&(c.allowMultiInstance||!1);let f=Promise.resolve();if(g=c.loadingCnt||0,x=_(),!(v=c.allowMultiInstance?c.maxInstance||0:1)||v>g+x){var g,x,v;if(_S("standalone")||!0===c.hideTaskBtn||!Ext.isDefined(c.appWindow)||!i&&(_()||c.loadingCnt)||(f=SYNO.SDS.TaskBar.addTaskButton({appName:t,windowName:c.appWindow})),Ext.isNumber(c.loadingCnt)||(c.loadingCnt=0),c.loadingCnt++,_S("standalone")){var y=SYNO.SDS.Config.FnMap[SYNO.SDS.Session.standaloneAppName].config,T=s,w=SYNO.SDS.Desktop.getEl(),b=["sds-window-v5","sds-window-init-loading","sds-standalone-desktop"];y&&Ext.isString(y.desktopcls)&&b.push(y.desktopcls),w.addClass(b),y&&!0!==y.preventDesktopMask&&w.mask&&w.mask(_T("common","loading"),"x-mask-loading x-standalone-loading"),s=function(){T&&T.call(n||window)}}return Promise.all([SYNO.SDS.JSLoadPromise(t),f.then(t=>{t&&(t.setState("loading"),d=t)})]).then(m)}{const t=function(){var t=h||S();if(t)return t.open(e),SYNO.SDS.SetVueInstParam(t,e),t}();s&&s.call(n||window,t)}},Ext.define("SYNO.SDS.Utils.Notify.Badge",{extend:"Ext.BoxComponent",badgeNum:0,alignPos:"br-br",alignOffset:[0,0],badgeClassName:"sds-application-notify-badge-num",badgeHeight:20,badgeWidth:20,disableAnchor:!1,hideNum:!0,constructor:function(t){(t=t||{}).badgeClassName&&t.badgeClassName!=this.badgeClassName&&(this.badgeHeight=10,this.badgeWidth=10),this.callParent([t]),this.alignOffset&&(this.oriAlignOffset=this.alignOffset.slice(0))},onRender:function(t,e){this.container.badgeEl||(this.el=new Ext.Element(document.createElement("div")),this.el.id=Ext.id(),this.container.badgeEl=this.el,this.el.addClass(this.badgeClassName)),this.setNum(this.badgeNum),this.callParent([t,e]),this.updateBadgePos()},afterRender:function(){this.callParent(arguments),this.updateBadgePos()},bounceBadge:function(){0!==this.badgeNum&&(this.isBouncing=!0,Ext.isIE9m?(this.orgX=this.el.getX(),this.orgY=this.el.getY(),this.el.shift({x:this.orgX,y:this.orgY-8,duration:0,opacity:.3}),this.el.shift({width:this.badgeWidth,height:this.badgeHeight,x:this.orgX,y:this.orgY,easing:"bounceOut",duration:.6,opacity:1,callback:function(){this.isBouncing=!1},scope:this})):(this.el.setStyle("opacity",1),this.el.addClass("bounce-effect"),Ext.defer(function(){this.el.removeClass("bounce-effect"),this.isBouncing=!1},1e3,this)))},setNum:function(t){var e,i=this.badgeNum;this.el&&(t=t||0,this.badgeNum=t,!this.hideNum&&this.el&&(t>99?(t=100,e=100):e=t,Math.min(i,100)!==t&&this.el.update(e)),this.setBadgeVisible(t>0),i!==t&&(this.el.setARIA({role:"presentation",label:t>0?String.format(_T("notification","accessible_unread_messages"),this.badgeNum):""}),this.bounceBadge()))},setNumWithAutoPos:function(t){this.alignOffset[0]=t<10?this.oriAlignOffset[0]+2:t<100?this.oriAlignOffset[0]+6:this.oriAlignOffset[0]+10,this.setNum(t)},setBadgeVisible:function(t){this.el.setStyle("opacity",t?1:0)},updateBadgePos:function(){!this.el||this.isBouncing||this.disableAnchor||this.el.anchorTo(this.container,this.alignPos,this.alignOffset)}}),Ext.namespace("SYNO.SDS.ActionPrivilege"),SYNO.SDS.ActionPrivilege.isUserHasPrivilege=function(t){return!!_S("is_admin")||!!(SYNO.SDS.ActionPrivilege.AllowList&&0{this._socket.emit("ready")}),this._socket.on("connect_error",this.onConnectError.bind(this)),this._socket.on("error",this.onError.bind(this)),this._socket.on("collect_event",this.onCollectEvent.bind(this))}disconnect(){this._socket.connected&&this._socket.disconnect()}_compositeSDKEventName(t){return`SDK:${t}`}_compositeWebAPIEventName(t){let{api:e,method:i,version:s,custom:n}=t,o=`${e}:${s}:${i}`;return n&&(o+=`:${n}`),o}registerJsFile(t){this._socket.on("_js_file",t)}onConnectError(t){this.autoSwitchToStandaloneMode&&!this.standaloneMode?(this._socket.disconnect(),this.connect({isGuest:this.isGuest,standaloneMode:!0})):SYNO.Debug.error(t)}onError(t){SYNO.Debug.error(t)}onCollectEvent(t,e){this.eventsTable[t]&&this.eventsTable[t].size>0&&this._socket.emit("listening_event",t,e)}checkSystemError(t){if(!t||!t.error)return!1;let e;switch(t.error.code){case 107:e="relogin";break;case 119:if(SYNO.SDS.HandShake.IsSupport())break;e="unauth";break;case 106:if(SYNO.SDS.HandShake.IsSupport())break;case 125:e="timeout";break;case 150:e="errorip"}return SYNO.SDS.Utils.CheckServerErrorString(e)}requestWebAPI(t){if(SYNO.SDS.HandShake.cred){t.params||(t.params={});let e=SYNO.SDS.HandShake.cred.GetRequestHash();e&&Object.assign(t.params,{SynoHash:e})}return new Promise((e,i)=>{this._socket.emit("request_webapi",t.api,t.version,t.method,t.params,s=>{let n=s.success,o=s.data;n||(o=s.error),SYNO.API.CheckResponse(n,o,t,s)&&!this.checkSystemError(s)?e(s):i(s)})})}register(t,e,i){let s="";if(isString(t))s=this._compositeSDKEventName(t);else{if(i){const i="[Socket] "+t.api+" :"+t.method;SYNO.Debug.mark(i),this.requestWebAPI(t).then(t=>{e(t),SYNO.Debug.measure(i)})}s=this._compositeWebAPIEventName(t)}this.eventsTable[s]||(this.eventsTable[s]=new Set),this.eventsTable[s].add(e),this._socket.on(s,e)}unregister(t,e){let i="";i=isString(t)?this._compositeSDKEventName(t):this._compositeWebAPIEventName(t),this.eventsTable[i]&&(this.eventsTable[i].delete(e),0===this.eventsTable[i].size&&delete this.eventsTable[i]),this._socket.off(i,e)}registerSDKEvent(t,e){SYNO.Assert(isString(t)),this.register(t,e,!1)}registerWebAPIEvent(t,e,i){SYNO.Assert(isObject(t)),this.register(t,e,i)}get on(){return this.register}get un(){return this.unregister}},window.__TEST__&&(module.exports=SYNO.SDS.Socket),window.__TEST__?window.SYNO={SDS:{}}:(Ext.namespace("SYNO.SDS.APIPollingSocket.Create"),Ext.namespace("SYNO.SDS.APIPollingSocket.Destroy"));class APIPollingSocket{constructor(t,e,i,s,n){this._taskId=t,this._eventKey=e,this._eventHandler=i,this._timeout=1e3*s,this._timeoutHandler=n,this._recyclers=[],this._alive=!0,this._eventApiObj={api:"SYNO.Entry.SocketIo",method:"emit",version:1,custom:getEventName(t,e)};const o=this._socketEventHandler.bind(this);this._taskEventListener=SYNO.SDS.SocketInst.register(this._eventApiObj,o,!1),this._recyclers.push(()=>{null!==this._taskEventListener&&SYNO.SDS.SocketInst.unregister(this._eventApiObj,o),this._taskEventListener=null}),this._baseEventApiObj={api:"SYNO.Entry.SocketIo",method:"emit",version:1,custom:getBaseEventName(t)},this._taskBaseEventListener=SYNO.SDS.SocketInst.register(this._baseEventApiObj,o,!1),this._recyclers.push(()=>{null!==this._taskBaseEventListener&&SYNO.SDS.SocketInst.unregister(this._baseEventApiObj,o),this._taskBaseEventListener=null});const r=this._socketTimeoutHandler.bind(this);this._timeoutEventListener=window.setTimeout(r,this._timeout),this._recyclers.push(()=>{null!==this._timeoutEventListener&&window.clearTimeout(this._timeoutEventListener),this._timeoutEventListener=null})}_destroy(){this._alive=!1,this._recyclers.forEach(t=>{t()})}_socketEventHandler(t){this._alive&&(this._eventHandler(t.status,t.data),this._maintainSocketEventStat(t.status))}_maintainSocketEventStat(t){switch(t){case"running":return void this._updateTimeout();case"finish":case"stop":return void this._destroy();default:return}}_socketTimeoutHandler(){this._alive&&(this._timeoutHandler&&this._timeoutHandler()?this._updateTimeout():this._destroy())}_updateTimeout(){window.clearTimeout(this._timeoutEventListener);const t=this._socketTimeoutHandler.bind(this);this._timeoutEventListener=window.setTimeout(t,this._timeout)}}SYNO.SDS.APIPollingSocket.Create=((t,e,i,s=60,n=null)=>new APIPollingSocket(t,e,i,s,n)),SYNO.SDS.APIPollingSocket.Destroy=(t=>{t._destroy()}),window.__TEST__&&(module.exports={Create:SYNO.SDS.APIPollingSocket.Create,Destroy:SYNO.SDS.APIPollingSocket.Destroy}),Ext.define("SYNO.SDS._System",{extend:"Ext.Component",isDifferentNode:!1,nodeData:{},winList:[],Reboot:function(){SYNO.SDS.System.RebootWithMsg()},RebootWithNode:function(t){this.nodeData=t,this.isDifferentNode=t&&t.isDifferentNode;var e="ha"==this.nodeData.node?this.nodeData.msg.reboot.ha:"active"==this.nodeData.node?this.nodeData.msg.reboot.active:this.nodeData.msg.reboot.passive;SYNO.SDS.System.RebootMsgBox(e)},RebootWithMsg:function(t){var e=SYNO.SDS.System;"yes"!==_D("support_dual_head","no")?_S("manage_pw_btn_in_ha_pkg")?e._launchHA():_S("ha_support_pw_btn")?SYNO.SDS.RebootPowerOff.HAShow(this,"reboot",function(t){var e={isDifferentNode:!1,node:"ha",type:"reboot",msg:t.msg,can_switchover:t.can_switchover};SYNO.SDS.System.RebootWithNode(e)}):SYNO.SDS.System.RebootMsgBox(t):e._launchAHA()},_closeAllWin:function(){this.winList.forEach(t=>{t.close()})},_showDesktop(){this._closeAllWin(),SYNO.SDS.Desktop.show()},openMsgBox:function(t,e){var i=SYNO.SDS.WindowMgr.getMsgBox(t,e,{containerEl:document.body,sharedMask:!0});return this.winList.push(i),i},RebootMsgBox:function(t){var e=SYNO.SDS.System;SYNO.SDS.Desktop.hide(),this.openMsgBox().confirm("",t||_JSLIBSTR("uicommon","reboot_warn")).then(t=>{"confirm"===t?e._rebootSystem(!1):e._showDesktop()})},PowerOff:function(){SYNO.SDS.System.PowerOffWithMsg()},PowerOffWithNode:function(t){this.nodeData=t,this.isDifferentNode=t&&t.isDifferentNode;var e="ha"===this.nodeData.node?this.nodeData.msg.shutdown.ha:"active"==this.nodeData.node?this.nodeData.msg.shutdown.active:this.nodeData.msg.shutdown.passive;SYNO.SDS.System.PowerOffMsgBox(e)},PowerOffWithMsg:function(t){var e=SYNO.SDS.System;"yes"!==_D("support_dual_head","no")?_S("manage_pw_btn_in_ha_pkg")?e._launchHA():_S("ha_support_pw_btn")?SYNO.SDS.RebootPowerOff.HAShow(this,"reboot",function(t){var e={isDifferentNode:!1,node:"ha",type:"poweroff",msg:t.msg,can_switchover:t.can_switchover};SYNO.SDS.System.PowerWithNode(e)}):SYNO.SDS.System.PowerOffMsgBox(t):e._launchAHA()},PowerOffMsgBox:function(t){var e=SYNO.SDS.System;SYNO.SDS.Desktop.hide(),this.openMsgBox().confirm("",t||_JSLIBSTR("uicommon","shutdown_warn")).then(t=>{"confirm"===t?e._shutdownSystem(!1):e._showDesktop()})},WaitForBootUp:function(){SYNO.SDS.Desktop.hide(),SYNO.SDS.System._rebootSystem(!1,!1,!0,!1)},Logout:function(){SYNO.SDS.StatusNotifier.fireEvent("logout"),window.onbeforeunload=SYNO.SDS.onBasicBeforeUnload;try{SYNO.SDS.Utils.Logout.action()}catch(t){}},FirmwareUpgradeReboot:function(){var t=SYNO.SDS.System;"yes"!==_D("support_dual_head","no")?(SYNO.SDS.Desktop.hide(),_S("ha_support_pw_btn")&&(this.nodeData={isDifferentNode:!1,node:"ha",type:"reboot"},this.isDifferentNode=this.nodeData&&this.nodeData.isDifferentNode),t._rebootSystem(!1,void 0,void 0,!0)):SYNO.SDS.AppLaunch("SYNO.SDS.AHA.Instance",{action:"reboot_cluster",firmware_upgrade:!0})},_launchHA:function(){this.openMsgBox().confirm("",_TT("SYNO.SDS.HA.Instance","ui","warning_forbid_power_option")).then(t=>{"confirm"===t&&SYNO.SDS.AppLaunch("SYNO.SDS.HA.Instance")})},_launchAHA:function(){this.openMsgBox().confirm("",_TT("SYNO.SDS.AHA.Instance","uicommon","warning_forbid_power_option")).then(t=>{"yes"===t&&SYNO.SDS.AppLaunch("SYNO.SDS.AHA.Instance")})},_waitHAStatus:function(){var t=this,e=t.addTask({interval:5e3,run:function(){t.sendWebAPI({api:"SYNO.SHA.Panel.Overview",version:1,method:"load",scope:this,callback:function(i,s,n){i&&s?!0!==s.ha.passive_is_rebooting_triggered_by_webapi&&!0!==s.ha.passive_is_shutting_down_triggered_by_webapi&&"desc_passive_offline"!==s.ha.description[0]||(t._showDesktop(),e.stop()):e.stop()}})}}).start()},_rebootSystem:function(t,e,i,s){var n,o=!0===i?_T("login","error_system_getting_ready"):_JSLIBSTR("uicommon","system_reboot").replace(/_DISKSTATION_/g,_D("product"));this.isDifferentNode?o=_TT("SYNO.SDS.HA.Instance","ui","rebooting_"+this.nodeData.node):_S("ha_support_pw_btn")&&"active"===this.nodeData.node&&this.nodeData.can_switchover&&"poweroff"===this.nodeData.type&&(o=this.nodeData.msg.shutting_down.active),this.openMsgBox().wait(o),n=!1===t&&!1===e?"skip_cmd":"reboot",_S("ha_support_pw_btn")&&"poweroff"===this.nodeData.type&&"active"===this.nodeData.node&&this.nodeData.can_switchover&&(n="shutdown"),s=s||!1,this._haltSystem(n,t,s,function(){var t,e=0,i=1;this.isDifferentNode?this._waitHAStatus():("skip_cmd"===n&&(e=1),_S("ha_support_pw_btn")&&(i=1),t=this.addAjaxTask({preventHalt:!0,interval:5e3,autoJsonDecode:!0,url:"webman/pingpong.cgi",startTime:(new Date).getTime(),timeLimit:6e5,quickConnectTimeout:15e3,scope:this,success:function(s,n){var o=(new Date).getTime();SYNO.SDS.QuickConnect.Utils.isInTunnel()&&o-n.startTime>n.quickConnectTimeout&&e<=0&&(e=i),ei.timeLimit&&(this.openMsgBox().alert("",_JSLIBSTR("uicommon","system_reboot_timeout").replace(/_DISKSTATION_/g,_D("product")),void 0,{useHtml:!0}),i.timeoutNotified=!0),e++}}).start())},this)},_shutdownSystem:function(t,e){if(!this.isDifferentNode){if(_S("ha_support_pw_btn")&&"active"===this.nodeData.node&&this.nodeData.can_switchover)return this._rebootSystem(t);this.openMsgBox().alert("",_JSLIBSTR("uicommon","system_poweroff").replace(/_DISKSTATION_/g,_D("product")),{confirm:{text:null},cancel:{text:null}})}this._haltSystem("shutdown",t,!1,function(){if(this.isDifferentNode)return this.openMsgBox().wait(_TT("SYNO.SDS.HA.Instance","ui","shutting_down_"+this.nodeData.node+"_desc")),void this._waitHAStatus()},this)},_confirmCache:function(){if(!1!==SYNO.SDS.UserSettings.getProperty("Personal","cacheShutdownQuery")){var t=this,e=Vue.extend({template:'\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t',data(){var t=' '+_T("volume","storage_manager")+" ";return{checked:!1,msg:String.format(_T("volume","cache_shutdown_warn"),t)}},methods:{doConfirm(){return this.checked&&(SYNO.SDS.UserSettings.setProperty("Personal","cacheShutdownQuery",!1),SYNO.SDS.UserSettings.syncSave()),this.$refs.win.close(),t._shutdownSystem(!0),Promise.resolve("confirm")},doCancel:()=>(t._showDesktop(),Promise.resolve("cancel")),onClickLink(){SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance",{fn:"SYNO.SDS.StorageManager.SsdCache.Main"}),this.$refs.win.close(),t._showDesktop()}}});this.openMsgBox(e).confirm("","",{confirm:{text:_T("volume","cache_shutdown")}})}else this._shutdownSystem(!0)},_haltSystem:function(t,e,i,s,n){if("skip_cmd"!==(t=t||"reboot")){var o="SYNO.Core.System",r=t,a={force:!!e,local:!0,firmware_upgrade:!!i,cache_check_shutdown:"shutdown"===t};_S("ha_support_pw_btn")&&(o="SYNO.SHA.Panel.Action",r="active"===this.nodeData.node?t+"_active":"ha"===this.nodeData.node?t+"_ha":t+"_passive",a.mode=r,a.is_skip_soft=e),SYNO.API.Request({api:o,method:r,version:_S("ha_support_pw_btn")?1:2,relay_node:this.nodeData.node,params:a,callback:function(e,o){var r="reboot"===t?_T("system","running_tasks_confirm_reboot"):_T("system","running_tasks_confirm_shutdown");if(_S("ha_support_pw_btn")&&e&&!1===o.success){var a=SYNO.SDS.HA.GenErrMsg(o.errinfo,this);this.openMsgBox().alert("",a).then(()=>this._showDesktop())}else{var l=o.errors;if(!1===e&&l.blockingTasks){var c=this.getTasks(l.blockingTasks);this.openMsgBox(SYNO.SDS.SystemFeasibilityWindow,{actionStrs:c,desc:_T("system","running_tasks_warning")}).alert(_T("system","feasibility_hardcheck_reboot_shutdown")).then(()=>{this._showDesktop()})}else{if(!1===e&&l.runningTasks){var d,u=l.runningTasks,h=u.findIndex(t=>"volume:cache_shutdown_warn"===t.task_i18n),p=h>=0;return p&&u.splice(h,1),void(0{"confirm"===e?"shutdown"===t?p?this._confirmCache():this._shutdownSystem(!0):this._rebootSystem(!0,void 0,void 0,i):this._showDesktop()})):"shutdown"===t?this._confirmCache():this._rebootSystem(!0,void 0,void 0,i))}this._beforeHaltSystem(s,n)}}},scope:this})}else this._beforeHaltSystem(s,n)},CountCharInStr:function(t,e){var i=0,s=0;for(s=0;s=0)if(e=s.split(":"),1===this.CountCharInStr(s,":"))s=0===_T(e[0],e[1]).length?_JSLIBSTR(e[0],e[1]):_T(e[0],e[1]);else{if(2!==this.CountCharInStr(s,":"))return!0;s=_TT(e[0],e[1],e[2])}s=s.replace(/\{(\d+)\}/g,(t,e)=>n[e]?n[e]:""),i.push(s)},this),i},_beforeHaltSystem:function(t,e){this.isDifferentNode||(SYNO.SDS.StatusNotifier.fireEvent("halt"),window.onbeforeunload=null),t&&t.apply(e)}}),Ext.define("SYNO.SDS.Utils.Logout",{statics:{logoutTriggered:!1,reserveQueryString:!1,action:function(t,e,i,s,n,o){this.logoutTriggered||(!0===i&&(SYNO.SDS.Desktop&&SYNO.SDS.Desktop.hide(),Ext.getBody().mask().addClass("desktop-timeout-mask")),this.logout(t,e,s,n,o))},showMessage:function(t){return new Promise(function(e,i){Ext.isDefined(t)?(Ext.getBody().unmask(),Ext.getClassByName("SYNO.SDS.StatusNotifier")&&SYNO.SDS.StatusNotifier.fireEvent("halt"),this.openMsgBox().alert("",t).then(()=>e())):e()})},logout:function(t,e,i,s,n){var o=this,r=function(){!0===t&&(window.onbeforeunload=null),!1!==i&&"azure_sso"===Ext.util.Cookies.get("login_type")&&SYNO.SDS.AzureSSOUtils.logout(),SYNO.SDS.HandShakeCrPoSt.Set({currentLoginUser:"",_HSID:""}),Ext.isSafari&&Ext.isMac?o.redirect(i,n).defer(300,o):o.redirect(i,n)};o.logoutTriggered=!0,SYNO.SDS.SocketInst&&SYNO.SDS.SocketInst.disconnect(),s?r.apply(this):o.showMessage(e).then(r.bind(o),r.bind(o)).catch(r.bind(o))},setConfig:function(t){Ext.apply(SYNO.SDS.Utils.Logout,t)},doRefresh:function(){if(SYNO.SDS.Utils.Logout.reserveQueryString)window.location.reload(!0);else{var t=window.location.href;window.location.href=window.location.pathname,t===window.location.href&&window.setTimeout(function(){window.location.reload(!0)},100)}},doLogout:function(t){synowebapi.request({url:"webapi/entry.cgi?api=SYNO.API.Auth",requestFormat:"raw",responseFormat:"raw",method:"GET",params:{version:7,method:"logout"},scope:this,callback:function(){window.sessionStorage&&t&&window.sessionStorage.setItem("errCode",t),this.doRefresh()}})},redirect:function(t,e){var i=this;if(!1===t){var s=new XMLHttpRequest;s.onreadystatechange=function(){if(4===s.readyState){if(200===s.status)if(!0===JSON.parse(s.response).success)return void i.doRefresh();i.doLogout(e)}},s.open("POST","webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=token",!0),s.send()}else i.doLogout(e)}}}),SYNO.SDS.Utils.CheckServerErrorString=function(t,e){let i,s,n=!0,o=!1;if(t&&Ext.isEmpty(e)){switch(t=Ext.util.Format.trim(t)){case"timeout":i=_JSLIBSTR("uicommon","error_timeout"),n=!1,o=!0,s=106;break;case"unauth":i=_JSLIBSTR("uicommon","error_unauth"),n=!1,o=!0,s=119;break;case"noprivilege":i=_JSLIBSTR("uicommon","error_noprivilege");break;case"relogin":i=_JSLIBSTR("uicommon","error_relogin");break;case"errorip":i=void 0;break;default:i=_JSLIBSTR("uicommon","error_system")}return SYNO.SDS.Utils.Logout.action(!0,i,!0,n,o,s),!0}return!1},SYNO.SDS.Utils.CheckServerError=function(t){var e,i;if(!t||!t.getResponseHeader)return!1;try{e=t.getResponseHeader("x-request-error")||t.getResponseHeader("X-Request-Error")}catch(i){e=t.getResponseHeader["x-request-error"]||t.getResponseHeader["X-Request-Error"]}try{i=t.getResponseHeader("X-SYNO-SOURCE-ID")}catch(t){i=void 0}return!1!==SYNO.SDS.HandShake.CheckServerError(t)&&SYNO.SDS.Utils.CheckServerErrorString(e,i)},Ext.define("SYNO.ux.MessageComboBox",{extend:"SYNO.ux.ComboBox",listClass:"syno-ux-combobox-list syno-ux-message-combobox-list",constructor:function(t){var e,i;this.displayField=t.displayField||"display",this.descriptionField=t.descriptionField||"description",i='ext:qtip="{'+this.descriptionField+':htmlEncode}"',e={tpl:new Ext.XTemplate('',"
',"
{'+this.displayField+"}
","
{'+this.descriptionField+"}
","
","
")},this.callParent([Ext.apply(e,t)])}}),Ext.reg("syno_message_combobox",SYNO.ux.MessageComboBox),Ext.define("SYNO.ux.StorageComboBox",{extend:"SYNO.ux.MessageComboBox",constructor:function(){SYNO.Debug.warn("+++ SYNO.ux.StorageComboBox (syno_storage_combobox) is deprecated, please use SYNO.ux.MessageComboBox (syno_message_combobox) instead."),this.callParent(arguments)}}),Ext.reg("syno_storage_combobox",SYNO.ux.StorageComboBox),Ext.ns("SYNO.SDS.Utils"),SYNO.SDS.Utils.getPunyHostname=function(){var t,e=[],i=location.hostname.split(".");for(t=0;t>1,o+=Math.floor(o/r),l=0;o>(t-i)*s>>1;l+=t)o=Math.floor(o/(t-i));return Math.floor(l+(t-i+1)*o/(o+n))}return{decode:function(e,n){var r,a,c,d,u,h,p,_,S,m,f,g,x,v,y=[],T=[],w=e.length;for(r=128,c=0,d=72,(u=e.lastIndexOf("-"))<0&&(u=0),h=0;h=128)throw new RangeError("Illegal input >= 0x80");y.push(e.charCodeAt(h))}for(p=u>0?u+1:0;p=w)throw new RangeError("punycode_bad_input(1)");if((f=(v=e.charCodeAt(p++))-48<10?v-22:v-65<26?v-65:v-97<26?v-97:t)>=t)throw new RangeError("punycode_bad_input(2)");if(f>Math.floor((o-c)/S))throw new RangeError("punycode_overflow(1)");if(c+=f*S,f<(g=m<=d?i:m>=d+s?s:m-d))break;if(S>Math.floor(o/(t-g)))throw new RangeError("punycode_overflow(2)");S*=t-g}if(d=l(c-_,a=y.length+1,0===_),Math.floor(c/a)>o-r)throw new RangeError("punycode_overflow(3)");r+=Math.floor(c/a),c%=a,n&&T.splice(c,0,e.charCodeAt(p-1)-65<26),y.splice(c,0,r),c++}if(n)for(c=0,x=y.length;c65535&&(e-=65536,i.push(String.fromCharCode(e>>>10&1023|55296)),e=56320|1023&e),i.push(String.fromCharCode(e))}return i.join("")}(y)},encode:function(e,n){var c,d,u,h,p,_,S,m,f,g,x,v;n&&(v=r(e));var y=(e=r(e.toLowerCase())).length;if(n)for(_=0;_=c&&xMath.floor((o-d)/(u+1)))throw new RangeError("punycode_overflow (1)");for(d+=(S-c)*(u+1),c=S,_=0;_o)return Error("punycode_overflow(2)");if(x==c){for(m=d,f=t;!(m<(g=f<=p?i:f>=p+s?s:f-p));f+=t)k.push(String.fromCharCode(a(g+(m-g)%(t-g),0))),m=Math.floor((m-g)/(t-g));k.push(String.fromCharCode(a(m,n&&v[_]?1:0))),p=l(d,u+1,u==h),d=0,++u}}++d,++c}return b+k.join("")}}}(),Ext.namespace("SYNO.SDS.Utils.StorageUtils"),SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB=1073741824,SYNO.SDS.Utils.StorageUtils.ISCSIVAAILUN_EP_SIZE=function(t){var e;return e=(t/4096+62)/63,512*(e=Math.floor(e))+1048576},SYNO.SDS.Utils.StorageUtils.SpaceIDParser=function(t){var e=t.split("_"),i="",s="",n="",o="";if("hotspare"===t)return{type:"hotspare",num:"",str:_T("volume","volume_hot_spare")};if("system"===t)return{type:"system",num:"",str:_T("volume","system_title")};if(t.startsWith("alloc_cache_")){if(4!=e.length)return"";i="alloc_cache",s=e[2],n=e[3]}else if(t.startsWith("shared_cache_")){if(3!=e.length)return"";i="shared_cache",s=e[2]}else{if(2!=e.length)return"";i=e[0],s=e[1]}switch(i){case"pool":case"reuse":o=String.format("{0} {1}",_T("volume","volume_storage_pool"),s);break;case"detected":o=String.format("{0} {1}",_T("storage_pool","pool_detected_name"),s);break;case"volume":o=String.format("{0} {1}",_T("volume","volume"),s);break;case"iscsilun":i="iscsi",o=String.format("{0} ({1})",_T("volume","volume_iscsitrg_lun"),s);break;case"virtual":o=String.format("{0} {1}",_T("volume","volume_virtual_space"),s);break;case"volumeX":i="volume",o=String.format("{0} {1} ({2})",_T("volume","volume"),s,_T("volume","volume_expansion"));break;case"ssd":o=String.format("{0} {1}",_T("volume","ssd_cache"),s);break;case"shared_cache":o=String.format("{0} {1}",_T("volume","shared_cache"),s);break;case"alloc_cache":o=String.format("{0}",_T("volume","ssd_cache"))}return{type:i,num:s,sub_num:n,str:o}},SYNO.SDS.Utils.StorageUtils.GetSizeGB=function(t,e){var i=Ext.isNumber(e),s=Math.pow(10,i?e:2),n=t/SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB,o=n;return s>1?o=Math.round(n*s)/s:1==s&&(o=Math.floor(n)),o},SYNO.SDS.Utils.StorageUtils.UiRenderHelperInitializer=function(){var t="blue-status",e="red-status",i="green-status",s={[t]:"acting",[e]:"danger",[i]:"normal","orange-status":"attention",unverified:"unverified",detected:"detected"},n=[["acting"],["danger"],["unverified","attention"],["detected"],["normal"]],o={has_fwu_disk:{text:_T("volume","volume_danger"),color:e},has_incompat_disk:{text:_T("volume","volume_danger"),color:e},has_unverified_disk:{text:_T("storage_pool","pool_status_has_unverified_disk"),color:"orange-status",level:"unverified"},normal:{text:_T("volume","volume_status_normal"),color:i},warning:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},degrade:{text:_T("volume","volume_status_degrade"),color:e},error:{text:_T("storage_pool","pool_status_error"),color:e},danger:{text:_T("volume","volume_danger"),color:e},attention:{text:_T("storage_pool","pool_status_attention"),color:"orange-status"},crashed:{text:_T("volume","volume_status_crashed"),color:e},read_only:{text:_T("volume","volume_status_ro"),color:e},not_optimized:{text:_T("storage_pool","pool_status_not_optimized"),color:"orange-status"},detected:{text:_T("storage_pool","pool_status_pool_detected"),color:t,level:"detected"},missing:{text:_T("storage_pool","pool_status_missing"),color:e},can_assemble:{text:_T("storage_pool","pool_status_can_assemble"),color:"orange-status"},assemble_fail:{text:_T("storage_pool","pool_status_assemble_fail"),color:e},moving:{text:_T("iscsitrg","iscsitrg_status_moving"),color:t},creating:{text:_T("volume","volume_status_create"),color:t},repairing:{text:_T("volume","volume_status_repair"),color:t},passive_recreating:{text:_T("volume","volume_status_repair"),color:t},replacing:{text:_T("volume","volume_status_replace"),color:t},expanding:{text:_T("volume","volume_status_expand"),color:t},migrating:{text:_T("volume","volume_status_upgrade"),color:t},assembling:{text:_T("storage_pool","pool_status_assembling"),color:t},migrate_to_shr2:{text:_T("volume","volume_status_upgrade"),color:t},convert_shr_to_pool:{text:_T("storage_pool","pool_status_convert_shr_to_pool"),color:t},adding_disk:{text:_T("volume","volume_status_add_disk"),color:t},deleting:{text:_T("volume","volume_status_delete"),color:t},deactivating:{text:_T("storage_pool","pool_status_deactivating"),color:t},raid_syncing:{text:_T("volume","volume_status_resync"),color:t},raid_reshaping:{text:_T("volume","volume_adddisk_progress_reshape"),color:t},raid_parity_checking:{text:_T("volume","volume_status_paritycount"),color:t},background:{text:_T("volume","volume_status_background"),color:t,warningText:_T("volume","performance_degraded"),warningColor:e},background_raid_syncing:{text:_T("volume","volume_status_raid_sync"),color:t,warningText:_T("volume","performance_degraded"),warningColor:e},background_optimizing:{text:_T("volume","volume_status_optimize"),color:t,warningText:_T("volume","performance_degraded"),warningColor:e},background_scrubbing:{text:_T("volume","volume_status_scrubbing"),color:t,warningText:_T("volume","performance_degraded"),warningColor:e},expand_with_unalloc_size:{text:_T("storage_pool","pool_status_expanding"),color:t},processing:{text:_T("volume","volume_status_delayed"),color:t},offline:{text:_T("iscsitrg","iscsitrg_status_offline"),color:e},online:{text:_T("iscsitrg","iscsitrg_status_online"),color:i},connected:{text:_T("iscsitrg","iscsitrg_status_connected"),color:t},waiting:{text:_T("volume","volume_status_waiting"),color:t},mount_ssd:{text:_T("volume","volume_ssd_mounting"),color:t},umount_ssd:{text:_T("volume","volume_ssd_unmounting"),color:t},mounting_cache:{text:_T("volume","volume_mounting_cache"),color:t},unmounting_cache:{text:_T("volume","volume_unmounting_cache"),color:t},migration_device_syncing:{text:_T("volume","volume_migration_device_syncing"),color:t},unavailabling:{text:_T("iscsilun","iscsilun_vaai_lun_bad"),color:e},Healthy:{text:_T("iscsilun","healthy"),color:i},Unhealthy:{text:_T("iscsilun","unhealthy"),color:e},restoring:{text:_T("iscsilun","restoring"),color:t},cloning:{text:_T("iscsilun","cloning"),color:t},be_cloning:{text:_T("iscsilun","using"),color:t},using:{text:_T("iscsilun","using"),color:t},snapshotting:{text:_T("iscsilun","using"),color:t},snapshot_deleting:{text:_T("iscsilun","snapshot_deleting"),color:t},expand_unfinished_shr:{text:_T("volume","volume_status_expand"),color:t},disk_check:{text:_T("volume","volume_status_check_disk"),color:t},data_scrubbing:{text:_T("volume","do_data_scrubbing"),color:t},fs_scrubbing:{text:_T("volume","do_fs_scrubbing"),color:t,warningText:_T("volume","performance_may_degraded"),warningColor:e},defrag:{text:_T("volume","do_fs_defrag"),color:t,warningText:_T("volume","performance_may_degraded"),warningColor:e},dedupe:{text:_T("btrfs_dedupe","dedupe_manually_dedupe_running"),color:t,warningText:_T("volume","performance_may_degraded"),warningColor:e},dedupe_dry_run:{text:_T("btrfs_dedupe","dedupe_analysis_running"),color:t,warningText:_T("volume","performance_may_degraded"),warningColor:e},initializing_inode_table:{text:_T("volume","initializing_inode_table"),color:t},fs_btrfs_quota_update:{text:_T("volume","quota_update_volume_status"),color:t},volume_op_fsck:{text:_T("volume","volume_status_running_fsck"),color:t},volume_op_balance:{text:_T("volume","volume_status_running_btrfs_balance"),color:t},ssd_trimming:{text:_T("volume","volume_ssd_trimming"),color:t,warningText:_T("volume","volume_ssd_trimming_warn"),warningColor:t},space_missing:{text:_T("volume","space_missing"),color:e},cache_missing:{text:_T("volume","cache_missing"),color:e},no_action:{text:_T("data_scrubbing","no_action"),color:i},has_not_run_yet:{text:_T("data_scrubbing","has_not_run_yet"),color:i},done:{text:_T("data_scrubbing","done"),color:i},pending:{text:_T("data_scrubbing","pending"),color:t},wait_for_another_task:{text:_T("data_scrubbing","wait_for_another_task"),color:i},paused:{text:_T("data_scrubbing","paused"),color:"orange-status"},schedule_on:{text:_T("data_scrubbing","schedule_on"),color:i},last_run_on:{text:_T("data_scrubbing","last_run_on"),color:i},abnormal:{text:_T("data_scrubbing","abnormal"),color:e},wait_for_another_operation:{text:_T("data_scrubbing","wait_for_another_operation"),color:t},schedule_paused:{text:_T("data_scrubbing","schedule_paused"),color:"orange-status"},schedule_disabled:{text:_T("data_scrubbing","schedule_disabled"),color:"orange-status"},schedule_running:{text:_T("data_scrubbing","schedule_running"),color:t},manual_running:{text:_T("data_scrubbing","manual_running"),color:t},kernel_running:{text:_T("data_scrubbing","kernel_running"),color:t},not_support_scrubbing:{text:_T("data_scrubbing","not_support_scrubbing"),color:"orange-status"},cache_rw_degrade:{text:_T("volume","volume_status_degrade"),color:e},cache_rw_degrade_with_apm:{text:_T("volume","volume_status_degrade"),color:e},cache_unsafe_crashed:{text:_T("volume","volume_status_crashed"),color:e},cache_unsafe_crashed_read_only:{text:_T("volume","volume_status_ro"),color:"orange-status"},cache_repairing:{text:_T("volume","volume_status_repair"),color:t},cache_adding_drive:{text:_T("volume","shared_cache_add_drive"),color:t},cache_deleting:{text:_T("volume","volume_unmounting_cache"),color:t},enable_btrfs_free_space_tree:{text:_T("volume","volume_enable_btrfs_free_space_tree"),color:t},metadata_cache:{text:_T("volume","metadata_cache_preload_progress"),color:t},resize_filesystem:{text:_T("volume","volume_status_expand_fs"),color:t}},r={deploy:_T("volume","volume_status_create_fs"),mk_filesystem:_T("volume","volume_status_create_fs"),resize_filesystem:_T("volume","volume_status_expand_fs"),initializing_inode_table:_T("volume","initializing_inode_table"),disk_initialize:_T("volume","volume_status_init_disk"),raid_syncing:_T("volume","volume_status_processing"),data_scrubbing:_T("volume","volume_status_processing"),fs_scrubbing:_T("volume","do_fs_scrubbing"),defrag:_T("volume","do_fs_defrag"),raid_reshaping:_T("volume","volume_status_processing"),raid_parity_checking:_T("volume","volume_status_processing"),finalize:_T("volume","volume_status_finalize_vol"),stop_services:_T("volume","volume_status_stop_services"),start_services:_T("volume","volume_status_start_services"),disk_check:_T("volume","volume_status_check_disk"),umount_volume:_T("volume","volume_unmount_volume"),mount_volume:_T("volume","volume_mount_volume"),stop_iscsi:_T("iscsilun","iscsilun_stop_iscsi_service"),start_iscsi:_T("iscsilun","iscsilun_start_iscsi_service"),stop_pool:_T("volume","volume_stop_raid"),start_pool:_T("volume","volume_start_raid"),allocate_space:_T("volume","volume_allocate_space"),waiting:_T("volume","volume_status_waiting"),flushing:_T("volume","ssd_cache_flushing"),enable_btrfs_free_space_tree:_T("volume","volume_status_enable_btrfs_free_space_tree"),join_system:_T("volume","volume_status_init_disk"),raid_expand_resync:_T("storage_pool","pool_status_expanding"),none:""},a=function(t){var e={},i=1,s=_T("common","size_byte");return t>=1099511627776?(i=1099511627776,s=_T("common","size_tb")):t>=1073741824?(i=1073741824,s=_T("common","size_gb")):t>=1048576?(i=1048576,s=_T("common","size_mb")):t>=1024?(i=1024,s=_T("common","size_kb")):(i=1,s=_T("common","size_byte")),e.unit=i,e.strUnit=s,e},l={media:_T("tree","leaf_mediaservice"),itunes:_T("tree","leaf_itunes"),audio:_T("tree","leaf_audio"),photo:_T("tree","leaf_photo"),netbkp:_T("tree","leaf_netbkp"),web:_T("tree","leaf_web"),download:_T("tree","node_download"),mysql:_T("tree","leaf_mysql"),surveillance:_T("tree","leaf_surveillance"),userhome:_T("user","user_home")},c={media:void 0,audio:"SYNO.SDS.AudioStation.Application",itunes:void 0,photo:"SYNO.SDS.PhotoStation",web:"SYNO.SDS.WebStation",netbkp:void 0,download:"SYNO.SDS.DownloadStation",mysql:void 0,surveillance:"SYNO.SDS.SurveillanceStation",userhome:void 0,weblocal:void 0},d=String.format("({0})",_T("volume","volume_add_tip_dataprotection")),u=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_1_disk")),h=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_2_disks")),p=String.format("({0})",_T("volume","volume_add_tip_nodataprotection")),_={shr_without_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:p},shr_with_1_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:u},shr_with_2_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:h},basic:{text:_T("volume","volume_generalhd"),tip:p},raid_linear:{text:_T("volume","volume_type_linear"),tip:p},raid_0:{text:_T("volume","volume_type_raid_0"),tip:p},raid_1:{text:_T("volume","volume_type_raid_1"),tip:d},raid_5:{text:_T("volume","volume_type_raid_5"),tip:d},"raid_5+spare":{text:_T("volume","volume_type_raid_5")+"+Spare",tip:d},raid_6:{text:_T("volume","volume_type_raid_6"),tip:d},raid_10:{text:_T("volume","volume_type_raid_10"),tip:d},raid_f1:{text:_T("volume","volume_type_raid_f1"),tip:d}},S={sys_partition_normal:{text:_T("volume","volume_disksysuse"),color:"green-status",tooltip:_T("volume","volume_disksysuse_tooltip")},not_use:{text:_T("volume","volume_disknotuse"),color:"green-status",tooltip:_T("volume","volume_disknotuse_tooltip")},deactivated:{text:_T("volume","volume_diskdeactivated"),color:"sm-grey-status",tooltip:_T("volume","volume_diskdeactivated_tooltip")},normal:{text:_T("volume","volume_diskinuse"),color:"green-status",tooltip:_T("volume","volume_diskinuse_tooltip")},crashed:{text:_T("volume","volume_diskfailed"),color:"red-status",tooltip:_T("volume","volume_diskfailed_tooltip")},system_crashed:{text:_T("volume","volume_diskfailedsys"),color:"red-status",tooltip:_T("volume","volume_diskfailedsys_tooltip")},rootbackup_crashed:{text:_T("volume","volume_diskfailedsys"),color:"red-status",tooltip:_T("volume","volume_diskfailedsys_tooltip")},hotspare:{text:_T("volume","volume_hot_spare"),color:"green-status",tooltip:_T("volume","volume_hot_spare_tooltip")},data_detected:{text:_T("disk_info","disk_status_data_detected"),color:"orange-status",tooltip:_T("disk_info","disk_status_data_detected")},disknotsupported:{text:_T("volume","volume_disknotsupported"),color:"orange-status",tooltip:_T("volume","volume_disknotsupported")},secure_erasing:{text:_T("disk_info","disk_secure_erasing"),color:"blue-status"},unc_warning:{text:_T("disk_info","disk_bad_sector_thr_warn"),color:"orange-status"},life_warning:{text:_T("disk_info","disk_remain_life_thr_warn"),color:"orange-status"},perf_testing:{text:_T("disk_info","disk_perf_is_testing"),color:"blue-status"}},m={normal:{text:_T("disk_info","disk_smart_status_normal"),fullText:_T("disk_info","disk_smart_status_normal"),color:"green-status"},degraded:{text:_T("disk_info","disk_smart_status_degraded"),fullText:_T("disk_info","disk_smart_status_degraded"),color:"orange-status"},warning:{text:_T("disk_info","disk_status_warning"),fullText:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),fullText:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_smart_status_failing"),fullText:_T("disk_info","disk_smart_status_failing"),color:"red-status"},unknown:{text:_T("common","not_support"),fullText:_T("disk_info","disk_smart_status_normal"),color:""},safe:{text:_T("disk_info","disk_smart_status_normal"),color:"green-status"},damage:{text:_T("smart","smart_status_abnormal"),color:"red-status"},danger:{text:_T("smart","smart_status_abnormal"),color:"red-status"},test_fail:{text:_T("smart","smart_status_test_fail"),color:"red-status"},testing:{text:_T("disk_info","smart_is_testing"),color:"blue-status"}},f={normal:{text:_T("disk_info","disk_status_normal"),color:"green-status"},warning:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_status_failing"),color:"red-status"},not_support:{text:"-",color:""},not_test:{text:_T("disk_info","disk_adv_status_not_test"),color:""},can_not_test:{text:_T("disk_info","disk_can_not_test"),color:""},can_not_test_warn:{text:_T("disk_info","disk_can_not_test"),color:"orange-status"},unknown:{text:_T("common","not_support"),color:""}},g={completed:{text:_T("volume","volume_status_normal"),color:"green-status"},none:{text:_T("smart","smart_test_log_nodata"),color:""},progress:{text:_T("smart","smart_test_log_nodata"),color:""},damage:{text:_T("disk_info","disk_smart_status_failing"),color:"red-status"},aborted:{text:_T("smart","smart_status_aborted"),color:""},interrupted:{text:_T("smart","smart_status_interrupted"),color:"orange-status"},extended_test_suggested:{text:_T("smart","smart_status_extend_suggest"),color:"orange-status"},unknown:{text:_T("smart","smart_status_unknow"),color:"red-status"}},x={normal:{text:_T("disk_info","disk_status_healthy"),color:"green-status"},unc:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},warning:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_status_failing"),color:"red-status"},disabled:{text:_T("disk_info","disk_disable_title"),color:"red-status"},unknown:{text:_T("common","not_support"),color:""}},v={idle:{text:_T("disk_info","disk_status_normal"),color:"green-status"},smart:{text:_T("disk_info","smart_is_testing"),color:"blue-status"},ihm:{text:_T("disk_info","ihm_is_testing"),color:"blue-status"},erase:{text:_T("disk_info","disk_secure_erasing"),color:"blue-status"},perf:{text:_T("disk_info","disk_perf_is_testing"),color:"blue-status"},unknown:{text:_T("common","not_support"),color:""}},y={smart_complete:{text:_T("volume","volume_status_normal"),code:"",tooltip:"",color:"green-status",type:"smart"},smart_aborted:{text:_T("smart","smart_status_aborted"),code:"",tooltip:"",color:"",type:"smart"},smart_interrupt:{text:_T("smart","smart_status_interrupted"),code:"",tooltip:"",color:"orange-status",type:"smart"},smart_damage:{text:_T("smart","smart_status_damage"),code:"",tooltip:"",color:"red-status",type:"smart"},smart_extend_suggest:{text:_T("smart","smart_status_extend_suggest"),code:"",tooltip:"",color:"orange-status",type:"smart"},ihm_000:{text:_T("disk_info","disk_status_normal"),code:"000",tooltip:_T("disk_info","disk_status_normal"),color:"green-status",type:"ihm"},ihm_100:{text:_T("disk_info","disk_status_warning"),code:"100",tooltip:_T("disk_info","disk_status_dhm_0100"),color:"orange-status",type:"ihm"},ihm_101:{text:_T("disk_info","disk_status_warning"),code:"101",tooltip:_T("disk_info","disk_status_dhm_0101"),color:"orange-status",type:"ihm"},ihm_102:{text:_T("disk_info","disk_status_warning"),code:"102",tooltip:_T("disk_info","disk_status_dhm_0102"),color:"orange-status",type:"ihm"},ihm_105:{text:_T("disk_info","disk_status_warning"),code:"105",tooltip:_T("disk_info","disk_status_dhm_0105"),color:"orange-status",type:"ihm"},ihm_106:{text:_T("disk_info","disk_status_warning"),code:"106",tooltip:_T("disk_info","disk_status_dhm_0106"),color:"orange-status",type:"ihm"},ihm_200:{text:_T("disk_info","disk_status_warning"),code:"200",tooltip:_T("disk_info","disk_status_dhm_0200"),color:"orange-status",type:"ihm"},ihm_201:{text:_T("disk_info","disk_status_warning"),code:"201",tooltip:_T("disk_info","disk_status_dhm_0200"),color:"orange-status",type:"ihm"},ihm_202:{text:_T("disk_info","disk_status_warning"),code:"202",tooltip:_T("disk_info","disk_status_dhm_0200"),color:"orange-status",type:"ihm"},ihm_203:{text:_T("disk_info","disk_status_warning"),code:"203",tooltip:_T("disk_info","disk_status_dhm_0200"),color:"orange-status",type:"ihm"},ihm_81:{text:_T("disk_info","disk_can_not_test"),code:"081",tooltip:_T("disk_info","disk_status_dhm_81"),color:"",type:"ihm"},ihm_interrupt:{text:_T("smart","smart_status_aborted"),code:"",tooltip:_T("smart","smart_status_aborted"),color:"",type:"ihm"},ihm_unknown:{text:_T("disk_info","disk_can_not_test"),code:"unknown",tooltip:_T("disk_info","disk_status_dhm_80"),color:"orange-status",type:"ihm"},ihm_not_test:{text:_T("disk_info","disk_adv_status_not_test"),code:"",tooltip:_T("disk_info","disk_adv_status_not_test"),color:"",type:"ihm"}},T={wdda_power_reset:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_power_reset"),color:"orange-status"},wdda_power_hours:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_power_hours"),color:"orange-status"},wdda_head_load:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_head_load"),color:"orange-status"},wdda_curr_temp:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_curr_temp"),color:"orange-status"},wdda_work_load:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_work_load"),color:"orange-status"},wdda_work_load_r:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_work_load_r"),color:"orange-status"},wdda_power_reset_r:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_power_reset_r"),color:"orange-status"},wdda_head_load_r:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_head_load_r"),color:"orange-status"},wdda_soft_reset:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_soft_reset"),color:"orange-status"},wdda_hard_reset:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_hard_reset"),color:"orange-status"},wdda_mech_fail:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_mech_fail"),color:"orange-status"},wdda_icrc:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_icrc"),color:"orange-status"},wdda_unc:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_unc"),color:"orange-status"},wdda_read_recovery:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_read_recovery"),color:"orange-status"},wdda_reallocate:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_reallocate"),color:"orange-status"},wdda_async:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_async"),color:"orange-status"},wdda_low_temp:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_low_temp"),color:"orange-status"},wdda_high_temp:{result:_T("disk_info","disk_status_warning"),recommend:_T("disk_info","disk_wdda_high_temp"),color:"orange-status"},unknown:{result:_T("disk_info","disk_status_unknown"),recommend:_T("disk_info","disk_contact_syno"),color:""},not_support:{result:_T("disk_info","disk_status_unsupport"),recommend:"",color:""},disabled:{result:_T("common","disabled"),recommend:"-",color:""},normal:{result:_T("disk_info","disk_status_normal"),recommend:"-",color:"green-status"}},w={disabled:{text:_T("disk_info","disk_compatibility_compatible"),tooltip:"",cls:"",color:"green-status"},unknown:{text:_T("disk_info","disk_status_unknown"),tooltip:_T("disk_info","disk_compatibility_not_in_support_status"),cls:"sm-disk-not-in-support",color:""},support:{text:_T("disk_info","disk_compatibility_compatible"),tooltip:"",cls:"",color:"green-status"},not_support:{text:_T("disk_info","disk_compatibility_incompatible"),tooltip:_T("disk_info","disk_compatibility_incompatible_status"),cls:"sm-disk-incompatible",color:"red-status"},forbidden:{text:_T("disk_info","disk_compatibility_incompatible"),tooltip:_T("disk_info","disk_compatibility_incompatible_status"),cls:"sm-disk-incompatible",color:"red-status"},not_in_support:{text:_T("disk_info","disk_compatibility_not_verified"),tooltip:_T("disk_info","disk_compatibility_not_in_support_status"),cls:"sm-disk-not-in-support",color:""},fw_upgrade_required:{text:_T("disk_info","disk_compatibility_fwupgrade_required"),tooltip:_T("disk_info","disk_compatibility_fwupgrade_required_status"),cls:"sm-disk-fwupgrade-required",color:"red-status"}},b={not_in_support:{text:_T("disk_info","disk_compatibility_unverified"),tooltip:_T("disk_info","disk_compatibility_unverified_status"),cls:"sm-disk-unverified",color:"red-status"}};return{SizeRenderWithFloor:function(t,e){e=!Ext.isNumber(e)||e<=0?1:Math.round(e);var i,s,n=Math.pow(10,e),o=0;return i=t/(s=a(t)).unit,(o=Math.floor(i*n)/n)-Math.floor(o)>0&&parseFloat(o)%1==0&&(o=parseInt(o,10)),String.format("{0} {1}",o,s.strUnit)},GetSizeUnitWithFloor:function(t,e){e=!Ext.isNumber(e)||e<=0?1:Math.round(e);var i,s,n=Math.pow(10,e),o=0;return i=t/(s=a(t)).unit,(o=Math.floor(i*n)/n)-Math.floor(o)>0&&parseFloat(o)%1==0&&(o=parseInt(o,10)),{size:o,unit:s.strUnit}},SizeRender:function(t,e){e=!Ext.isNumber(e)||e<=0?1:Math.round(e);var i,s,n=Math.pow(10,e),o=0;return i=t/(s=a(t)).unit,(o=Math.round(i*n)/n)-Math.floor(o)>0&&parseFloat(o)%1==0&&(o=parseInt(o,10)),String.format("{0} {1}",o,s.strUnit)},GetSizeUnit:function(t,e){e=!Ext.isNumber(e)||e<=0?1:Math.round(e);var i,s,n=Math.pow(10,e),o=0;return i=t/(s=a(t)).unit,(o=Math.round(i*n)/n)-Math.floor(o)>0&&parseFloat(o)%1==0&&(o=parseInt(o,10)),{size:o,unit:s.strUnit}},StatusRender:function(t,e){var i=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(t),s=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ProgressRender(e);return e&&"initializing_inode_table"===e.step?String.format("{0}...{1}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(e.step),s):s?String.format("{0}...{1}",i,s):i},LunStatusRender:function(t,e){return 0===e.percent?String.format("{0}({1})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(t),o.waiting.text):SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(t)+" "+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ProgressRender(e)},StatusNameRender:function(t,e){var i;return t in o?(i=o[t],e?i.text:String.format('{1}',i.color,i.text)):""},PlainStatusNameRender:function(t){return t in o?o[t].text:""},TimeRender:function(t,{isResyncSpeedLimited:e=!1,showSecBelowMin:i=!1}={}){var s=Math.floor(t/86400),n=Math.floor(t%86400/3600),o=Math.floor(t%86400%3600/60),r=Math.floor(t%86400%3600%60),a=1=t.total_step&&0{0}",i):""},WarningTextRender:function(t,e){var i;if(!(t in o))return"";if((i=o[t]).warningText){var s=String.format('
{1}
',i.warningColor,i.warningText);return String.format(s,e)}return""},StepNameRender:function(t){return t in r?r[t]:""},PercentRender:function(t){return"-1"==t?"":String.format("{0}%",t)},RaidLevelRender:function(t){return-1{1}',i,s):String.format("{0} {1}",i,s)},DeviceTypeRender:function(t){return t in _?_[t].text:"unknown"},ParseID:function(t){var e={id:0,location:""};return isNaN(t)&&"X"==t.charAt(0)?(e.id=t.substring(1),e.location="ebox"):(e.id=t,e.location="internal"),e},DiskIDRender:function(t){var e=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ParseID(t);return"ebox"==e.location?String.format("{0} {1} ({2})",_T("volume","volume_disk"),e.id,_T("volume","volume_expansion")):String.format("{0} {1}",_T("volume","volume_disk"),e.id)},DiskStatusRenderMap:function(t){var e=S[t];return e?{text:e.text,color:e.color}:Ext.isEmpty(t)||null===t.match("%")?{text:"",color:""}:{text:_T("disk_info","disk_secure_erasing")+": "+t,color:"blue-status"}},DiskStatusRender:function(t){var e=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskStatusRenderMap(t);return String.format('{1}',e.color,e.text)},DiskStatusTooltipRender:function(t,e,i=!1){var s=S[t];if("ssd cache"===e||Ext.isEmpty(e)||"yes"===_D("no_disk_system","no")||"yes"===_D("support_dual_head","no")){if("normal"===t)return _T("volume","volume_diskinuse_without_sys_tooltip");if("not_use"===t)return _T("volume","volume_disknotuse_without_sys_tooltip")}if("yes"===_D("isolated_disk_system","no"))if(i){let e={sys_partition_normal:_T("volume","volume_disksysuse_sys_slot_tooltip"),deactivated:_T("volume","volume_diskdeactivated_sys_slot_tooltip")};if(e.hasOwnProperty(t))return e[t]}else{let e={normal:_T("volume","volume_diskinuse_without_sys_tooltip"),not_use:_T("volume","volume_disknotuse_without_sys_tooltip")};if(e.hasOwnProperty(t))return e[t]}return s?s.tooltip:""},DiskSwapStatusRender:function(t){switch(t){case"normal":return''+_T("volume","volume_diskinuse")+"";case"failed":case"crashed":return''+_T("volume","volume_diskfailed")+"";case"rebuild":return''+_T("volume","volume_disk_rebuild")+"";case"spare":return''+_T("volume","volume_status_waiting")+"";case"deleting":return''+_T("volume","swap_device_removing")+"";case"none":return"-"}},smartStatusRender:function(t,e){var i=m[t];return"-1"===e?String.format('{0}',_T("background_task","task_processing")):Ext.isEmpty(e)||null===e.match("%")?i?String.format('{1}',i.color,i.text):String.format('{0}',_T("common","loading")):String.format('{0}',_T("smart","smart_test_remain")+": "+e)},smartStatusWithProgressRender:function(t){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.smartStatusRender(t.status,t.progress)},DiskDisconnectStatusRender:function(t){var e,i="-";return Ext.isEmpty(t)?{text:_T("disk_info","disk_status_normal"),color:"green-status"}:((e=parseInt(t))>=0&&e<2&&(i=String.fromCharCode("A".charCodeAt(0)+e)),{text:String.format(_T("disk_info","disk_status_disconnect"),i),color:"red-status"})},DiskCompIssueCheck:function(t,e=""){return""===e&&(e=_S("support_synodrive_ability")),"yes"===e&&"support"!==t},DiskCanShowInfo:function(t="unknown"){if("no"===_S("support_synodrive_ability"))return!0;return!["not_support","forbidden","systemdisk_not_support"].includes(t)},DiskSummaryStatusRenderMap:function(t,e,i=null,s=!1){var n;let o=SYNO.SDS.Utils.StorageUtils.UiRenderHelper;if("space"===t)n=S[e];else if("health"===t)n=x[e];else if("processing"===t)n=v[e];else if("smart"===t)n=m[e];else if("compatibility"===t)n=s?o.DiskCompatibilityStatusMappingForNewHCL(e):w[e];else{if("disconnect"!==t)return SYNO.Debug.error("Invalid arguments",arguments),{text:"",color:""};n=o.DiskDisconnectStatusRender(e)}return n&&n.hasOwnProperty("color")&&n.hasOwnProperty("text")?"processing"!==t||Ext.isEmpty(i)||"-1"===i?{text:n.text,color:n.color}:{text:String.format("{0}{1} {2}",n.text,_T("common","colon"),i),color:n.color}:(SYNO.Debug.error("Invalid arguments",arguments),{text:"",color:""})},DiskSummaryStatusRender:function(t,e,i=null,s=!1){"yes"===_S("support_synodrive_ability")&&(w.not_in_support={text:_T("disk_info","disk_compatibility_unverified"),tooltip:_T("disk_info","disk_compatibility_unverified_status"),cls:"sm-disk-unverified",color:"red-status"});var n=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskSummaryStatusRenderMap(t,e,i,s);return String.format('{1}',n.color,n.text)},DiskTypeRender:function(t,e){return e?String.format("{0} / {1}",t.get("diskType"),t.get("isSsd")?"SSD":"HDD"):"NVMe"===t.get("diskType")?String.format("NVMe / {0}",t.get("isSsd")?"SSD":"HDD"):t.get("isSsd")?"SSD":"HDD"},AddDiskTypeRender:function(t){switch(t){case"repair":return _T("volume","volume_adddisk2_type_repair");case"data_scrubbing":return _T("volume","data_scrubbing_page_title");case"repair_sys_partition":return _T("volume","volume_repair_syspart");case"expand_by_disk":return _T("volume","volume_adddisk2_type_expand_disk");case"expand_with_unalloc_size":return _T("volume","volume_adddisk2_type_expand_size");case"migrate":return _T("volume","volume_adddisk2_type_migrate");case"expand_unfinished_shr":return _T("volume","continue_unfinished_shr");case"convert_shr_to_pool":return _T("volume","volume_convert_shr_raidgroup_to_pool")}},MigrateTypeRender:function(t){switch(t){case"add_mirror":return _T("volume","volume_migrate_add_mirror");case"to_raid1":return _T("volume","volume_migrate_to_raid1");case"to_raid5":return _T("volume","volume_migrate_to_raid5");case"to_raid5+spare":return _T("volume","volume_migrate_to_raid5_spare");case"to_raid6":return _T("volume","volume_migrate_to_raid6");case"to_shr2":return _T("volume","volume_migrate_to_shr2")}},TargetStatusRender:function(t,e){var i,s="",n=!1;switch(t){case"processing":case"creating":case"deleting":n=!0}return t in o?(i=o[t],s=String.format('{1}',i.color,i.text),0===e&&n&&(s=String.format("{0}({2})",s,o.waiting.color,o.waiting.text)),s):""},SpareStatusRender:function(t,e,i){var s="";return"none"===t?String.format('{0}',_T("volume","volume_status_deverr")):"repairing"===t||"replacing"===t?(s="repairing"===t?_T("volume","volume_status_repair"):_T("volume","volume_status_replace"),e&&i?String.format('{0} {1}, {2} {3}',s,e,_T("volume","volume_raid_subgroup"),i):e?String.format('{0} ({1})',s,e):String.format('{0}',s)):"standby"==t?String.format('{0}',_T("volume","volume_hot_spare")):" "},SnapShotStatusRender:function(t){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusRender(t.type,t.progress)},getErrorMsg:function(t){var e=_T("common","commfail");return t.errinfo&&t.errinfo.sec&&t.errinfo.key&&(e=_T(t.errinfo.sec,t.errinfo.key),Ext.isArray(t.errinfo.params)?(t.errinfo.params.unshift(e),e=String.format.apply(String,t.errinfo.params)):Ext.isString(t.errinfo.params)&&(e=String.format(e,t.errinfo.params))),e},decodeResponse:function(t,e){var i=null,s={success:!1,text:_T("common","commfail")};if(!t||!e)return SYNO.Debug.error("response fail"),s;try{i=Ext.util.JSON.decode(e.responseText)}catch(t){return s.text="json decode error: "+t,s}return i?(i.success||(i.text=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.getErrorMsg(i)),i):(s.text="json decode error",s)},htmlEncoder:function(t){return t=(t=t.replace(//g,">")},htmlDecoder:function(t){return t?t=(t=t.replace(/</g,"<")).replace(/>/g,">"):""},getServiceNames:function(t){var e=[],i=[];return Ext.each(t,function(t){t in l?e.push(l[t]):-1!=t.lastIndexOf(":")?(i=t.split(":"),e.push(_T(i[0],i[1]))):e.push(t)}),e.join(", ")},getVolumeNames:function(t){var e=this,i=[];return Ext.each(t,function(t){Ext.isString(t)?i.push(e.SpaceIDParser(t).str):t.name?i.push(e.SpaceIDParser(t.name).str):t.id&&i.push(e.SpaceIDParser(t.id).str)}),i.join(", ")},getNamesString:function(t){var e=[];return Ext.each(t,function(t){e.push(t.name)}),e.join(", ")},disableServices:function(t){Ext.each(t,function(t){Ext.isString(c[t])&&SYNO.SDS.StatusNotifier.setServiceDisabled(c[t],!0)})},DiskTemperatureRender:function(t){return"number"!=typeof t?"-":String.format("{0} {1} / {2} {3}",t,_T("status","celsius"),(9*t/5+32).toFixed(0),_T("status","fahrenheit"))},CacheDeviceRenderer:function(t){return-1===t.search("Cache device")?t:t.replace("Cache device",_T("volume","dedicated_ssd_cache"))},DiskNameRenderer:function(t,e){var i,s,n,o=/(\d+)( \((.*)\))*/.exec(t);return o&&4==o.length?(i=o[1],!0===e||void 0===o[2]||""===o[2]||void 0===o[3]||""===o[3]?String.format("{0} {1}",_T("volume","volume_disk"),i):0<=(n=o[3]).indexOf("DX")||0<=n.indexOf("RX")||0<=n.indexOf("FX")?String.format("{0} {1} ({2})",_T("volume","volume_disk"),i,n):-1===n.indexOf("-")?"no"===_D("supportsas","no")?String.format("{0} {1} ({2})",_T("volume","volume_disk"),i,_T("volume","volume_expansion")):String.format("{0} {1} ({2})",_T("volume","volume_disk"),i,_T("volume","volume_unknown_expansion")):(s=n.split("-"),String.format("{0} {1} ({2} {3})",_T("volume","volume_disk"),i,_T("volume","volume_expansion"),s[1]))):t},DiskDisplayNameGet:function(t,e){let i="",s="",n=JSON.parse(t);for(let t of n){if(s=SYNO.SDS.UIString.GetLocalizedString(t,""),e&&"("===s)break;i+=s}return i},DeprecatedDiskDisplayNameGet(t,e,i,s,n){var o=0,r=_D("upnpmodelname"),a=SYNO.SDS.Utils.StorageUtils.UiRenderHelper;if(!n&&-1===i)return a.DiskNameRenderer(t,e);if(n){switch(r.toLowerCase()){case"rs3413xs+":case"rs10613xs+":return o=10,String.format("{0} {1}",_T("volume","dedicated_ssd_cache"),s-o)}return 0===i?String.format("{0} {1}",_T("volume","dedicated_ssd_cache"),s):String.format("{0} {1}-{2}",_T("volume","dedicated_ssd_cache"),i,s)}return 0===i?String.format("{0} {1}",_T("volume","expansion_disk"),s):String.format("{0} {1}-{2}",_T("volume","expansion_disk"),i,s)},SBTimeStringRender:function(t,e){var i,s,n,o,r,a=function(t){return 0===t?"":t+" "+(1===t?_T("disk_info","ssd_bundle_time_month"):_T("disk_info","ssd_bundle_time_months"))},l=function(t,e){return 0===e.length?t:0===t.length?e:t+" "+e};return"not_enough_time"===t?_T("disk_info","ssd_bundle_calculating"):!0===e?_T("disk_info","ssd_bundle_replace_now"):365>t?(s=Math.floor(t/30),n=Math.floor(t%30/7),l(a(s),0===(r=n)?"":r+" "+(1===r?_T("disk_info","ssd_bundle_time_week"):_T("disk_info","ssd_bundle_time_weeks")))):1825>=t?(i=Math.floor(t/365),s=Math.floor(t%365/30),l(0===(o=i)?"":o+" "+(1===o?_T("disk_info","ssd_bundle_time_year"):_T("disk_info","ssd_bundle_time_years")),a(s))):_T("disk_info","ssd_bundle_time_long")},SBTimeStringFormatRender:function(t,e){var i;return i=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.SBTimeStringRender(t,e),!0===e?String.format('{0}',i):String.format('{0}',i)},RemainLifeRenderMap:function(t,e){return-1===t?{text:"-",color:""}:e?{text:t+" %",color:"red-status"}:{text:t+" %",color:"green-status"}},RemainLifeRender:function(t,e,i){var s=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.RemainLifeRenderMap(t,i);return-1===t||e||(s.text=_T("disk_info","disk_status_normal")),String.format('{1}',s.color,s.text)},RemainLifeRenderOld:function(t,e,i){return-1===t?"-":i?String.format('{0} %',t):e?String.format('{0} %',t):String.format('{0}',_T("disk_info","disk_status_normal"),t)},BadSecCtRender:function(t){return-1===t?"-":t},advStatusRender:function(t,e){var i=f[t],s=new RegExp("%");return"-1"===e?String.format('{0}',_T("background_task","task_processing")):null!==s.exec(e)?String.format('{0}',_T("smart","smart_test_remain")+": "+e):i?String.format('{1}',i.color,i.text):String.format('{0}',_T("common","loading"))},smartTestStatusRender:function(t){var e=g[t];return e?String.format('{1}',e.color,e.text):String.format('{0}',_T("common","loading"))},textAnimate:function(t,e,i){switch(i){case 1:t.innerHTML=String.format('{0}.',e);break;case 2:t.innerHTML=String.format('{0}..',e);break;case 3:t.innerHTML=String.format('{0}...',e);break;default:t.innerHTML=String.format('{0}',e)}this.taskAnimTask.delay(500,null,null,[t,e,(i+1)%4])},setUpdateTimeAnimate:function(t,e,i){if(this.taskAnimTask=this.taskAnimTask||new Ext.util.DelayedTask(this.textAnimate),!t)return e.setValue(i),void this.taskAnimTask.cancel();this.taskAnimTask.delay(0,null,this,[e.el.dom,i,0])},WarningTitleStringGet:function(t,e){var i="";switch(t){case"smart":i=String.format(_T("disk_info","smart_info_modify_warn_title"),e);break;case"smart_test":i=_T("disk_info","smart_test_modify_warn_title");break;case"unc":i=_T("disk_info","disk_bad_sector_ct");break;case"life":i=_T("disk_info","disk_remain_life");break;case"adv":i=_T("disk_info","disk_ironwolf_health");break;case"wdda":i=_T("disk_info","disk_wdda_title");break;case"nvme_perc_used_full":i=_T("disk_info","disk_nvme_perc_used");break;default:return void SYNO.Debug.error("no such value",t)}return i},DiskCompatibilityStatusMappingForNewHCL:function(t){return t in b?b[t]:w[t]},DiskOverviewStatusRenderMap:function(t){var e=x[t];return e?{text:e.text,color:e.color}:{text:t,color:"green-status"}},DiskOverviewStatusRenderForNewHCL:function({compatibility:t="support",overview_status:e="normal"},i=""){let s=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,n=s.DiskOverviewStatusRenderMap(e);return s.DiskCompIssueCheck(t,i)&&(n=s.DiskCompatibilityStatusMappingForNewHCL(t)),String.format('{1}',n.color,n.text)},DiskOverviewStatusRender:function(t){var e=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskOverviewStatusRenderMap(t);return String.format('{1}',e.color,e.text)},DiskTestLogRender:function(t){return y[t]},DiskWddaRender:function(t){var e=T[t];return e||T.unknown},DiskPredictionMainFactorRender:function(t,e){var i="";switch(t){case"bad_sec_ct":case"bad_sec_ct_diff":i=_T("disk_info","disk_prediction_main_factor_bad_sec_ct_diff");break;case"rule_retry":case"retry_diff":case"retry":i=_T("disk_info","disk_prediction_main_factor_retry_diff");break;case"unc_diff":i=_T("disk_info","disk_prediction_main_factor_unc_diff");break;case"unc":case"rule_unc":i=_T("disk_info","disk_prediction_main_factor_unc");break;case"rule_idnf":i=_T("disk_info","disk_prediction_main_factor_rule_idnf");break;default:if(-1===t.indexOf("smart_"))SYNO.Debug.error("no such main factor: ",t);else for(var s=/smart_{1}(\d+)_/g.exec(t)[1],n=0;n{1}',i.color,i.text)}},DriveFirmwareRender:function(t,e,i,s){var n,o,r,a,l=t;return"upgrading"===e?o=_T("disk_info","fwupgrade_status_upgrading"):"upgrade_firmware"===e?(r="sm-fwupgrade-upgrade-fw-link",a="red-status",o=_T("disk_info","fwupgrade_status_upgrade_firmware")):"upgrade_dsm"===e?(r="sm-fwupgrade-upgrade-dsm-link",a="red-status",o=_T("disk_info","fwupgrade_status_upgrade_dsm")):"upgrade_database"===e&&(r="sm-fwupgrade-upgrade-db-link",a="orange-status",o=_T("disk_info","fwupgrade_status_upgrade_database")),o&&(n=o,s&&a&&r&&(n=String.format('{2}',a,r,n)),l=String.format("{0} ({1})",l,n)),i&&(l=String.format('
{1}
',this.DriveFirmwareRender(t,e,!1,!1),l)),l},getStatusLevel:function(e){var i=s[t],n=o[e];if(!n)return i;var r=n.color;return n.hasOwnProperty("level")&&(r=n.level),s[r]||i},whichStatusLevelHigher(t){let e=t=>n.findIndex(e=>e.includes(SYNO.SDS.Utils.StorageUtils.UiRenderHelper.getStatusLevel(t)));return Object.keys(t).map(i=>({key:i,levelPriorityIdx:e(t[i])})).reduce((t,e)=>e.levelPriorityIdx=1024&&(s/=1024,i=_T("common","size_gb")),s>=1024&&(s/=1024,i=_T("common","size_tb"));var n=e||2;return s.toFixed(n)+" "+i},SYNO.SDS.Utils.StorageUtils.FirmwareStatusClickHandler=function(t){var e=function(t,e){return t.hasClass?t.hasClass(e):!!t.contains&&t.contains(e)};t&&(e(t,"sm-fwupgrade-upgrade-fw-link")?SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance",{fn:"SYNO.SDS.StorageManager.Disk.Main",tab:"disk-tab",dlg:"SYNO.SDS.StorageManager.Wizard.FirmwareUpgrade",modalParam:{requireDiskMap:!0,requirePassiveDiskMapIfSHA:!0}}):e(t,"sm-fwupgrade-upgrade-dsm-link")?SYNO.SDS.AppLaunch("SYNO.SDS.AdminCenter.Application",{fn:"SYNO.SDS.AdminCenter.Update_Reset.Main"}):e(t,"sm-fwupgrade-upgrade-db-link")&&SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance",{fn:"SYNO.SDS.StorageManager.Disk.Main",tab:"settings-tab"}))},Ext.namespace("SYNO.SDS.Utils.Network"),SYNO.SDS.Utils.Network={MacIPAnd:function(t,e){var i,s,n,o,r=[];for(o=0;o<32;o++)s=t%2,n=e%2,r[o]=1==s&&1==n?1:0,t=(t-s)/2,e=(e-n)/2;for(i=0,o=31;o>=0;o--)i=2*i+r[o];return i},GetIPValue:function(t){var e=t.split("."),i=0;if(4!==e.length)return!1;for(var s=0;s<=3;s++)i*=256,i+=parseInt(e[s],10);return i},GetIPStr:function(t){for(var e=[],i=0;i<=3;i++)e.push(Math.floor(t%256)),t=Math.floor(t/256);return String.format("{0}.{1}.{2}.{3}",e[3],e[2],e[1],e[0])},GatewayMatchIP:function(t,e,i){var s=SYNO.SDS.Utils.Network.GetIPValue(t),n=SYNO.SDS.Utils.Network.GetIPValue(i),o=SYNO.SDS.Utils.Network.GetIPValue(e),r=SYNO.SDS.Utils.Network.MacIPAnd(s,n),a=SYNO.SDS.Utils.Network.MacIPAnd(o,n);return 0!==r&&r==a},idToString:function(t,e){var i,s="",n={eth:"lan",br:"bridge",ovs_eth:"ovseth",ovs_bond:"ovsbond",wlan:"wificlient",gwlan:"wifiguest",bond:"bond",ppp:"pppoe",lbr:"local_bridge",gbr:"guest_bridge",ap:"wifiap",usbmodem:"usbmodem"},o={lan:_T("tcpip","tcpip_lan_port"),wan:_T("network","if_internet"),ovseth:_T("tcpip","tcpip_lan_port"),ovsbond:_T("network","if_bond"),lan_mgmt:_T("oob","oob_lan_display_name"),wificlient:_T("network","if_wireless"),wifiguest:_T("wireless_ap","ap_guest_network"),bond:_T("network","if_bond"),pppoe:_T("tree","leaf_pppoe"),bridge:_T("tcpip","tcpip_lan_port"),local_bridge:_T("network","if_wireless_lan"),guest_bridge:_T("wireless_ap","ap_guest_network"),wifiap:_T("network","if_hotspot"),usbmodem:_T("network","usbmodem_name"),vpn:_T("vpnc","app_name"),total:_T("rsrcmonitor","total"),docker:_TT("SYNO.SDS.Docker.Application","app","displayname")};if("tun0"===t)return o.vpn;if("docker0"===t)return o.docker;if("total"===t)return o.total;if("yes"===_D("support_oob_ctl")&&_D("oob_interface")===t)return o.lan_mgmt;if(0===t.indexOf("ddsm"))return o.docker;if(new RegExp(/^ppp[2-3][0-9]{2}$/).exec(t))return o.vpn;if(new RegExp(/^ppp1[0-9]{2}$/).exec(t))return o.usbmodem;if("pppoe"===t)return o[t];if(0===t.indexOf("6in4-"))return SYNO.SDS.Utils.Network.idToString.apply(this,[t.substring(5)])+"("+_T("tree","leaf_tunnel")+")";if(i=t.replace(/\.\d+$/,"").replace(/\d+$/,""),s=t.replace(/\D+/,"").replace(/\.\d+$/,""),!e&&i in n&&(e=n[i]),!(e in o))return"(unknown) "+t;if(!SYNO.SDS.Utils.Network.isMultiLan.apply(this))switch(e){case"lan":case"wan":return o[e]}switch(e){case"pppoe":case"bridge":case"local_bridge":case"guest_bridge":case"usbmodem":return o[e];default:return s=parseInt(s,10)+1,o[e]+" "+s}},isPPPoE:function(t){return"ppp0"===t},isMultiLan:function(){var t="";return t=SYNO.SDS.Utils.Network===this?_D("maxlanport","1"):this._D("maxlanport","1"),1=16&&i[1]<=31)&&(192!=i[0]||168!=i[1]))},getExternalHostName:function(t){return _S("external_host_ip")&&""!==_S("external_host_ip")?_S("external_host_ip"):_S("rewrite_mode")&&!Ext.isEmpty(_S("rewrite_host"))&&Ext.isString(_S("rewrite_host"))?_S("rewrite_host"):_S("ddns_hostname")&&""!==_S("ddns_hostname")?_S("ddns_hostname"):t&&_S("external_ip")&&""!==_S("external_ip")?_S("external_ip"):window.location.hostname},getURLprefix:function(t){var e,i,s;return e=SYNO.SDS.Utils.Network.getExternalHostName(t),s=window.location.protocol+"//"+e,i=window.location.port,_S("rewrite_mode")||(i="https:"===window.location.protocol?_S("external_port_dsm_https")&&""!==_S("external_port_dsm_https")?_S("external_port_dsm_https"):window.location.port:_S("external_port_dsm_http")&&""!==_S("external_port_dsm_http")?_S("external_port_dsm_http"):window.location.port),i&&(s+=":"+i),s},isSupportTopology:function(){return"yes"===(SYNO.SDS.Utils.Network===this?_S("support_net_topology"):this._S("support_net_topology"))}},SYNO.SDS.DateTimeUtils=function(){var t=["Y-m-d","Y/m/d","Y.m.d","d-m-Y","d/m/Y","d.m.Y","m-d-Y","m/d/Y","m.d.Y"],e=["YYYY-MM-dd","YYYY/MM/dd","YYYY.MM.dd","dd-MM-YYYY","dd/MM/YYYY","dd.MM.YYYY","MM-dd-YYYY","MM/dd/YYYY","MM.dd.YYYY"],i=["h:i","H:i"],s=[_T("common","pref_time_format_12")||"12-hour",_T("common","pref_time_format_24")||"24-hour"],n=[" a",""],o=[0,1].map(function(t){return i[t]+n[t]}),r=t[0],a=o[1],l={chs:t[0],cht:t[0],csy:t[4],dan:t[4],enu:t[7],fre:t[4],ger:t[5],hun:t[0],ita:t[4],jpn:t[0],krn:t[0],nld:t[3],nor:t[5],plk:t[5],ptb:t[4],ptg:t[4],rus:t[5],spn:t[4],sve:t[0],tha:t[4],trk:t[5]};return{SupportedDateFormats:t,SupportedTimeFormats:o,GetDateFormatByLang:function(t){return l[t]||r},GetTimeFormatByLang:function(t){return a},GetSystemDateFormat:function(){return _S("date_format")||r},GetSystemTimeFormat:function(){return _S("time_format")||a},CreateDateFormatArray(t){var i=SYNO.SDS.DateTimeUtils.SupportedDateFormats.map(function(t,i){return[t,e[i]]}),s=SYNO.SDS.DateTimeUtils.GetSystemDateFormat();return t&&Ext.each(i,function(t){t[0]===s&&(t[1]=t[1]+" ("+_T("common","sys_default_setting")+")")}),i},CreateDateFormatJsonOptions:t=>SYNO.SDS.DateTimeUtils.CreateDateFormatArray(t).map(function(t){return{value:t[0],display:t[1]}}),CreateDateFormatStore:function(t){var e=SYNO.SDS.DateTimeUtils.CreateDateFormatArray(t);return new Ext.data.ArrayStore({fields:["value","display"],autoDestroy:!0,data:e})},CreateTimeFormatArray:function(t){var e=SYNO.SDS.DateTimeUtils.SupportedTimeFormats.map(function(t,e){return[t,s[e]]}),i=SYNO.SDS.DateTimeUtils.GetSystemTimeFormat();return t&&Ext.each(e,function(t){t[0]===i&&(t[1]=t[1]+" ("+_T("common","sys_default_setting")+")")}),e},CreateTimeFormatJsonOptions:function(t){return SYNO.SDS.DateTimeUtils.CreateTimeFormatArray(t).map(function(t){return{value:t[0],display:t[1]}})},CreateTimeFormatStore:function(t){var e=SYNO.SDS.DateTimeUtils.CreateTimeFormatArray(t);return new Ext.data.ArrayStore({fields:["value","display"],autoDestroy:!0,data:e})},SetUserFormat:function(t,e){"string"==typeof e&&("date"===t?SYNO.SDS.UserSettings.setProperty("Personal","dateFormat",e):"time"===t&&SYNO.SDS.UserSettings.setProperty("Personal","timeFormat",e))},RemoveUserFormat:function(t){"date"===t?SYNO.SDS.UserSettings.removeProperty("Personal","dateFormat"):"time"===t&&SYNO.SDS.UserSettings.removeProperty("Personal","timeFormat")},GetYearMonthFormat:function(){return{"Y-m-d":"Y-m","Y/m/d":"Y/m","Y.m.d":"Y.m","d-m-Y":"m-Y","d/m/Y":"m/Y","d.m.Y":"m.Y","m-d-Y":"m-Y","m/d/Y":"m/Y","m.d.Y":"m.Y"}[SYNO.SDS.DateTimeUtils.GetDateFormat()]},GetMonthDateFormat:function(){return{"Y-m-d":"m-d","Y/m/d":"m/d","Y.m.d":"m.d","d-m-Y":"d-m","d/m/Y":"d/m","d.m.Y":"d.m","m-d-Y":"m-d","m/d/Y":"m/d","m.d.Y":"m.d"}[SYNO.SDS.DateTimeUtils.GetDateFormat()]},GetDateRawFormat:function(){return SYNO.SDS.UserSettings.getProperty("Personal","dateFormat")||"system"},GetTimeRawFormat:function(){return SYNO.SDS.UserSettings.getProperty("Personal","timeFormat")||"system"},GetDateFormat:function(){var t=SYNO.SDS.UserSettings.getProperty("Personal","dateFormat");return t="system"===t?SYNO.SDS.DateTimeUtils.GetSystemDateFormat():t||SYNO.SDS.DateTimeUtils.GetSystemDateFormat()},GetTimeFormat:function(){var t=SYNO.SDS.UserSettings.getProperty("Personal","timeFormat");return t="system"===t?SYNO.SDS.DateTimeUtils.GetSystemTimeFormat():t||SYNO.SDS.DateTimeUtils.GetSystemTimeFormat()},GetTimePrefix:function(){return SYNO.SDS.DateTimeUtils.GetTimeFormat().indexOf(i[1])>-1?i[1]:i[0]},GetTimePostfix:function(){return SYNO.SDS.DateTimeUtils.GetTimeFormat().indexOf(i[1])>-1?n[1]:n[0]},GetDateTimeFormat:function(){return SYNO.SDS.DateTimeUtils.GetDateFormat()+" "+SYNO.SDS.DateTimeUtils.GetTimeFormat()},GetDateTimeSecFormat:function(){var t=SYNO.SDS.DateTimeUtils;return t.GetDateFormat()+" "+t.GetTimePrefix()+":s"+t.GetTimePostfix()},GetTimeSecFormat:function(){var t=SYNO.SDS.DateTimeUtils;return t.GetTimePrefix()+":s"+t.GetTimePostfix()},GetDateTimeSecMsFormat:function(){var t=SYNO.SDS.DateTimeUtils,e=t.GetTimePrefix(),i=t.GetTimePostfix();return t.GetDateFormat()+" "+e+":s.u"+i},GetTimeSecMsFormat:function(){var t=SYNO.SDS.DateTimeUtils;return t.GetTimePrefix()+":s.u"+t.GetTimePostfix()},ShowDiffDateOnlyDecorator:function(t,e){var i=new Date;return t.getFullYear()===i.getFullYear()&&t.getMonth()===i.getMonth()&&t.getDate()===i.getDate()&&(e=e.replace(/^[Ymd/.-]*\s/g,"")),e},ShowDiffYearOnlyDecorator:function(t,e){var i=new Date;return t.getFullYear()===i.getFullYear()&&(e=e.replace(/(Y[/.-])|([/.-]Y)/g,"")),e}}}(),SYNO.SDS.DateTimeFormatter=function(t,e){if(!t||"[object Date]"!==Object.prototype.toString.call(t))return"";var i,s=e&&e.type,n=SYNO.SDS.DateTimeUtils,o=e&&e.showDiffDateOnly,r=e&&e.showDiffYearOnly;return i="date"===s?n.GetDateFormat():"yearmonth"===s?n.GetYearMonthFormat():"monthdate"===s?n.GetMonthDateFormat():"time"===s?n.GetTimeFormat():"timesec"===s?n.GetTimeSecFormat():"datetimesec"===s?n.GetDateTimeSecFormat():"datetimesecms"===s?n.GetDateTimeSecMsFormat():n.GetDateTimeFormat(),o&&(i=n.ShowDiffDateOnlyDecorator(t,i)),r&&(i=n.ShowDiffYearOnlyDecorator(t,i)),t.format(i)},SYNO.SDS.Utils.createTimeItemStore=function(t){var e=[],i={hour:24,min:60,sec:60};if(t in i){for(var s=0;s0;t--)if(0===(e=new Date(n.getFullYear(),2,t)).getDay()){i=e;break}for(t=31;t>0;t--)if(0===(e=new Date(n.getFullYear(),9,t)).getDay()){s=e;break}return!(ns)},SYNO.SDS.Utils._Language={ENU:"enu",FRE:"fre",GER:"ger",ITA:"ita",SPN:"spn",CHT:"cht",CHS:"chs",JPN:"jpn",KRN:"krn",THA:"tha",RUS:"rus",NLD:"nld",CSY:"csy",PLK:"plk",DAN:"dan",SVE:"sve",HUN:"hun",TRK:"trk",NOR:"nor",PTG:"ptg",PTB:"ptb"},SYNO.SDS.Utils.Language=function(){var t,e={},i="",s=function(t,e,i){Ext.isIE8?t[e]=i:Object.defineProperty(t,e,{value:i,enumerable:!0})};for(var n in t={GetDefaultHelpLanguage:function(){return SYNO.SDS.Utils._Language.ENU},GetSupportedLanguage:function(){return e}},SYNO.SDS.Utils._Language)SYNO.SDS.Utils._Language.hasOwnProperty(n)&&(s(t,n,i=SYNO.SDS.Utils._Language[n]),s(e,i,_T("common","language_"+i)));return t}(),SYNO.SDS.Utils.getHelpLanguage=function(t){var e=[SYNO.SDS.Utils.Language.DAN,SYNO.SDS.Utils.Language.SVE,SYNO.SDS.Utils.Language.HUN,SYNO.SDS.Utils.Language.TRK,SYNO.SDS.Utils.Language.NOR,SYNO.SDS.Utils.Language.PTG,SYNO.SDS.Utils.Language.PTB,SYNO.SDS.Utils.Language.THA];return t=t||_S("lang"),-1!==e.indexOf(t)?SYNO.SDS.Utils.Language.GetDefaultHelpLanguage():SYNO.SDS.Utils.Language.GetSupportedLanguage()[t]?t:SYNO.SDS.Utils.Language.GetDefaultHelpLanguage()},SYNO.SDS.Utils.getSupportedLanguage=function(t){var e=SYNO.SDS.Utils.Language.GetSupportedLanguage(),i=[],s=0;for(var n in e)e.hasOwnProperty(n)&&(i[s++]=[n,e[n]]);return i=i.sort(function(t,e){return t[1]>e[1]?1:t[1]e[1]?1:t[1] ",Ext.each(t,function(t){i.push(SYNO.SDS.Utils.GetFeasibilityCheckMsg(t))},this),i.join(e)},SYNO.SDS.Utils.isBrowserReservedPort=function(t,e){var i=[1,7,9,11,13,15,17,19,20,21,22,23,25,37,42,43,53,77,79,87,95,101,102,103,104,109,110,111,113,115,117,119,123,135,139,143,179,389,465,512,513,514,515,526,530,531,532,540,556,563,587,601,636,993,995,2049,3659,4045,6e3,6665,6666,6667,6668,6669],s=0;t>e&&(s=t,t=e,e=s);for(var n=0;n=i[n])return!0;return!1},SYNO.SDS.Utils.isReservedPort=function(t,e,i){var s=[20,21,22,23,25,69,80,110,111,137,138,139,143,161,162,199,443,445,514,515,543,548,587,631,873,892,914,915,916,993,995,2049,3260,3306,3493,4662,4672,5e3,5001,5005,5006,5335,5432,6281,7e3,7001,9e3,9002,9900,9901,9997,9998,9999,50001,50002],n=[],o=[],r=0;switch(e>i&&(r=e,e=i,i=r),t){case"ftp":o=[21];break;case"ssh":o=[22];break;case"http":o=[80];break;case"https":o=[443];break;case"www":o=[80,443];break;case"webman":case"dsm":o=[5e3,5001];break;case"cfs":o=[7e3,7001];break;case"webdav":o=[5005,5006];break;case"custsurveillance":o=[9900,9901];break;case"emule":o=[4662,4672];break;case"syslog":o=[514]}for(var a=0;a=n[a])return!0;if("ftp"!=t){var d=parseInt(_D("ftp_pasv_def_min_port","55536"),10),u=parseInt(_D("ftp_pasv_def_max_port","55663"),10);if(e<=u&&u<=i)return!0;if(d<=i&&i<=u)return!0}if("emule"!=t){if(e<=4662&&4662<=i)return!0;if(e<=4672&&4672<=i)return!0}if("custsurveillance"!=t){if(e<=9900&&9900<=i)return!0;if(e<=9901&&9901<=i)return!0}if("cfs"!=t){if(e<=7e3&&7e3<=i)return!0;if(e<=7001&&7001<=i)return!0}if("webdav"!=t){if(e<=5005&&5005<=i)return!0;if(e<=5006&&5006<=i)return!0}return e<=55910&&55910<=i||(55900<=i&&i<=55910||(e<=3259&&3259<=i||3240<=i&&i<=3259))},Ext.BLANK_IMAGE_URL="scripts/ext-3/resources/images/default/s.gif",Ext.data.Connection.prototype.timeout=12e4,Ext.form.BasicForm.prototype.timeout=120,Ext.QuickTip.prototype.maxWidth=500,Ext.override(Ext.QuickTip,{hide:function(){return this.getEl().animate({opacity:{from:1,to:0}},.3,function(){delete this.activeTarget,Ext.QuickTip.superclass.hide.call(this),this.getEl().setOpacity(1)}.createDelegate(this))}}),Ext.override(Ext.Element,{addClassOnHover:function(t){var e=this;"ontouchstart"in window||window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>0?Ext.getDoc().on("click",function(i){i.within(e)?e.addClass(t):e.removeClass(t)},e):e.addClassOnOver(t)}}),Ext.override(Ext.Component,{labelSeparator:_T("common","colon"),getTaskRunner:function(){return this.taskRunner||(this.taskRunner=new SYNO.SDS.TaskRunner,this.addManagedComponent(this.taskRunner)),this.taskRunner},addTask:function(t){return this.getTaskRunner().createTask(t)},addAjaxTask:function(t){return this.getTaskRunner().createAjaxTask(t)},addWebAPITask:function(t){return this.getTaskRunner().createWebAPITask(t)},getTask:function(t){return this.taskRunner?this.taskRunner.getTask(t):null},removeTask:function(t){var e=this.getTask(t);return e&&e.remove(),e},addManagedComponent:function(t){return this.components=this.components||[],this.components.push(t),t},removeManagedComponent:function(t){return this.components=this.components||[],this.components.remove(t),t},beforeDestroy:function(){this.taskRunner=null,this.components=this.components||[];for(var t=0;t0&&(e.timeout=setTimeout(Ext.createDelegate(s.handleTimeout,s,[e]),c)),s.setupErrorHandling(e),s[a]=Ext.createDelegate(s.handleResponse,s,[e],!0),s.loadScript(e),e},abort:function(t){var e,i=this.requests;if(t)t.id||(t=i[t]),this.handleAbort(t);else for(e in i)i.hasOwnProperty(e)&&this.abort(i[e])},setupErrorHandling:function(t){t.script.onerror=Ext.createDelegate(this.handleError,this,[t])},handleAbort:function(t){t.errorType="abort",this.handleResponse(null,t)},handleError:function(t){t.errorType="error",this.handleResponse(null,t)},cleanupErrorHandling:function(t){t.script.onerror=null},handleTimeout:function(t){t.errorType="timeout",this.handleResponse(null,t)},handleResponse:function(t,e){var i=!0;e.timeout&&clearTimeout(e.timeout),delete this[e.callbackName],delete this.requests[e.id],this.cleanupErrorHandling(e),Ext.fly(e.script).remove(),e.errorType?(i=!1,Ext.callback(e.failure,e.scope,[e.errorType])):Ext.callback(e.success,e.scope,[t]),Ext.callback(e.callback,e.scope,[i,t,e.errorType])},createScript:function(t,e,i){var s=document.createElement("script");return s.setAttribute("src",Ext.urlAppend(t,Ext.urlEncode(e))),s.setAttribute("async",!0),s.setAttribute("type","text/javascript"),s},createIframe:function(t,e,i){var s,n=Ext.urlAppend(t,Ext.urlEncode(e),!1);if(void 0!==i.iframeUrl){var o=i.iframeUrl;return o+="&url="+encodeURIComponent(n),o=Ext.urlAppend(o,"",!0),(s=document.createElement("iframe")).setAttribute("src",o),s.setAttribute("style","visibility: hidden"),s}SYNO.Debug("no iframe url")},loadScript:function(t){Ext.get(document.getElementsByTagName("head")[0]).appendChild(t.script)}}),Ext.override(SYNO.ux.Button,{getUXMenu:function(t){if(!Ext.menu.MenuMgr.getMenuList)return Ext.menu.MenuMgr.get(t);var e=Ext.menu.MenuMgr.getMenuList();return"string"==typeof t?e?e[t]:null:t.events?t:"number"==typeof t.length?new SYNO.ux.Menu({items:t}):Ext.create(t,"syno_menu")},initComponent:function(){this.menu&&(Ext.isArray(this.menu)&&(this.menu={items:this.menu}),Ext.isObject(this.menu)&&(this.menu.ownerCt=this),this.menu=this.getUXMenu(this.menu),this.menu.ownerCt=void 0),SYNO.ux.Button.superclass.initComponent.call(this)}}),Ext.override(SYNO.ux.ComboBox,{afterRender:function(){SYNO.ux.ComboBox.superclass.afterRender.call(this),this.mon(this,"expand",this.onListExpand,this)},onDestroy:function(){this.mun(this,"expand",this.onListExpand,this),SYNO.ux.ComboBox.superclass.onDestroy.call(this)},onListExpand:function(){if(SYNO.SDS.Desktop){var t=SYNO.SDS.UIFeatures.isFullScreenMode(),e=SYNO.SDS.Desktop.getEl();t&&this.list.parent()===Ext.getBody()?e.appendChild(this.list):t||this.list.parent()!==e||Ext.getBody().appendChild(this.list)}}}),Ext.override(SYNO.ux.DateField,{onDestroy:function(){this.menu&&this.mun(this.menu,"show",this.onMenuShow,this),this.callParent(arguments)},onMenuShow:function(){if(SYNO.SDS.Desktop){var t=SYNO.SDS.UIFeatures.isFullScreenMode(),e=SYNO.SDS.Desktop.getEl(),i=this.menu.el;t&&i.parent()===Ext.getBody()?e.appendChild(i):t||i.parent()!==e||Ext.getBody().appendChild(i)}}}),Ext.override(SYNO.ux.DateTimeField,{initComponent:function(){Ext.ux.form.DateTimeField.superclass.initComponent.call(this);var t=this.initialConfig,e=SYNO.SDS.DateTimeUtils;this.dateFormat=void 0===t.dateFormat?e.GetDateFormat():t.dateFormat,this.timeFormat=void 0===t.timeFormat?e.GetTimeFormat():t.timeFormat,this.format=this.isAllDay?this.dateFormat:this.dateFormat+" "+this.timeFormat,this.afterMethod("afterRender",function(){this.getEl().applyStyles("top:0")})}}),Ext.override(SYNO.ux.Menu,{onMenuShow:function(){if(SYNO.SDS.Desktop){var t=SYNO.SDS.UIFeatures.isFullScreenMode(),e=SYNO.SDS.Desktop.getEl();t&&this.el.parent()===Ext.getBody()?e.appendChild(this.el):t||this.el.parent()!==e||Ext.getBody().appendChild(this.el),this.resetWidthForFlexcroll()}}}),Ext.override(SYNO.ux.DatePicker,{getWeekdayHeader:function(t){var e=this.dayNames,i="ger"===_S("lang")?2:1;return e[t].substr(0,i)}}),Ext.override(Ext.form.Radio,{setValue:function(t){if("boolean"==typeof t)Ext.form.Radio.superclass.setValue.call(this,t);else if(this.rendered){this.getCheckEl().select("input[name="+this.el.dom.name+"]").each(function(e){var i=Ext.getCmp(e.dom.id);i.setValue(t===e.dom.value),i.fireEvent("check",i,i.checked)},this)}return this},onClick:function(){this.el.dom.checked!=this.checked&&this.setValue(this.el.dom.value)}}),Ext.namespace("SYNO.API.Util"),SYNO.API.Util.ShowDeprecatedMsg=function(){SYNO.Debug.warn("SYNO.API.Util is deprecated, please use SYNO.API.Response instead.")},SYNO.API.Util.GetValByAPI=function(t,e,i,s){return SYNO.API.Util.ShowDeprecatedMsg(),SYNO.API.Response.GetValByAPI(t,e,i,s)},SYNO.API.Util.GetValByIndex=function(t,e,i){return SYNO.API.Util.ShowDeprecatedMsg(),SYNO.API.Response.GetValByIndex(t,e,i)},SYNO.API.Util.GetFirstError=function(t){return SYNO.API.Util.ShowDeprecatedMsg(),SYNO.API.Response.GetFirstError(t)},SYNO.API.Util.GetFirstErrorIndex=function(t){return SYNO.API.Util.ShowDeprecatedMsg(),SYNO.API.Response.GetFirstErrorIndex(t)},SYNO.SDS.Utils.FieldFind=function(t,e){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.FieldFind is deprecated, please use SYNO.ux.Utils.findFormField"),SYNO.ux.Utils.findFormField(t,e)},Ext.define("SYNO.SDS.Utils.EnableRadioGroup",{extend:"SYNO.ux.Utils.EnableRadioGroup",constructor:function(t,e,i){SYNO.Debug.warn("+++ SYNO.SDS.Utils.EnableRadioGroup is renamed, please use SYNO.ux.Utils.EnableRadioGroup"),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Utils.EnableCheckGroup",{extend:"SYNO.ux.Utils.EnableCheckGroup",constructor:function(t,e,i,s,n){SYNO.Debug.warn("+++ SYNO.SDS.Utils.EnableCheckGroup is renamed, please use SYNO.ux.Utils.EnableCheckGroup"),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Utils.ActionGroup",{extend:"SYNO.ux.Utils.ActionGroup",constructor:function(t){SYNO.Debug.warn("+++ SYNO.SDS.Utils.ActionGroup is renamed, please use SYNO.ux.Utils.ActionGroup"),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Utils.IconBadge",{extend:"SYNO.SDS.IconBadge",constructor:function(){SYNO.Debug.warn("+++ SYNO.SDS.Utils.IconBadge is renamed, please use SYNO.SDS.IconBadge"),this.callParent(arguments)}}),SYNO.SDS.Utils.DisplayField=function(t,e,i){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.DisplayField is renamed, please use SYNO.ux.Utils.displayFormField"),SYNO.ux.Utils.displayFormField(t,e,i)},SYNO.SDS.Utils.getRadioGroup=function(t,e){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.getRadioGroup is renamed, please use SYNO.ux.Utils.getRadioGroup"),SYNO.ux.Utils.getRadioGroup(t,e)},SYNO.SDS.Utils.loadUIStrings=function(t,e,i){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.loadUIStrings is renamed, please use SYNO.SDS.UIString.LoadLanguage"),SYNO.SDS.UIString.LoadLanguage(t,e,i)},SYNO.SDS.Utils.GetLocalizedString=function(t,e){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.GetLocalizedString is renamed, please use SYNO.SDS.UIString.GetLocalizedString"),SYNO.SDS.UIString.GetLocalizedString(t,e)},SYNO.SDS.Utils.DescribeGroup=function(t,e){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.DescribeGroup is renamed, please use SYNO.ux.Utils.DescribeGroup"),SYNO.ux.Utils.DescribeGroup(t,e)},SYNO.SDS.Utils.ConvertSingleSymbolToString=function(t,e,i){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.ConvertSingleSymbolToString is renamed, please use SYNO.ux.Utils.ConvertSingleSymbolToString"),SYNO.ux.Utils.ConvertSingleSymbolToString(t,e,i)},SYNO.SDS.Utils.ConvertSymbolsToString=function(t){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.ConvertSymbolsToString is renamed, please use SYNO.ux.Utils.ConvertSymbolsToString"),SYNO.ux.Utils.ConvertSymbolsToString(t)},Ext.define("SYNO.SDS.Utils.InnerGroupingView",{extend:"SYNO.ux.InnerGroupingView",constructor:function(){SYNO.Debug.warn("+++ SYNO.SDS.Utils.InnerGroupingView is renamed, please use SYNO.ux.InnerGroupingView"),this.callParent(arguments)}}),SYNO.SDS.DefineGridView("SYNO.SDS.Utils.GroupingView","SYNO.SDS.Utils.InnerGroupingView"),Ext.define("SYNO.SDS.Utils.GroupingView",{extend:"SYNO.ux.GroupingView",constructor:function(){SYNO.Debug.warn("+++ SYNO.SDS.Utils.GroupingView is renamed, please use SYNO.ux.GroupingView"),this.callParent(arguments)}}),SYNO.SDS.Utils.AddTip=function(t,e,i,s){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.AddTip is renamed, please use SYNO.ux.AddTip"),SYNO.ux.AddTip(t,e,i,s)},SYNO.SDS.Utils.IsAllowRelay=function(t){return SYNO.Debug.warn("+++ SYNO.SDS.Utils.IsAllowRelay is renamed, please use SYNO.SDS.Utils.CMS.IsAllowRelay"),SYNO.SDS.Utils.CMS.IsAllowRelay(t)},Ext.define("SYNO.SDS.Utils.HiDPI",{constructor:function(){SYNO.Debug.warn("+++ SYNO.SDS.Utils.HiDPI is deprecated")},statics:{getRatio:function(t){var e=window.matchMedia&&window.matchMedia("(-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)").matches?1.5:1;return(window.devicePixelRatio||e)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}}}),Ext.define("SYNO.SDS.Background",{extend:"Ext.Container",constructor:function(t){Ext.apply(this,t),this.imgId=Ext.id(),this.cfg=t;var e={id:t.id,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()};SYNO.SDS.Background.superclass.constructor.call(this,e),this.createBackgroundTpl(this.cfg),this.mon(this,"beforedestroy",function(){this.backgroundTpl.$destroy()},this)},createBackgroundTpl:function(t){this.el&&(this.el.setVisibilityMode(Ext.Element.DISPLAY),this.el.createChild({tag:"div",id:"bgWallpaperWrapper"}),this.backgroundTpl=SYNO.SDS.CreateBackgroundTpl({el:"#bgWallpaperWrapper"}),this.backgroundTpl.setConfig({type:t.type,imgSrc:t.imgSrc,bgColor:t.bgColor}),t.imgW&&0this.stepStack.indexOf(t)&&this.stepStack.push(t),Ext.isString(e)&&this.stepStack.push(e)}}),Ext.define("SYNO.SDS.EnforceOTPWizard.WelcomeStep",{extend:"SYNO.SDS.Wizard.WelcomeStep",constructor:function(t){var e=Ext.apply({headline:_T("personal_settings","otp_welcome_step_title"),description:_T("otp_enforcement","welcome_step_desc"),disableNextInDemoMode:!0,keys:[{key:[10,13],scope:this,handler:this.getNext}]},t);SYNO.SDS.EnforceOTPWizard.WelcomeStep.superclass.constructor.call(this,e)},getNext:function(){var t=this.owner.username;t=t.replace(/\\/g,"/");var e=this.owner.getEncryptedParams({action:"getQRcodePage",account:t+"@"+_S("hostname")});return this.owner.setStatusBusy({text:_T("common","saving")}),this.sendWebAPI({api:"SYNO.API.OTP",version:1,method:"setup",params:e,scope:this,callback:function(t,e,i){this.owner.clearStatusBusy(),t&&e||this.owner.displayError();var s=e;s&&!0===s.success?(s.errno&&this.owner.getMsgBox().alert(this.title,_T(s.errno.section,s.errno.key)),this.owner.secretKey=s.key,this.owner.QRcodeImg=s.img,this.owner.qrcodeStep.load(),this.owner.goNext(this.nextId)):this.owner.displayError(s?s.errno:null)}}),!1}}),Ext.define("SYNO.SDS.EnforceOTPWizard.QRcodeStep",{extend:"SYNO.ux.FormPanel",constructor:function(t){var e=Ext.apply({headline:_T("personal_settings","otp_qrcode_step_title"),items:[{xtype:"syno_displayfield",value:String.format(_T("personal_settings","otp_install_app_desc"),_T("personal_settings","otp_support_apps_link"))},{xtype:"syno_displayfield",htmlEncode:!1,value:String.format(_T("personal_settings","otp_scan_qrcode_desc"),'('+_T("personal_settings","otp_enter_manually_link")+")"),listeners:{render:function(t){var e=t.el.first("a.pathlink");e&&this.mon(e,"click",this.launchEditDialog,this)},scope:this,single:!0,buffer:80}},{html:'',border:!1,style:"text-align: center;"}],keys:[{key:[10,13],scope:this,handler:this.getNext}]},t);SYNO.SDS.EnforceOTPWizard.QRcodeStep.superclass.constructor.call(this,e)},load:function(){Ext.get("qrcode_img").dom.src="data:image/png;base64,"+this.owner.QRcodeImg},getNext:function(){return this.owner.authStep.load(),this.nextId},launchEditDialog:function(){new SYNO.SDS.EnforceOTPWizard.QRcodeStep.EditDialog({owner:this.owner}).show()}}),Ext.define("SYNO.SDS.EnforceOTPWizard.QRcodeStep.EditDialog",{extend:"SYNO.SDS.BaseWindow",constructor:function(t){Ext.apply(this,t||{});var e={owner:this.owner,id:"edit-otp-dialog",width:430,height:220,minWidth:430,minHeight:220,shadow:!0,collapsible:!1,minimizable:!1,maximizable:!1,draggable:!1,title:_T("personal_settings","otp_wizard_title"),layout:"fit",trackResetOnLoad:!0,forceSelection:!0,waitMsgTarget:!0,border:!1,items:this.panel=this.initPanel(),buttons:[{xtype:"syno_button",btnStyle:"blue",text:_T("common","apply"),scope:this,handler:this.onApply},{xtype:"syno_button",btnStyle:"gray",text:_T("common","cancel"),scope:this,handler:this.close}],keys:[{key:[10,13],scope:this,handler:this.onApply}]};SYNO.SDS.EnforceOTPWizard.QRcodeStep.EditDialog.superclass.constructor.call(this,e)},initPanel:function(){var t=this.owner.username;t=t.replace(/\\/g,"/");var e={itemId:"otp_edit_panel",border:!1,items:[{xtype:"syno_displayfield",value:_T("personal_settings","otp_edit_desc")},{xtype:"syno_textfield",fieldLabel:_T("personal_settings","otp_account_name"),name:"account_name",labelWidth:150,value:t+"@"+_S("hostname"),allowBlank:!1},{xtype:"syno_displayfield",labelWidth:150,hideLabel:!1,fieldLabel:_T("personal_settings","otp_secret_key"),name:"edit_secret_key",value:this.owner.secretKey}],keys:[{key:[10,13],scope:this,handler:this.getNext}]};return new Ext.form.FormPanel(e)},getForm:function(){return this.panel.form},onApply:function(){if(!this.getForm().findField("account_name").isValid())return!1;var t=this.getForm().findField("account_name").getValue();t=t.replace(/\\/g,"/");var e=this.owner.getEncryptedParams({action:"editAccountName",secretKey:this.getForm().findField("edit_secret_key").getValue(),account:t});this.sendWebAPI({api:"SYNO.API.OTP",version:1,method:"setup",params:e,scope:this,callback:function(t,e,i){t&&e||this.owner.displayError();var s=e;s&&!0===s.success?(this.owner.QRcodeImg=s.img,this.owner.secretKey=s.key,this.owner.qrcodeStep.load(),this.close()):this.owner.displayError(s?s.errno:null)}})}}),Ext.define("SYNO.SDS.EnforceOTPWizard.AuthStep",{extend:"SYNO.ux.FormPanel",constructor:function(t){var e=Ext.apply({headline:_T("personal_settings","otp_auth_step_title"),items:[{xtype:"syno_displayfield",value:_T("personal_settings","otp_auth_step_desc")},{xtype:"syno_displayfield",value:""},{xtype:"syno_textfield",name:"OTP_auth",width:200,labelWidth:230,fieldLabel:_T("personal_settings","otp_auth_field"),emptyText:_T("personal_settings","otp_auth_field"),maxLength:6,regex:new RegExp("[0-9]{6}"),regexText:_T("personal_settings","otp_err_auth_code"),allowBlank:!1}],keys:[{key:[10,13],scope:this,handler:this.getNext}]},t);SYNO.SDS.EnforceOTPWizard.AuthStep.superclass.constructor.call(this,e)},load:function(){this.getForm().findField("OTP_auth").reset()},getNext:function(){if(!this.getForm().findField("OTP_auth").isValid())return!1;var t=this.form.findField("OTP_auth").getValue(),e=this.owner.getEncryptedParams({action:"authOTP",code:t});return this.owner.setStatusBusy({text:_T("common","saving")}),this.sendWebAPI({api:"SYNO.API.OTP",version:1,method:"setup",params:e,scope:this,callback:function(t,e,i){this.owner.clearStatusBusy(),t&&e||this.owner.displayError();var s=e;s&&!0===s.success?!0===s.auth_ok?(Ext.isEmpty(SYNO.SDS.Session)&&(SYNO.SDS.Session={}),Ext.isEmpty(s.SynoToken)||(SYNO.SDS.Session.SynoToken=encodeURIComponent(s.SynoToken)),s.mail&&this.owner.finishStep.setMail(s.mail),this.owner.goNext(this.nextId),this.owner.getButton("back").hide(),this.owner.getButton("next").setText(_T("common","ok")),this.owner.isLDAP||(this.owner.getButton("cancel").setText(_T("common","skip")),this.owner.getButton("cancel").show())):this.owner.displayError(s.errno):this.owner.displayError()}}),!1}}),Ext.define("SYNO.SDS.EnforceOTPWizard.FinishStep",{extend:"SYNO.ux.FormPanel",constructor:function(t){var e=t.isLDAP?_T("otp_enforcement","finish_step_desc_ldap"):_T("otp_enforcement","finish_step_desc"),i=Ext.apply({headline:_T("personal_settings","otp_finish_step_title"),trackResetOnLoad:!0,items:[{xtype:"syno_displayfield",htmlEncode:!1,value:e},{xtype:"syno_textfield",fieldLabel:_T("user","user_email"),readOnly:t.isLDAP,disabled:t.isLDAP,name:"mail",maxlength:512,vtype:"email",labelWidth:150}],keys:[{key:[10,13],scope:this,handler:this.getNext}]},t);SYNO.SDS.EnforceOTPWizard.FinishStep.superclass.constructor.call(this,i),this.mailField=this.form.findField("mail")},setMail:function(t){this.form.setValues({mail:t})},onSaveMail:function(t){var e=this.owner.getEncryptedParams({action:"saveMail",mail:t});this.owner.setStatusBusy({text:_T("common","loading")}),this.sendWebAPI({api:"SYNO.API.OTP",version:1,method:"setup",params:e,scope:this,callback:function(t,e,i){if(!t||!e)return this.owner.clearStatusBusy(),this.owner.displayError(),!1;if(!e||!0!==e.success)return this.owner.clearStatusBusy(),this.owner.displayError(),!1;this.owner.gotoDesktop()}})},getNext:function(){var t=this.mailField.getValue();return this.owner.isLDAP?this.owner.gotoDesktop():""===t?this.owner.markInvalid(this.mailField,_T("personal_settings","otp_err_email_required")):this.mailField.isValid()?this.mailField.isDirty()?this.onSaveMail(t):this.owner.gotoDesktop():this.owner.markInvalid(this.mailField,_T("common","error_bademail")),!1}}),Ext.define("SYNO.SDS.CustomizeLogo",{extend:"Ext.Container",constructor:function(t){Ext.apply(this,t);var e={width:t.width,height:t.height,cls:"sds-login-cuslogo-wrapper",items:[{xtype:"box",id:"sds-login-cuslogo-img",autoEl:{tag:"img",draggable:!1,src:Ext.BLANK_IMAGE_URL},listeners:{scope:this,afterrender:function(){this.mon(Ext.get("sds-login-cuslogo-img"),"load",this.initImg,this),Ext.getDom("sds-login-cuslogo-img").src=this.logo_path}}}]};SYNO.SDS.CustomizeLogo.superclass.constructor.call(this,e)},resize:function(){this.adjustImgPos()},getNatural:function(t){var e=new Image,i=t.dom;return Ext.isIE8?(e.src=i.src,{width:e.width,height:e.height}):Ext.isEmpty(i.naturalWidth)?this.getSize():{width:i.naturalWidth,height:i.naturalHeight}},initImg:function(){var t=Ext.fly("sds-login-cuslogo-img");this.imgSize=this.getNatural(t),this.adjustImgPos()},adjustImgPos:function(){if(this.imgSize){var t=Ext.fly("sds-login-cuslogo-img"),e=this.getWidth(),i=this.getHeight(),s=this.imgSize.width/e,n=this.imgSize.height/i;s>1||n>1?s>n?t.setSize({width:e,height:"auto"}):t.setSize({width:"auto",height:i}):t.setSize({width:"auto",height:"auto"}),"left"===this.logo_pos?t.alignTo(this.el,"l-l"):"right"===this.logo_pos?t.alignTo(this.el,"r-r"):t.alignTo(this.el,"c-c")}}}),Ext.define("SYNO.SDS.WelcomeInfo",{extend:"Ext.Container",constructor:function(t){Ext.apply(this,t);var e=[];this.logo_enable&&e.push(this.createLogo()),this.hasWelComeMsg()&&e.push(this.createWelComeMsg());var i={cls:"sds-login-welcome-info",items:e};this.callParent([i])},createLogo:function(){return this.logo=new SYNO.SDS.CustomizeLogo({width:304,height:140,logo_path:this.logo_path}),this.logo},hasWelComeMsg:function(){var t=""!==this.login_welcome_title,e=""!==this.login_welcome_msg;return t||e},createWelComeMsg:function(){var t=[];return this.login_welcome_title&&""!==this.login_welcome_title&&(this.login_welcome_title=this.login_welcome_title.replace(/ /g," "),t.push(this.createTitle())),this.login_welcome_msg&&""!==this.login_welcome_msg&&(this.login_welcome_msg=this.login_welcome_msg.replace(/ /g," "),t.push(this.createMsg())),this.msgWrapper=new Ext.Container({cls:"sds-login-welcome-info-wrapper",items:t}),this.msgWrapper},createTitle:function(){return this.title=new Ext.Container({cls:"sds-login-welcome-info-container",items:[{xtype:"box",autoEl:{tag:"div",cls:"sds-login-welcome-info-title",html:this.login_welcome_title,"ext:qtip":Ext.util.Format.htmlEncode(this.login_welcome_title)}}]}),this.title},createMsg:function(){return this.msg=new Ext.Container({cls:"sds-login-welcome-info-container",items:[{xtype:"box",autoEl:{tag:"div",cls:"sds-login-welcome-info-msg",html:this.login_welcome_msg,"ext:qtip":Ext.util.Format.htmlEncode(this.login_welcome_msg)}}]}),this.msg},resize:function(){if(this.msgWrapper){var t=this.msgWrapper.getEl(),e=Ext.lib.Dom.getViewHeight()-t.getTop()-20-26;t.setStyle("max-height",e+"px")}}}),Ext.define("SYNO.SDS.WidgetWindow",{extend:"SYNO.SDS.BaseWindow",widgetCls:"sds-widget-window",widgetOverHeaderCls:"sds-widget-over",headerTextPadding:34,initialized:!1,constructor:function(t){(t=t||{}).shadow=!1,t=Ext.applyIf(t,{constrain:!0,boxMaxHeight:205,boxMinHeight:121,boxMaxWidth:320,maximized:!0,maximizable:!1,minimizable:!1,resizable:!1}),this.callParent([t])},fillPadding:Ext.emptyFn,initDraggable:function(){this.dd=new Ext.Panel.DD(this,{ddGroup:"WidgetReorderAndShortCut",validateTarget:function(t,e,i){return!0},endDrag:function(t){this.proxy.hide(),this.panel.saveState(),this.panel.el.setStyle({visibility:"inherit"})}})},init:function(){var t=this,e=t.widget;t.initialized||(e&&e.toggleButtonCls&&(t.taskButton=SYNO.SDS.TaskBar.addWidget({widgetClass:e.toggleButtonCls,widgetWindow:this}),e.taskButton=t.taskButton,t.setMiniWidgetTaskButton()),t.initialized=!0)},setMiniWidgetTaskButton:function(){var t=this;Ext.isFunction(t.taskButton.setIcon)&&Ext.isFunction(t.taskButton.setTooltip)&&(t.taskButton.mon(t,"titlechange",function(e,i){t.taskButton.setTooltip(i)},t),t.taskButton.setIcon(t.iconURL),t.taskButton.setTooltip(t.title))},onOpen:function(t){var e=this;e.init(),e.minimized?(e.show(),e.hide(),e.el.setStyle("display","none"),e.taskButton&&e.taskButton.show()):(e.hidden=!1,e.taskButton&&e.taskButton.hide()),e.setPinStatus(e.pinned)},onRender:function(t,e){var i=this;i.callParent(arguments),i.el.addClass(this.widgetCls),i.header[i.onlyView?"addClass":"addClassOnHover"](i.widgetOverHeaderCls)},initTools:function(){var t=this;t.addable&&t.addTool({id:"add",qtip:_T("widget","add_widget_to_desktop"),handler:t.addWidget.createDelegate(this,[])}),t.pinable&&t.addTool({id:"pin",handler:t.onPin.createDelegate(this,[])}),t.callParent(arguments)},setAddToolDisabled:function(t){this.addable&&(this.tools.add.setVisible(!t),this.tools.add[t?"addClass":"removeClass"]("x-tool-disabled"))},setPinToolToggled:function(t){this.pinable&&this.tools.pin[t?"addClass":"removeClass"]("x-tool-toggled")},isAlwaysOnTop:function(){return this.pinned},setPinStatus:function(t){this[!0===t?"pin":"unpin"]()},onPin:function(){this[!0===this.pinned?"unpin":"pin"]()},pin:function(){this.setPinned(!0)},unpin:function(){this.setPinned(!1)},setPinned:function(t){this.pinned=t,this.setPinToolToggled(t),this.manager.orderWindows()},addWidget:function(){this.fireEvent("addWidget",[this])},createGhost:function(t,e,i){return t+=" "+this.widgetCls,this.callParent([t,e,i])},setIcon:function(t){var e=this,i=e.widget,s=i.widgetParams;e.callParent(arguments),e.iconURL=t,e.taskButton&&e.taskButton.setIcon&&e.taskButton.setIcon(t),e.icon=e.header.createChild({cls:"icon-click"}),e.mon(e.icon,"mouseenter",function(t,e){Ext.isFunction(i.onClickTitle)||SYNO.SDS.JSLoad(s.appInstance,function(){})}),e.mon(e.icon,"click",function(t,e){if(SYNO.SDS.DesktopMgr.show(SYNO.SDS.Desktop),Ext.isFunction(i.onClickTitle))i.onClickTitle();else{var n=s.launchParam?Ext.decode(s.launchParam):void 0;SYNO.SDS.AppLaunch(s.appInstance,n)}},e)},onMinimize:function(){var t=this;t.minimizable&&t.taskButton?(t.taskButton.show(),t.el.setVisibilityMode(Ext.Element.DISPLAY),t.hide(Ext.isIE9m&&!Ext.isIE9?void 0:t.taskButton.el)):t.close(),t.callParent(arguments)},maximize:function(){return this.maximized||(this.expand(!1),this.maximizable&&(this.tools.maximize.hide(),this.tools.restore.show()),this.maximized=!0,this.collapsible&&this.tools.toggle.hide(),this.el.addClass("x-window-maximized"),this.container.addClass("x-window-maximized-ct"),this.fitContainer(),this.fireEvent("maximize",this)),this},fitContainer:function(){this.setLargeSize()},setLargeSize:function(){var t=this;t.getEl().removeClass("sds-widget-window-medium"),t.setSize(320,205),t.hidden||t.doExpand(),t.mediumSize=!1},afterRender:function(){this.callParent(arguments),this.maximized||this.setMediumSize()},setMediumSize:function(){this.doCollapse(),this.getEl().addClass("sds-widget-window-medium"),this.setSize(320,121),this.mediumSize=!0},doCollapse:function(){var t=this.widget;t&&t.doCollapse&&t.doCollapse()},doExpand:function(){var t=this.widget;t&&t.doCollapse&&t.doExpand()},restore:function(){if(this.maximized){var t=this.tools;this.el.removeClass("x-window-maximized"),t.restore&&t.restore.hide(),t.maximize&&t.maximize.show(),this.maximized=!1,this.dd&&this.dd.unlock(),this.collapsible&&t.toggle&&t.toggle.show(),this.container.removeClass("x-window-maximized-ct"),this.setMediumSize(),this.doConstrain(),this.fireEvent("restore",this)}return this},getSizeAndPosition:function(){var t=this,e={};return(t.maximized||t.hidden||t.mediumSize)&&(t.draggable&&t.restorePos?(e.x=t.restorePos[0],e.y=t.restorePos[1],e.width=t.getWidth(),e.height=t.getHeight()):(e.x=t.x,e.y=t.y)),e},getStateParam:function(){var t=this,e={};return e.widgetClassName=t.widgetClassName,(t.maximized||t.hidden||t.mediumSize||t.pinned)&&(e.maximized=t.maximized,e.minimized=t.hidden,e.mediumSize=t.mediumSize,e.pinned=t.pinned),t.widget&&t.widget.getStateParam&&(e.widgetParams=t.widget.getStateParam()),Ext.apply(e,this.getSizeAndPosition()),e},destroy:function(){Ext.destroy(this.taskButton),this.callParent(arguments)},onActivate:Ext.emptyFn,onDeactivate:Ext.emptyFn});