1!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var s in i)("object"==typeof exports?exports:t)[s]=i[s]}}(window,(function(){return function(t){function e(e){for(var s,a,r=e[0],l=e[1],c=e[2],u=0,h=[];u<r.length;u++)a=r[u],Object.prototype.hasOwnProperty.call(n,a)&&n[a]&&h.push(n[a][0]),n[a]=0;for(s in l)Object.prototype.hasOwnProperty.call(l,s)&&(t[s]=l[s]);for(d&&d(e);h.length;)h.shift()();return o.push.apply(o,c||[]),i()}function i(){for(var t,e=0;e<o.length;e++){for(var i=o[e],s=!0,r=1;r<i.length;r++){var l=i[r];0!==n[l]&&(s=!1)}s&&(o.splice(e--,1),t=a(a.s=i[0]))}return t}var s={},n={1:0},o=[];function a(e){if(s[e])return s[e].exports;var i=s[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,a),i.l=!0,i.exports}a.m=t,a.c=s,a.d=function(t,e,i){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(a.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)a.d(i,s,function(e){return t[e]}.bind(null,s));return i},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="";var r=window.wpSDSjslibFn=window.wpSDSjslibFn||[],l=r.push.bind(r);r.push=e,r=r.slice();for(var c=0;c<r.length;c++)e(r[c]);var d=l;return o.push([97,0]),i()}([function(t,e,i){function s(){let t,e,i,s,n,o=arguments.length,a=0;for(;a<o;++a)for(i=arguments[a].split("."),n=window[i[0]],void 0===n&&(n=window[i[0]]={}),s=i.slice(1),t=s.length,e=0;e<t;++e)n=n[s[e]]=n[s[e]]||{};return n}i.d(e,"c",(function(){return s})),i.d(e,"p",(function(){return n.v})),i.d(e,"o",(function(){return n.u})),i.d(e,"x",(function(){return n.B})),i.d(e,"j",(function(){return n.g})),i.d(e,"n",(function(){return n.r})),i.d(e,"m",(function(){return n.q})),i.d(e,"r",(function(){return n.x})),i.d(e,"v",(function(){return n.z})),i.d(e,"y",(function(){return n.D})),i.d(e,"w",(function(){return n.A})),i.d(e,"D",(function(){return n.G})),i.d(e,"E",(function(){return n.H})),i.d(e,"C",(function(){return n.F})),i.d(e,"s",(function(){return n.y})),i.d(e,"h",(function(){return n.f})),i.d(e,"g",(function(){return n.d})),i.d(e,"q",(function(){return n.w})),i.d(e,"l",(function(){return n.l})),i.d(e,"F",(function(){return n.I})),i.d(e,"A",(function(){return n.E})),i.d(e,"a",(function(){return o.b})),i.d(e,"b",(function(){return o.c})),i.d(e,"d",(function(){return o.d})),i.d(e,"z",(function(){return a})),i.d(e,"f",(function(){return r})),i.d(e,"e",(function(){return l})),i.d(e,"B",(function(){return c})),i.d(e,"t",(function(){return d})),i.d(e,"u",(function(){return h})),i.d(e,"k",(function(){return m})),i.d(e,"i",(function(){return f}));var n=i(1),o=i(3);function a(t,e,i,s=window,n={}){const o=i.bind(s);return t.addEventListener(e,o,n),()=>{t.removeEventListener(e,o)}}function r(t,e,i){const s=t&&t.style;if(s){if(null==i)return document.defaultView&&document.defaultView.getComputedStyle?i=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(i=t.currentStyle),void 0===e?i:i[e];e in s||-1!==e.indexOf("webkit")||(e="-webkit-"+e),s[e]=i+("string"==typeof i?"":"px")}}function l(t,e){if(t.classList.add)for(const i of e.split(" "))t.classList.add(i);else t.className.indexOf(e)<0&&(t.className+=" ".concat(e))}function c(t,e){t.classList.remove?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,""))}window._D=window._D||function(){},window._S=window._S||function(){},String.prototype.hashCode=function(){let t,e,i=0;if(0===this.length)return i;for(t=0;t<this.length;t++)e=this.charCodeAt(t),i=(i<<5)-i+e,i|=0;return i};function d(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))}let u;function h(){if(Object(n.v)(u))return u;const t=_D("upnpmodelname");return u=/(j|slim|se)$/.test(t)&&t.indexOf("620slim")<0}function p(t){let e,i,s="";for(t=t.replace(/\r\n/g,"\n"),e=0;e<t.length;e++)i=t.charCodeAt(e),i<128?s+=String.fromCharCode(i):i>127&&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}function m(t){return Object(n.v)(t)&&null!==t?JSON.stringify(t):"null"}function f(t){return JSON.parse(t)}window.SYNO=window.SYNO||{},window.SYNO.ns=window.SYNO.namespace=s,SYNO.ns("SYNO.SDS.Utils"),SYNO.ns("SYNO.Util"),SYNO.SDS.isDefined=n.v,SYNO.SDS.isDebug=n.u,SYNO.SDS.defer=n.g,SYNO.SDS.isBoolean=n.r,SYNO.SDS.isArray=n.q,SYNO.SDS.GetBody=n.k,SYNO.SDS.isEmpty=n.x,SYNO.SDS.isNumber=n.z,SYNO.SDS.isString=n.D,SYNO.SDS.isFunction=n.y,SYNO.SDS.isDate=n.t,SYNO.SDS.GetBlankImageUrl=n.j,SYNO.SDS.formatString=n.i,SYNO.SDS.Utils.GetDSMPatchObject=n.m,SYNO.SDS.Utils.DSMPatchEqual=n.s,SYNO.SDS.Utils.GetURLParam=n.n,SYNO.SDS.isObject=n.A,SYNO.SDS.urlDecode=n.G,SYNO.SDS.urlEncode=n.H,SYNO.SDS.urlAppend=n.F,SYNO.SDS.emptyFn=n.h,SYNO.SDS.Utils.UserAgent=n.b,SYNO.SDS.HTML5Utils=n.a,SYNO.SDS.CopyTo=n.f,SYNO.Util.copy=function(t){return SYNO.Deprecated("SYNO.Util.copy","SYNO.SDS.copy"),SYNO.SDS.copy(t)}
1,SYNO.Util.copyApply=function(t,e,i){return SYNO.Deprecated("SYNO.Util.copyApply","SYNO.SDS.copyApply"),SYNO.SDS.copyApply(t,e,i)},SYNO.SDS.copy=n.d,SYNO.SDS.copyApply=n.e,SYNO.SDS.isSecure=n.C,SYNO.SDS.isElement=n.w,SYNO.SDS.applyIf=n.c,SYNO.SDS.getClassByName=n.l,SYNO.SDS.htmlEncode=n.p,SYNO.SDS.htmlDecode=n.o,SYNO.SDS.uuid=n.I,SYNO.Debug=o.b,SYNO.Remind=o.d,SYNO.Deprecated=o.c,SYNO.Assert=o.a,SYNO.ns("SYNO.SDS.Element"),SYNO.SDS.Element.on=a,SYNO.SDS.Element.addStyle=r,SYNO.SDS.Element.addClass=l,SYNO.SDS.Element.removeClass=c,SYNO.SDS.Utils.addFavIconLink=function(t,e,i){const s=document.getElementsByTagName("link"),n=document.createElement("link");let o;n.rel="icon",n.href=t,n.setAttribute("sizes",i),e&&(n.type=e);const a=document.head||document.getElementsByTagName("head")[0];for(let t=s.length-1;t>=0;t--)s[t]&&"icon"===s[t].getAttribute("rel")&&(o=s[t].getAttribute("sizes"),o&&i!==o||a.removeChild(s[t]));a.appendChild(n)},SYNO.SDS.Utils.clone=function t(e){if(!e||"object"!=typeof e)return e;if("function"==typeof e.clone)return e.clone();const i="[object Array]"===Object.prototype.toString.call(e)?[]:{};let s,n;for(s in e)e.hasOwnProperty(s)&&(n=e[s],i[s]=n&&"object"==typeof n?t(n):n);return i},SYNO.SDS.Utils.mergeDeep=function t(e,...i){if(!i.length)return e;const s=i.shift();if(Object(n.A)(e)&&Object(n.A)(s))for(const i in s)Object(n.A)(s[i])?(e[i]||Object.assign(e,{[i]:{}}),t(e[i],s[i])):Object.assign(e,{[i]:s[i]});return t(e,...i)},SYNO.SDS.Utils.nextElementSibling=function(t,e){let 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=d,SYNO.SDS.Utils.isLowLevelModel=h,SYNO.SDS.Utils.utfencode=p,SYNO.SDS.Utils.bin2hex=function(t){let e,i=0,s=[];for(i=(t=p(t)+"").length,e=0;e<i;e++)s[e]=t.charCodeAt(e).toString(16).replace(/^([\da-f])$/,"0$1");return s.join("")},SYNO.SDS.Utils.encode=m,SYNO.SDS.Utils.decode=f,SYNO.SDS.Utils.isInVirtualDSM=function(){const t=_D("synobios");return!!t&&("kvmx64"===t.toLowerCase()||"nextkvmx64"===t.toLowerCase()||"kvmcloud"===t.toLowerCase())},SYNO.SDS.Utils.isInC2DSM=function(){const t=_D("c2_dsm");return!!t&&"yes"===t.toLowerCase()},SYNO.SDS.Utils.isInAliDSM=function(){const t=_D("ali_dsm");return!!t&&"yes"===t.toLowerCase()},SYNO.ns("SYNO.SDS.Utils.CMS"),SYNO.SDS.Utils.CMS.IsAllowRelay=function(t){let e,i;return!!Object(n.A)(t)&&(e=Object(n.l)("SYNO.SDS.AdminCenter.MainWindow"),i=Object(n.l)("SYNO.SDS.ResourceMonitor.App"),!(!(!Object(n.x)(e)&&t instanceof e||!Object(n.x)(i)&&t instanceof i||!0==(s=t,!!(!0===s._relayObject&&Object(n.y)(s.findAppWindow)&&Object(n.A)(s.openConfig)&&Object(n.y)(s.hasOpenConfig)&&Object(n.y)(s.getOpenConfig)&&Object(n.y)(s.setOpenConfig))))||!t.hasOpenConfig("cms_id")));var s},SYNO.SDS.Utils.ParseSearchID=function(t){const e=t.split("?",2),i={className:"",params:{}};return i.className=e[0],2===e.length&&(i.params=Object(n.G)(e[1])),i},SYNO.SDS.Utils.GetAppIcon=function(t,e){if(t in SYNO.SDS.Config.FnMap){const 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){const e=SYNO.SDS.Config.FnMap[t].config;return SYNO.SDS.UIString.GetLocalizedString(e.title,t)}return""}},function(t,e,i){i.d(e,"v",(function(){return n})),i.d(e,"u",(function(){return o})),i.d(e,"B",(function(){return a})),i.d(e,"g",(function(){return r})),i.d(e,"r",(function(){return l})),i.d(e,"q",(function(){return c})),i.d(e,"k",(function(){return d})),i.d(e,"x",(function(){return u})),i.d(e,"z",(function(){return h})),i.d(e,"D",(function(){return p})),i.d(e,"A",(function(){return m})),i.d(e,"t",(function(){return f})),i.d(e,"j",(function(){return S})),i.d(e,"G",(function(){return g})),i.d(e,"H",(function(){return _})),i.d(e,"F",(function(){return x})),i.d(e,"h",(function(){return b})),i.d(e,"y",(function(){return y})),i.d(e,"i",(function(){return w})),i.d(e,"m",(function(){return v})),i.d(e,"s",(function(){return E})),i.d(e,"b",(function(){return T})),i.d(e,"n",(function(){return D})),i.d(e,"a",(function(){return O})),i.d(e,"f",(function(){return k})),i.d(e,"d",(function(){return N})),i.d(e,"e",(function(){return Y})),i.d(e,"C",(function(){return C})),i.d(e,"w",(function(){return A})),i.d(e,"c",(function(){return I})),i.d(e,"l",(function(){return P})),i.d(e,"p",(function(){return B})),i.d(e,"o",(function(){return F})),i.d(e,"I",(function(){return W})),i.d(e,"E",(function(){return R}));var s=i(0);function n(t){return void 0!==t}function o(){return g(location.search.substring(1)).jsDebug}function a(){return g(location.search.substring(1)).perf}function r(t,e,i){return e>0?window.setTimeout(t.bind(i),e):-1}function l(t){return!0===t||!1===t}function c(t){return Array.isArray(t)}function d(){return document.body||document.documentElement}function u(t){return null==t||c(t)&&!t.length||""===t}function h(t){return"number"==typeof t&&isFinite(t)}
1function p(t){return"string"==typeof t}function m(t){return!!t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return"[object Date]"===Object.prototype.toString.call(t)}function S(){return"scripts/ext-3/resources/images/default/s.gif"}function g(t="",e){if(u(t))return{};const i=window.decodeURIComponent,s=t.split("&"),n={};for(const t of s){const[e,s]=t.split("=");n[i(e)]=i(s)}return n}function _(t={}){const e=window.encodeURIComponent;for(let[i,n]of Object.entries(t))i=e(i),u(n)?t[i]="":f(n)?t[i]=Object(s.k)(n).replace(/"/g,""):t[i]=e(n);return Object.entries(t).map(([t,e])=>"".concat(t,"=").concat(e)).join("&")}function x(t,e,i){const s=g(e);return(i=void 0===i||i)&&-1===t.indexOf("SynoToken")&&!u(_S("SynoToken"))&&(s.SynoToken=decodeURIComponent(_S("SynoToken"))),((t,e)=>u(e)?t:t+(-1===t.indexOf("?")?"?":"&")+e)(t,_(s))}function b(){}function y(t){return"[object Function]"===Object.prototype.toString.call(t)||"[object AsyncFunction]"===Object.prototype.toString.call(t)}function w(t,...e){return t.replace(/\{(\d+)\}/g,(t,i)=>e[i])}function v(t,e,i){if("string"!=typeof t)return null;const s=t.split(".");return{major:s[0],minor:s[1],micro:s[2]||"0",nano:e,buildnumber:i}}function E(t,e,i=["major","minor","micro","nano"]){const s=m(t)?t:{},n=m(e)?e:{};for(const t of i)if(s[t]!==n[t])return!1;return!0}const T=function(){const t=navigator.userAgent.toLowerCase(),e=function(e){return e.test(t)},i={};return i.isEdge=e(/edge/),i.isOpera=e(/opera/),i.isChrome=!i.isEdge&&e(/\bchrome\b/),i.isWebKit=!i.isEdge&&e(/webkit/),i.isSafari=!(i.isChrome||i.isEdge)&&e(/safari/),i.isSafari2=i.isSafari&&e(/applewebkit\/4/),i.isSafari3=i.isSafari&&e(/version\/3/),i.isSafari4=i.isSafari&&e(/version\/4/),i.isSafari5=i.isSafari&&e(/version\/5/),i.isSafari5_0=i.isSafari&&e(/version\/5.0/),i.isGecko=!(i.isWebKit||i.isIE11||i.isEdge)&&e(/gecko/),i.isGecko2=i.isGecko&&e(/rv:1\.8/),i.isGecko3=i.isGecko&&e(/rv:1\.9/),i.isIE=!i.isOpera&&e(/msie/),i.isTrident7=e(/trident\/7/),i.isIE11=i.isTrident7,i.isIE12=e(/edge\/(\d+)./),i.isIE10=i.isIE&&(e(/msie 10/)||e(/trident\/6/)),i.isTrident6=i.isIE&&e(/trident\/6/),i.isIE10Touch=i.isTrident6&&e(/touch;/),i.isIE9=i.isIE&&e(/trident\/5/),i.isIE8=i.isIE&&!i.isIE9&&!i.isIE10&&!i.isIE11&&e(/trident/),i.isIE7=i.isIE&&!i.isIE8&&!i.isIE9&&!i.isIE10&&!i.isIE11&&e(/msie 7/),i.isIE6=i.isIE&&!i.isIE7&&!i.isIE8&&!i.isIE9&&!i.isIE10&&!i.isIE11&&e(/msie 6/),i.isModernIE=i.isIE12||i.isIE11||i.isIE&&!i.isIE6&&!i.isIE7&&!i.isIE8,i.isIE9m=i.isIE&&(i.isIE6||i.isIE7||i.isIE8||i.isIE9),i.isBorderBox=i.isIE9m&&!i.isStrict,i.isWindows=e(/windows|win32/),i.isMac=e(/macintosh|mac os x/),i.isAir=e(/adobeair/),i.isLinux=e(/linux/),i}();function D(t,e){let i,s,n=t.split("&"),o=decodeURIComponent,a={};return n.forEach((function(t){t=t.split("="),i=o(t[0]),s=o(t[1]),a[i]=e||!a[i]?s:[].concat(a[i]).concat(s)})),a}const O=function(){const t=window.XMLHttpRequest?new XMLHttpRequest:{},e=T;return{HTML5Progress:!!t.upload,HTML5SendBinary:!(!t.sendAsBinary&&!t.upload),HTML5ReadBinary:!!(window.FileReader||window.File&&window.File.prototype.getAsBinary),HTML5Slice:!(!window.File||!(window.File.prototype.slice||window.File.prototype.mozSlice||window.File.prototype.webkitSlice)),isSupportHTML5Upload:function(){return(e.isChrome||!e.isSafari4&&!e.isSafari5_0&&!(e.isWindows&&e.isSafari)&&!e.isGecko3&&!e.isOpera)&&(!!window.FormData||SYNO.SDS.HTML5Utils.HTML5SendBinary&&SYNO.SDS.HTML5Utils.HTML5ReadBinary&&SYNO.SDS.HTML5Utils.HTML5Slice)},isDragFile:function(t){try{if(e.isWebKit){return t.dataTransfer.types&&-1!=t.dataTransfer.types.indexOf("Files")}if(e.isGecko)return t.dataTransfer.types.contains&&t.dataTransfer.types.contains("application/x-moz-file")||0<=t.dataTransfer.types.indexOf("application/x-moz-file");if(e.isIE10||e.isModernIE)return t.dataTransfer.files&&t.dataTransfer.types&&t.dataTransfer.types.contains("Files")}catch(t){SYNO.Debug.log("Error in isDragFile")}return!1}}}();function k(t,e,i){return"string"==typeof i&&(i=i.split(/[,;\s]/)),i.forEach(i=>{e.hasOwnProperty(i)&&(t[i]=e[i])}),t}function N(t){const e=[],i=[];return function(t){let s,n=e.indexOf(t);if(-1!==n)return i[n];if(m(t)){s={},e.push(t),i.push(s);for(const e in t)t.hasOwnProperty(e)&&(s[e]=arguments.callee(t[e]))}else if(c(t)){s=[],e.push(t),i.push(s);for(let e=0;e<t.length;++e)s[e]=arguments.callee(t[e])}else s=t;return s}(t)}function Y(t,e,i){if(i&&Y(t,i),t&&e&&"object"==typeof e)for(const i in e)e.hasOwnProperty(i)&&(t[i]=SYNO.Util.copy(e[i]));return t}function C(){return/^https/i.test(window.location.protocol)}function A(t){return!!t&&Boolean(t.tagName)}function I(t,e){if(t)for(const i in e)n(t[i])||(t[i]=e[i]);return t}function P(t){let e=window;for(const i of t.split(".")){if(!e)return null;e=e[i]}return e||null}function B(t){return t?String(t).replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,"""):t}function F(t){return t?String(t).replace(/>/g,">").replace(/</g,"<").replace(/"/g,'"').replace(/&/g,"&"):t}function W(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))}function R(t,e,i,s){Object.defineProperty(t,e,{get:()=>(SYNO.Remind(s),i),configurable:!0})}}
1,function(t,e,i){i.d(e,"a",(function(){return n})),i.d(e,"c",(function(){return o})),i.d(e,"b",(function(){return a}));var s=i(98);const n=["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"],o=["h:i","H:i"],a=[" a",""];SYNO.ns("SYNO.SDS"),SYNO.SDS.formatDate=function(t,e){if(!(t instanceof Date))throw"need to be Date Object";const i=function(t){return t=(t=(t=(t=(t=(t=(t=(t=t.replace(/m/g,"MM")).replace(/d/g,"dd")).replace(/Y/g,"yyyy")).replace(/h/g,"hh")).replace(/H/g,"kk")).replace(/i/g,"mm")).replace(/a/g,"aaa")).replace(/s/g,"ss")}(e);return Object(s.a)(t,i)}},function(t,e,i){i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return o})),i.d(e,"d",(function(){return a})),i.d(e,"a",(function(){return r}));var s=i(1);const n=function(){const t=Object(s.u)(),e=window.console&&window.console.log&&!0,i=window.console||s.h,n=function(n){const o="error".split(",");n=n.split(",");const a={};return n.forEach((function(n){a[n]=function(n){return(t||-1!==o.indexOf(n))&&e?(Object(s.y)(window.console[n])?window.console[n]:s.h).bind(i):s.h}(n)})),a}("debug,trace,log,info,warn,error,group,groupCollapsed,groupEnd,profile,profileEnd,table,time,timeEnd,timeStamp"),o=n.log;return Object.assign(o,n),Object.assign(o,{isPerf:Object(s.B)(),mark:Object(s.B)()?function(t,e){return performance.getEntriesByName(t,"mark").length>0&&(o.warn("Mark",t,"already exists"),performance.clearMarks(t),performance.clearMeasures(t)),performance.mark(t,e)}:s.h,measure:Object(s.B)()?function(t,e){if(!performance.getEntriesByName(t,"mark")[0])return void o.warn("Mark",t,"not found");performance.measure(t,t);const i=performance.getEntriesByName(t,"measure")[0];o.log("%c"+t,"font-weight: bold;","\n","\t ","start:",i.startTime,"\n","\t ","duration:",i.duration,"ms","\n")}:s.h}
1),o}();function o(t,e){return a("".concat(t," is deprecated, please try to use ").concat(e," instead."))}function a(t){Object(s.u)()&&SYNO.Debug.error(t)}function r(t,e){if(!t)throw e}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e){Ext.namespace("SYNO.SDS.Window"),SYNO.SDS.Window=Ext.extend(SYNO.SDS.BaseWindow,{constructor:function(t){t=Ext.apply({minimizable:!1},t),SYNO.SDS.Window.superclass.constructor.call(this,t),this.owner&&Ext.isArray(this.owner.siblingWin)&&this.owner.siblingWin.push(this)},onBeforeDestroy:function(){this.owner&&Ext.isArray(this.owner.siblingWin)&&this.owner.siblingWin.remove(this),SYNO.SDS.Window.superclass.onBeforeDestroy.apply(this,arguments)},onMinimize:function(){this.hide(),SYNO.SDS.Window.superclass.onMinimize.apply(this,arguments)},isAlwaysOnTop:function(){return _S("standalone")}})},function(t,e){Ext.ns("SYNO.SDS.RebootPowerOff"),SYNO.SDS.RebootPowerOff.HAShow=function(t,e,i){SYNO.SDS.Desktop.getMsgBox().show({wait:!0,closable:!1,maxWidth:300,title:_D("product"),msg:_T("common","loading")}),synowebapi.promises.request({api:"SYNO.SHA.Panel.Overview",method:"load",params:{cache_timeout:30},version:1}).then(function(t,e){let i=SYNO.API.Util.GetValByAPI(e,"SYNO.SHA.Panel.Overview","load","lnode"),s=SYNO.API.Util.GetValByAPI(e,"SYNO.SHA.Panel.Overview","load","rnode"),n=SYNO.API.Util.GetValByAPI(e,"SYNO.SHA.Panel.Overview","load","ha"),o=SYNO.API.Util.GetValByAPI(e,"SYNO.SHA.Panel.Overview","load","buttons"),a="",r="",l="",c={},d=!1;(n.is_in_error_mode||i&&"warning_offline"!==i.state&&"offline"!==i.state)&&(l=n.is_in_error_mode&&"passive"===i.role?"noncluster":i.role,"active"!==i.role&&(d=("online"===i.state||"warrning_online"===i.state)&&"offline"!==i.state),0===i.location?a=l:1===i.location&&(r=l)),(n.is_in_error_mode||s&&"warning_offline"!==s.state&&"offline"!==s.state)&&(l=n.is_in_error_mode&&"passive"===s.role?"noncluster":s.role,"active"!==s.role&&(d=("online"===s.state||"warrning_online"===s.state)&&"offline"!==s.state),0===s.location?a=l:1===s.location&&(r=l));const u="enabled"===o.switchover,h={shutdown:{active:"",passive:""},reboot:{active:"",passive:""},shutting_down:{active:""}};return function(t,e){"active"==t.role?0===t.location?(e.active=_TT("SYNO.SDS.HA.Instance","ui","controller_A"),e.passive=_TT("SYNO.SDS.HA.Instance","ui","controller_B")):(e.active=_TT("SYNO.SDS.HA.Instance","ui","controller_B"),e.passive=_TT("SYNO.SDS.HA.Instance","ui","controller_A")):0===t.location?(e.active=_TT("SYNO.SDS.HA.Instance","ui","controller_B"),e.passive=_TT("SYNO.SDS.HA.Instance","ui","controller_A")):(e.active=_TT("SYNO.SDS.HA.Instance","ui","controller_A"),e.passive=_TT("SYNO.SDS.HA.Instance","ui","controller_B"))}(i,c),c.ha=n.host,function(t,e,i,s){e?(s.shutdown.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutdown_active_while_passive_eligible"),t.active,t.passive),s.shutdown.passive=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutdown_passive_while_passive_eligible"),t.ha,t.passive),s.reboot.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","reboot_active_while_passive_eligible"),t.active,t.passive),s.reboot.passive=String.format(_TT("SYNO.SDS.HA.Instance","ui","reboot_passive_while_passive_eligible"),t.ha,t.passive)):i?(s.shutdown.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutdown_active_while_passive_not_eligible"),t.active,t.passive),s.shutdown.passive=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutdown_passive_while_passive_not_eligible"),t.passive),s.reboot.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","reboot_active_while_passive_not_eligible"),t.active,t.passive),s.reboot.passive=String.format(_TT("SYNO.SDS.HA.Instance","ui","reboot_passive_while_passive_not_eligible"),t.passive)):(s.shutdown.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutdown_active_while_passive_offline"),t.ha,t.active,t.passive),s.reboot.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","reboot_active_while_passive_not_eligible"),t.active,t.passive)),s.shutting_down.active=String.format(_TT("SYNO.SDS.HA.Instance","ui","shutting_down_host_desc"),t.active),s.shutdown.ha=i?String.format(SYNO.SDS.HA.T("overview","warning_shutdown_cluster"),t.active,t.passive):String.format(SYNO.SDS.HA.T("overview","warning_shutdown_cluster_no_passive"),t.active),s.reboot.ha=String.format(SYNO.SDS.HA.T("overview","warning_reboot_cluster"),t.ha)}(c,u,d,h),{type:t,role0:a,role1:r,msg:h,can_switchover:u}}.bind(this,e)).then((function(t){SYNO.SDS.Desktop.getMsgBox().hide(),i(t)}))},Ext.define("SYNO.SDS.RebootPowerOff.Window",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){this.callParent([this.fillConfig(t)])},fillConfig:function(t){t=t||{};const e={width:400,autoHeight:!0,header:!1,headerAsText:!1,draggable:!1,resizable:!1,minimizable:!1,maximizable:!1,
1closable:!1,cls:"x-window-dlg syno-sds-reboot-poweroff-window",items:[{xtype:"container",itemId:"wrap",items:[{xtype:"syno_formpanel",cls:"reboot-poweroff-content",autoHeight:!0,itemId:"content",items:this.getContentItems(t)}]}],buttonAlign:"right",fbar:[{xtype:"syno_button",text:_T("common","cancel"),handler:function(){SYNO.SDS.TaskBar.unmask(),this.close()},scope:this},{xtype:"syno_button",itemId:"ok",btnStyle:"blue",text:_T("common","ok"),disabled:!0,handler:this.onOKHandler,scope:this}],listeners:{beforerender:function(){SYNO.SDS.TaskBar.mask()}}};return Ext.apply(e,t)},getContentItems:function(t){const e=[],i={xtype:"syno_radio",name:"node",hideLabel:!0,htmlEncode:!1,listeners:{check:this.onCheck,scope:this}};return e.push({xtype:"syno_displayfield",value:"reboot"===t.type?_TT("SYNO.SDS.HA.Instance","ui","reboot_desc"):_TT("SYNO.SDS.HA.Instance","ui","poweroff_desc")}),Ext.isEmpty(t.role0)||Ext.isEmpty(t.role1)||e.push(Ext.apply({},{inputValue:"ha",boxLabel:_TT("SYNO.SDS.HA.Instance","ui","controller_A_B")},i)),t.role0&&e.push(Ext.apply({},{inputValue:t.role0,boxLabel:String.format(_TT("SYNO.SDS.HA.Instance","ui","controller_A")+" ({0})",_TT("SYNO.SDS.HA.Instance","ui",t.role0+"_server"))},i)),t.role1&&e.push(Ext.apply({},{inputValue:t.role1,boxLabel:String.format(_TT("SYNO.SDS.HA.Instance","ui","controller_B")+" ({0})",_TT("SYNO.SDS.HA.Instance","ui",t.role1+"_server"))},i)),this.msg=t.msg,this.can_switchover=t.can_switchover,e},onCheck:function(){const t=this.getOKButton();Ext.isEmpty(this.getRadioValue())?t.diable():t.enable()},getOKButton:function(){return this.getFooterToolbar().getComponent("ok")},getRadioValue:function(){return this.getComponent("wrap").getComponent("content").getForm().getValues().node},onOKHandler:function(){SYNO.SDS.TaskBar.unmask();const t=this.getRadioValue(),e={isDifferentNode:!1};"active"!==t&&"ha"!==t&&(e.isDifferentNode=!0),e.node=t,e.type=this.type,e.msg=this.msg,e.can_switchover=this.can_switchover,t&&("reboot"===this.type?SYNO.SDS.System.RebootWithNode(e):"poweroff"===this.type&&SYNO.SDS.System.PowerOffWithNode(e),this.close())}})},function(t,e){Ext.define("SYNO.SDS.MessageBoxV5",{extend:"SYNO.SDS.ModalWindow",ariaRole:"alertdialog",maxWidth:600,minWidth:420,minProgressWidth:420,minPromptWidth:250,emptyText:" ",defaultTextHeight:75,mbIconCls:"",fbButtons:null,opt:null,bodyEl:null,msgEl:null,progressBar:null,gridEl:null,constructor:function(t){this.opt={},this.buttonNames=["custom","cancel","no","ok","yes"],this.leftButtonNames=["leftCustom"],this.buttonText=Ext.MessageBox.buttonText,(t=t||{}).cls=t.cls?t.cls+" x-window-dlg":"x-window-dlg",t.fbar=t.fbar||this.getButtons(t),this.callParent([Ext.apply(t,{closable:!0,stateful:!1,resizable:!1,minimizable:!1,maximizable:!1,header:t.draggable||!1,draggable:t.draggable||!1,buttonAlign:"left",elements:"body",padding:"24px 30px 0 30px"})]),this.draggable&&this.addClass("msgbox-draggable")},onRender:function(){this.callParent(arguments);const t=Ext.id();this.bodyEl=this.body.createChild({html:'<div class="ext-mb-content"><div class="ext-mb-title"></div><span class="ext-mb-text" id='+t+'></span><br class="ext-mb-br"/><div class="ext-mb-fix-cursor"></div></div><div class="ext-mb-grid"></div>'}),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();const 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)}
1,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)){const 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){const e=t.map((function(t){return[t]}));if(this.grid)return void this.grid.store.loadData(e);const i=new Ext.grid.ColumnModel({columns:[{dataIndex:"data",renderer:function(t,e,i){const 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),a=s.findIndex(t=>t===o);s[Math.min(Math.max(0,a+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){const 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){const 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(const 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}
1,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){let e,i,s,n=0;return this.fbButtons.custom.removeClass("syno-mb-custom-btn"),t?(Ext.iterate(this.fbButtons,(function(o,a){e=t[o],e?(a.show(),this.updateBtnByCfg(o,a,e),!this.extra||this.extra.btnStyle===a.btnStyle||"yes"!==o&&"ok"!==o||!a.el||a.el.hasClass(s)||(i=String.format("syno-ux-button-{0}",a.btnStyle),s=String.format("syno-ux-button-{0}",this.extra.btnStyle||"blue"),a.removeClass(i),a.addClass(s)),n+=a.container.getWidth()):a.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){let 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);let 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){const a={yes:{text:_T("common","delete"),btnStyle:"red"},cancel:{text:this.buttonText.cancel}};return this.showMsg(Object.assign({title:t,msg:e,buttons:n||a,fn:i,scope:s,minWidth:this.minWidth},o)),this},focus:function(){let t=this.focusEl;this.fbButtons.yes&&this.fbButtons.yes.isVisible()?this.fbButtons.yes.focus():(t=t||this.focusEl,t.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,a){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},a)),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,a,r){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:a},r)),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},function(t,e){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;let e='<div class="content">{0}{1}{2}</div>',i="",s="",n="";!0===t.closable&&(n='<div id={0} class="close-btn" role="button" aria-label="{1}" tabIndex="0"></div>',n=String.format(n,this.closeBtnId=Ext.id(),_T("common","close"))),Ext.isString(t.text)&&(i='<span id={0} class="text">{1} </span>',i=String.format(i,this.textId=Ext.id(),t.text)),Ext.isString(t.actionText)&&(s='<span id={0} class="action-text" role="button" aria-label="{1}" tabIndex="0">{1}</span>',s=String.format(s,this.actionTextId=Ext.id(),t.actionText)),e=String.format(e,i,s,n);const o={cls:"syno-sds-toast-box",html:e,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(){let t="t-t";
1this.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()}})},function(t,e){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)}})},function(t,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()){const e=Ext.KeyNav.prototype.doRelay.apply(this,arguments);return(Ext.isIE9&&Ext.isStrict||!Ext.isIE)&&Ext.EventManager.useKeydown&&this.scope.fireKey(t),e}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){let 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){const e=this.view.getNode(t);e&&this.innerList.scrollChildIntoView(e,!1)}const i=this.view.getSelectedNodes()[0];this.innerList.set({"aria-activedescendant":i.id})},onViewOver:function(t,e){if(this.inKeyMode)return;const i=this.view.findItemFromChild(e);if(i){const t=this.view.indexOf(i);this.select(t,!1)}else this.view.clearSelections()},onViewClick:function(t){const 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){const e=t.getKey(),i=this.getValue();this.trigger.setVisible(!!i),i.length<this.minChars?this.collapse():i===this.lastQuery&&t.ENTER===e?this.expand():!1===this.editable||!0===this.readOnly||t.ENTER!==e&&t.BACKSPACE!==e&&t.DELETE!==e&&t.isSpecialKey()||(this.lastKey=e,this.dqTask.delay(this.queryDelay))},preFocus:function(){const t=this.el;this.emptyText&&(t.dom.value===this.emptyText&&this.el.hasClass(this.emptyClass)&&this.setRawValue(""),t.removeClass(this.emptyClass)),this.selectOnFocus&&t.dom.select()},initQuery:function(){this.view.clearSelections(),this.doQuery(this.getRawValue())},getRawValue:function(){let t=this.rendered?this.el.getValue():Ext.value(this.value,"");return t===this.emptyText&&this.el.hasClass(this.emptyClass)&&(t=""),t},getValue:function(){if(!this.rendered)return this.value;let t=this.el.getValue();return(t===this.emptyText&&this.el.hasClass(this.emptyClass)||void 0===t)&&(t=""),t},onTriggerClick:function(){this.getValue()&&(this.setValue(""),this.trigger.hide(),this.collapse()),this.focus(!1,200)}}),SYNO.SDS.Utils.CheckStrongPassword=Ext.extend(Object,{passwordPolicy:null,isFakePasswd:function(t,e){if("12345678"===t&&"87654321"===e)return!0},getForm:null,getUserAcc:null,getUserDesc:null,getPasswd:null,getPasswdConfirm:null,getStartValidate:null,initPasswordChecker:function(t){Ext.each(["getForm","getUserAcc","getUserDesc","getPasswd","getPasswdConfirm","getStartValidate"],(function(e){this[e]=t[e]}),this)},setValue:function(t,e){this.getForm().findField(this[t]).setValue(e)},getInfo:function(t){return Ext.isFunction(this[t])?this[t].call(this.scope||this):Ext.isString(this[t])?Ext.isFunction(this.getForm)?null===(e=this.getForm().findField(this[t]))||void 0===e?void 0:e.getValue():this[t]:void 0;var e},isStrongValidator:function(){const t=this.getInfo("getUserAcc"),e=this.getInfo("getUserDesc"),i=this.getInfo("getPasswd"),s=this.getInfo("getPasswdConfirm");let n="";return!1===this.getStartValidate()||(!0===this.isFakePasswd(i,s)||(n=this.isPasswordValid(i,t,e),n))},getPasswordBlankText:function(){var t;return!Ext.isFunction(this.getForm)||(null===(t=this.getForm().findField(this.getPasswd))||void 0===t?void 0:t.blankText)},isPasswordValid:function(t="",e="",i=""){let s=!1,n=!1;const o={mixed_case:!1,included_special_char:!1,included_numeric_char:!1,exclude_username:!1,min_length_enable:!1},a=[];let r=0,l="";const c=Ext.util.Format.lowercase(t),d=Ext.util.Format.lowercase(e),u=Ext.util.Format.lowercase(i);if("admin"===d&&t.length<8)return String.format(_T("passwd","min_length_default"),"admin",8);if(!1===this.passwordPolicy.strong_password_enable)return!0;
1if(0>=t.length)return this.getPasswordBlankText();for(""!==d&&-1!==c.indexOf(d)||""!==u&&-1!==c.indexOf(u)||(o.exclude_username=!0),r=0;r<t.length;r++)l=t.charAt(r),-1!=="abcdefghijklmnopqrstuvwxyz".indexOf(l)?s=!0:-1!=="ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(l)?n=!0:-1!=="~`!@#$%^&*()-_+={[}]|\\:;\"'<,>.?/ ".indexOf(l)?o.included_special_char=!0:-1!=="1234567890".indexOf(l)&&(o.included_numeric_char=!0);for(r in!0===s&&!0===n&&(o.mixed_case=!0),t.length>=this.passwordPolicy.min_length&&(o.min_length_enable=!0),o)!0===this.passwordPolicy[r]&&!1===o[r]&&("min_length_enable"===r?a.push(_T("passwd",r)+" "+this.passwordPolicy.min_length):a.push(_T("passwd",r)));return 0===a.length||_T("passwd","passwd_strength_warn")+a.join(", ")+_T("common","period")}})},function(t,e){SYNO.namespace("SYNO.SDS._SystemTray.Component"),Ext.define("SYNO.SDS._SystemTray.Component",{extend:"Ext.BoxComponent",constructor:function(t){this.instance=t.instance,this.callParent(arguments)},afterRender:function(){this.callParent(arguments),this.getEl().on("click",this.onClick,this)},onClick:function(t,e,i){SYNO.SDS.DesktopMgr.show(SYNO.SDS.Desktop),this.instance.show(),this.hide()}}),SYNO.namespace("SYNO.SDS.TrayItem"),SYNO.SDS.BaseTrayItem=Ext.extend(Ext.Component,{appInstance:null,constructor:function(){SYNO.SDS.BaseTrayItem.superclass.constructor.apply(this,arguments)},onClose:Ext.emptyFn,onClick:Ext.emptyFn,onDblClick:Ext.emptyFn,onContextMenu:Ext.emptyFn,beforeDestroy:function(){this.onBeforeDestroy(),SYNO.SDS.BaseTrayItem.superclass.beforeDestroy.apply(this,arguments)},onBeforeDestroy:function(){this.appInstance&&this.appInstance.removeInstance(this)}}),SYNO.SDS.TrayItem=Ext.extend(SYNO.SDS.BaseTrayItem,{msgBox:null,constructor:function(){SYNO.SDS.TrayItem.superclass.constructor.apply(this,arguments)},getMsgBox:function(){function t(t,e){return function(){return e.apply(t,arguments)}}return this.msgBox&&!this.msgBox.isDestroyed||(this.msgBox=new SYNO.SDS.MessageBoxV5({}),this.msgBoxWrapper={show:t(this.msgBox,this.msgBox.showMsg),hide:t(this.msgBox,this.msgBox.doClose),progress:t(this.msgBox,this.msgBox.progress),wait:t(this.msgBox,this.msgBox.wait),alert:t(this.msgBox,this.msgBox.alert),confirm:t(this.msgBox,this.msgBox.confirm),prompt:t(this.msgBox,this.msgBox.prompt),getDialog:function(){return this}.createDelegate(this.msgBox),isVisible:t(this.msgBox,this.msgBox.isVisible),setIcon:t(this.msgBox,this.msgBox.setIconClass),updateProgress:t(this.msgBox,this.msgBox.updateProgress),updateText:t(this.msgBox,this.msgBox.updateText)}),this.msgBoxWrapper}}),SYNO.namespace("SYNO.SDS.AppTrayItem"),SYNO.SDS.AppTrayItem=Ext.extend(SYNO.SDS.TrayItem,{taskButton:null,constructor:function(t){const e=void 0!==this.jsConfig.iconCls?this.jsConfig.iconCls:null;SYNO.SDS.AppTrayItem.superclass.constructor.apply(this,arguments),this.systemTrayId?this.getTrayButton=Promise.resolve(SYNO.SDS.TaskBar.findSystemTrayButtons(this.systemTrayId)):this.getTrayButton=SYNO.SDS.TaskBar.addTray({instance:this,...t.trayButtonProps||{}}),this.getTrayButton.then(t=>{this.taskButton=t,this.taskButton.on("click",this.onClick.bind(this)),e&&this.taskButton.setIconClass(e),this.setTitle(SYNO.SDS.UIString.GetLocalizedString(i.title||this.jsConfig.title,i.jsID||this.jsConfig.jsID))});var i=this.appInstance?this.appInstance.jsConfig:{}},onBeforeDestroy:function(){this.taskButton.destroy(),this.taskButton=null,SYNO.SDS.AppTrayItem.superclass.onBeforeDestroy.apply(this,arguments)},setIconClass:function(t){this.taskButton.setIconClass(t)},setTitle:function(t){this.taskButton.setTip(t)},setTaskButtonVisible:async function(t){let e=this.taskButton;e||(e=await this.getTrayButton);this.taskButton.isVisible()!==t&&this.taskButton.setVisible(t)},clearUnreadNum(){this.taskButton&&this.taskButton.setUnreadNum(0)},updateUnreadNum(t){this.taskButton&&this.taskButton.setUnreadNum(t)},getUnreadNum(){this.taskButton&&this.taskButton.getUnreadNum()},open:Ext.emptyFn,request:Ext.emptyFn,getTaskBarBtnId:Ext.emptyFn}),Ext.define("SYNO.SDS.Tray.ArrowTray",{extend:"SYNO.SDS.AppTrayItem",arrowCls:"sds-tray-panel-arrow",arrowAlignPosition:"t-b",arrowToPanelAlignPosition:"b-t",constructor:function(t){this.callParent(arguments),this.getTrayButton.then(()=>{this.taskButton.hide(),this.onButtonReady(this.taskButton)}),this.panel=this.initPanel(),this.addManagedComponent(this.panel),this.mon(Ext.getDoc(),"mousedown",this.onMouseDown,this),this.mon(this.panel,"beforeshow",this.onPanelBeforeShow,this),this.mon(this.panel,"beforehide",this.onPanelBeforeHide,this)},onButtonReady:function(){},initPanel:function(){},onPanelBeforeShow:function(){const t=this;t.panelArrow||(t.panelArrow=t.panel.el.createChild({tag:"div",cls:t.arrowCls}
1)),t.panel&&(t.panelArrow.anchorTo(t.panel.el,t.arrowToPanelAlignPosition,[0,0]),t.taskButton.toggle(!0))},onPanelBeforeHide:function(){this.panelArrow&&this.panelArrow.removeAnchor(),this.panel&&this.panel.el.removeAnchor()},containElement:function(t,e){return t[0]<=e[0]&&t[1]<=e[1]},onClose:function(){const t=this;t.panel.isVisible()&&t.panel.hide()},onMouseDown:function(t){const e=this;t.within(e.taskButton.el)||e.panel&&e.panel.isVisible()&&!t.within(e.panel.el)&&(e.taskButton.toggle(!1),e.panel.hide())},onClick:function(){const t=this;t.panel.isVisible()?(t.taskButton.toggle(!1),t.panel.hide()):(t.panel.show(),t.panel.el.anchorTo(t.taskButton.el,t.arrowAlignPosition,[0,6]))}}),Ext.define("SYNO.SDS.Tray.Panel",{extend:"Ext.Panel",constructor:function(t){t=t||{},(t=Ext.apply({hidden:!0,floating:!0,shadow:!1,renderTo:document.body},t)).cls=t.cls?t.cls+" sds-tray-panel":" sds-tray-panel",this.callParent([t])},destroy:function(){const t=this;t.getEl().removeAnchor(),t.callParent(arguments)}})},function(t,e){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){const e=this.badgeNum;let i;this.el&&(t=t||0,this.badgeNum=t,!this.hideNum&&this.el&&(t>99?(t=100,i=100):i=t,Math.min(e,100)!==t&&this.el.update(i)),this.setBadgeVisible(t>0),e!==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)}})},function(t,e){Ext.namespace("SYNO.API"),SYNO.API.Store=Ext.extend(Ext.data.Store,{defaultParamNames:{start:"offset",limit:"limit",sort:"sort_by",dir:"sort_direction"},constructor:function(t){t.api&&t.method&&t.version&&!t.proxy&&(this.proxy=new SYNO.API.Proxy({api:t.api,method:t.method,version:t.version,appWindow:t.appWindow,encryption:t.encryption})),SYNO.API.Store.superclass.constructor.apply(this,arguments)},load:function(){return!this.isDestroyed&&SYNO.API.Store.superclass.load.apply(this,arguments)}}),SYNO.API.CompoundStore=Ext.extend(SYNO.API.Store,{constructor:function(t){Ext.apply(t,{api:"SYNO.Entry.Request",version:1,method:"request"}),SYNO.API.JsonStore.superclass.constructor.call(this,Ext.apply(t,{reader:new SYNO.API.CompoundReader(t)}))}}),SYNO.API.JsonStore=Ext.extend(SYNO.API.Store,{constructor:function(t){SYNO.API.JsonStore.superclass.constructor.call(this,Ext.apply(t,{reader:new Ext.data.JsonReader(t)}))}})},function(t,e){Ext.define("SYNO.API.CompoundReader",{extend:"Ext.data.JsonReader",constructor:function(){this.callParent(arguments)},readRecords:function(t){let e,i=[],s=this.meta.roots,n={success:!1,records:[],totalRecords:0};if(this.compoundData=t,!Ext.isObject(t))return n;if(Ext.each(t.result,(function(t,o,a){Ext.isArray(s)&&(this.getRoot=this.createAccessor(s[o])),!0===t.success?e=this.superclass().readRecords.call(this,t.data):i.push({response:t,index:o,total:a}
1),Ext.isFunction(this.meta.onCompoundResponse)&&(e=this.meta.onCompoundResponse(t,e)),n.records=n.records.concat(e.records),n.totalRecords+=e.totalRecords}),this),n.success=!t.has_fail,!1===n.success)throw i;return n}})},function(t,e){Ext.namespace("SYNO.API"),SYNO.API.Proxy=Ext.extend(Ext.util.Observable,{constructor:function(t){t=t||{},Ext.apply(this,t),this.addEvents("exception","beforeload","loadexception"),SYNO.API.Proxy.superclass.constructor.call(this);const e=Ext.data.Api.actions;this.activeRequest={};for(const t in e)e.hasOwnProperty(t)&&(this.activeRequest[e[t]]=void 0)},request:function(t,e,i,s,n,o,a){!1!==this.fireEvent("beforeload",this,i)?this.doRequest.apply(this,arguments):n.call(o||this,null,a,!1)},doRequest:function(t,e,i,s,n,o,a){if(!s)return;const r={};this.appWindow&&(r.appWindow=this.appWindow),!a.timeout&&this.timeout&&Ext.apply(r,{timeout:this.timeout}),this.encryption&&Ext.apply(r,{encryption:this.encryption}),Ext.isObject(s.meta.compound)&&Ext.isArray(s.meta.compound.params)&&(r.compound=Ext.apply({},s.meta.compound),Ext.isObject(i)&&Ext.each(r.compound.params,(function(t){t.params=Ext.apply(t.params||{},i)}),this),i={});this.activeRequest[t]=SYNO.API.Manager.requestAjaxAPI(this.api,this.method,this.version,r,i,(e,i)=>{this.onRequestAPI(e,i,s,n,o,a,t)}),Ext.isEmpty(this.activeRequest[t])&&this.onRequestAPI(!1,void 0,i,a,s,n,o,a,t)},onRequestAPI:function(t,e,i,s,n,o,a){this.activeRequest[a]=void 0;let r=null,l=null;if(t)try{r=i.readRecords(e)}catch(t){l=t,SYNO.Debug.error("Failed to read data, ",t)}!t||l?(this.fireEvent("loadexception",this,o,e,l),this.fireEvent("exception",this,"response",Ext.data.Api.actions.read,o,e,l)):this.fireEvent("load",this,e,o),s.call(n||this,r,o,t)}})},function(t,e){SYNO.API.TreeLoader=Ext.extend(Ext.tree.TreeLoader,{load:function(t,e,i){if(this.clearOnLoad)for(;t.firstChild;)t.removeChild(t.firstChild);this.doPreload(t)?this.runCallback(e,i||t,[t]):(this.directFn||this.method&&this.api||this.dataUrl||this.url)&&this.requestData(t,e,i||t)},requestData:function(t,e,i){!1!==this.fireEvent("beforeload",this,t,e)?this.method&&this.api?this.transId=this.doRequest.apply(this,arguments):(this.dataUrl||this.url)&&(this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:e,node:t,scope:i},params:this.getParams(t)})):this.runCallback(e,i||t,[])},handleResponseCallback:function(t,e,i,s,n){t?this.handleResponse(n):this.handleFailure(n)},doRequest:function(t,e,i){const s=this.getParams(t);return SYNO.API.Manager.requestAjaxAPI(this.api,this.method,this.version,{timeout:this.timeout,encryption:this.encryption,scope:this,appWindow:this.appWindow||!1,argument:{callback:e,node:t,scope:i}},s,this.handleResponseCallback,this)},processResponse:function(t,e,i,s){try{let n=t.responseData||Ext.decode(t.responseText);if(this.dataroot){Ext.isArray(this.dataroot)||(this.dataroot=this.dataroot.split(","));const t=this.dataroot;for(const e in t)t.hasOwnProperty(e)&&(n=n[t[e]])}e.beginUpdate();for(let t=0,i=n.length;t<i;t++){const i=this.createNode(n[t],e);i&&e.appendChild(i)}e.endUpdate(),this.runCallback(i,s||e,[e])}catch(e){this.handleFailure(t)}}})},function(t,e){Ext.namespace("SYNO.API.Form"),SYNO.API.Form.Traverse=function(t,e){if(!t)return;let i,s,n,o,a=t.elements||(document.forms[t]||Ext.getDom(t)).elements,r=!1;Ext.each(a,(function(t){i=t.name,s=t.type,(o=Ext.getCmp(t.id))&&(Ext.isEmpty(i)&&Ext.isFunction(o.getName)&&(i=o.getName()),!t.disabled&&i&&(/select-(one|multiple)/i.test(s)?Ext.each(t.options,(function(t){t.selected&&(n=t.hasAttribute?t.hasAttribute("value"):t.getAttributeNode("value").specified,e(o,i,n?t.value:t.text,s))})):/file|undefined|reset|button/i.test(s)||(/radio/i.test(s)||o instanceof SYNO.ux.Radio?o.getValue()&&e(o,i,o.getInputValue()||"",s):/checkbox/i.test(s)||o instanceof SYNO.ux.Checkbox?e(o,i,!!o.getValue()):"submit"==s&&r||(Ext.isFunction(o.getValue)?e(o,i,o.getValue(),s):e(o,i,t.value,s),r=/submit/i.test(s)))))}))},SYNO.API.Form.Serialize=function(t,e){let i={};
1return i=SYNO.API.Form.Retrieve(t,!1,e),i=SYNO.API.DecodeFlatParams(i),i=SYNO.API.EncodeParams(i),Ext.urlEncode(i)},SYNO.API.Form.Retrieve=function(t,e,i){let s,n,o={};return SYNO.API.Form.Traverse(t,(function(t,e,a){if(i){if(s=SYNO.ux.Utils.getFormFieldApi(t),!SYNO.ux.Utils.checkApiObjValid(s))return;n="get"===i||"load"===i?s.method||s.methods.get:s.method||s.methods.set,e=s.api+"|"+n+"|"+s.version+"|"+e}o[e]=a})),e&&(o=SYNO.API.EncodeParams(o)),o},SYNO.API.Form.Action={},SYNO.API.Form.Action.Load=Ext.extend(Ext.form.Action.Load,{run:function(){const t=this.options,e=Ext.urlDecode(this.getParams()),i=this.form.webapi||this.form,s=i.method||i.methods.get;SYNO.API.Manager.requestAjaxAPI(i.api,s,i.version,Ext.apply(this.createCallback(t),{appWindow:this.form.appWindow,compound:t.compound,method:this.getMethod(),url:this.getUrl(!1),headers:this.options.headers,encryption:this.form.encryption}),e,t.callback,t.scope)}}),SYNO.API.Form.Action.Submit=Ext.extend(Ext.form.Action.Submit,{failure:function(t){this.result=this.handleResponse(t),this.response=t,this.failureType=Ext.form.Action.CONNECT_FAILURE,this.form.afterAction(this,!1)},processResponse:function(t){return this.result=this.handleResponse(t),this.result},decodeResponse:function(t){return!(null==t||!t.responseData)&&t.responseData},run:function(){const t=this.options;if(!1===t.clientValidation||this.form.isValid()){let s=Ext.urlDecode(this.getParams());const n=Ext.isBoolean(t.fileUpload)?t.fileUpload:this.form.fileUpload||this.form.el&&this.form.el.dom&&/multipart\/form-data/i.test(this.form.el.dom.getAttribute("enctype")),o=this.form.el?this.form.el.dom:void 0;if(n){var e=this.form.items,i=function(t){if(!t.disabled&&"file"!==t.inputType){const e=t.getValue();Ext.isBoolean(e)&&(s[t.getName()]=e),t.isComposite&&t.rendered&&t.items.each(i)}};e.each(i)}else if(t.compound);else{const t=SYNO.API.Form.Retrieve(o,!1,"submit");for(const e in t)t.hasOwnProperty(e)&&(s[e]=t[e]);s=SYNO.API.DecodeFlatParams(s)}const a=this.form.webapi||this.form,r=a.method||(a.methods?a.methods.set:void 0),l=this.success,c=this.failure,d=(e,i,s,n,o)=>{var a,r;e?l.apply(this,[o]):c.apply(this,[o]),null==t||null===(a=t.callback)||void 0===a||a.apply(null!==(r=null==t?void 0:t.scope)&&void 0!==r?r:this,[e,i,s,n,o])},u=t.html5upload?void 0:1e3*t.timeout||1e3*this.form.timeout;SYNO.API.Manager.requestAjaxAPI(a.api,r,a.version,Ext.apply(this.createCallback(t),{appWindow:this.form.appWindow,compound:t.compound,form:n&&!0!==t.html5upload?o:void 0,html5upload:!0===t.html5upload,timeout:u,uploadData:!0===t.html5upload?new FormData(o):void 0,method:this.getMethod(),headers:t.headers,encryption:this.form.encryption,success:void 0,faliure:void 0}),s,d,t.scope)}else!1!==t.clientValidation&&(this.failureType=Ext.form.Action.CLIENT_INVALID,this.form.afterAction(this,!1))}}),SYNO.API.Form.BasicForm=Ext.extend(Ext.form.BasicForm,{doAction:function(t,e){return Ext.isString(t)&&(t="load"!==t?new SYNO.API.Form.Action.Submit(this,e):new SYNO.API.Form.Action.Load(this,e)),!1!==this.fireEvent("beforeaction",this,t)&&(this.beforeAction(t),t.run.defer(100,t)),this},submit:function(t){if(this.standardSubmit){const s={};var e=this.items,i=function(t){if(!t.disabled&&"file"!==t.inputType){const e=t.getValue();Ext.isBoolean(e)&&(s[t.getName()]=e),t.isComposite&&t.rendered&&t.items.each(i)}};e.each(i);const n=this.webapi||this;return this.url=SYNO.API.GetBaseURL(Ext.apply(s,{api:n.api,method:n.method||n.methods.set,version:n.version})),SYNO.API.Form.BasicForm.superclass.submit.call(this,t)}return this.doAction("submit",t),this},load:function(t){return this.doAction("load",t),this},getValues:function(t,e){return!0===t?SYNO.API.Form.Serialize(this.el.dom,e):SYNO.API.Form.Retrieve(this.el.dom,!1,e)},loadRecords:function(t,e){for(let i=0;i<e.length&&(t[i]&&e[i]);i++)t[i].success&&this.setFieldValues(t[i].data,e[i])},setFieldValues:function(t,e){let i,s,n,o,a,r,l,c;if(c=function(t){this.trackResetOnLoad&&(t.originalValue=t.getValue())},Ext.isArray(t))for(a=0,l=t.length;a<l;a++){const n=t[a];for(o=this.findFields(n.id),r=0;r<o.length;r++)if(i=o[r],i){if(!SYNO.ux.Utils.checkFieldApiConsistency(i,e,"get"))continue;s=[i],("radio"===i.inputType||i instanceof SYNO.ux.Radio)&&(s=SYNO.ux.Utils.getRadioGroup(this,n.id)),i.setValue(n.value),Ext.each(s,c,this)}}else for(n in t)if(!Ext.isFunction(t[a]))for(o=this.findFields(n),a=0;a<o.length;a++)i=o[a],SYNO.ux.Utils.checkFieldApiConsistency(i,e,"get")&&(s=[i],("radio"===i.inputType||i instanceof SYNO.ux.Radio)&&(s=SYNO.ux.Utils.getRadioGroup(this,n)),i.setValue(t[n]),Ext.each(s,c,this));return this},findFields:function(t){const e=[];var i=function(s){if(s.isFormField){if(s.dataIndex==t||s.id==t||s.getName()==t)return e.push(s),!0;if(s.isComposite)return s.items.each(i);if(s instanceof Ext.form.CheckboxGroup&&s.rendered)return s.eachItem(i)}};return this.items.each(i),e}}),SYNO.API.Form.FormPanel=Ext.extend(Ext.form.FormPanel,{createForm:function(){const t=Ext.applyIf({appWindow:this,listeners:{}},this.initialConfig);return new SYNO.API.Form.BasicForm(null,t)}})},function(t,e){Ext.ns("SYNO.SDS.Utils"),SYNO.SDS.Utils.TabPanel=Ext.extend(SYNO.ux.TabPanel,{module:null,constructor:function(t){let e;e=Ext.apply({checkFormDirty:!0,useStatusBar:!(!1===t.useDefaultBtn&&!t.buttons),useDefaultBtn:!0,deferredRender:!1,applyDirtyOnly:!1,loadDirtyOnly:!1,buttons:!1!==t.useDefaultBtn?[{xtype:"syno_button",btnStyle:"grey",text:_T("common","reset"),scope:this,handler:this.cancelHandler},{xtype:"syno_button",btnStyle:"blue",disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",text:_T("common","commit"),scope:this,handler:this.applyHandler}]:null},t),e=this.addStatusBar(e),SYNO.SDS.Utils.TabPanel.superclass.constructor.call(this,e),this.addListener("beforetabchange",this.onBeforeTabChange,this)},addStatusBar:function(t){if(!t.useStatusBar)return t;const e={xtype:"statusbar",defaultText:" ",statusAlign:"left",buttonAlign:"left",items:[]};return t.buttons&&(e.items=e.items.concat(t.buttons),delete t.buttons),Ext.applyIf(t,{fbar:e}),t},applyHandler:function(t,e){this.applyAllForm()},cancelHandler:function(t,e){this.resetAllForm()},hasFootbarPanel:function(t){return t instanceof SYNO.SDS.Utils.FormPanel||t instanceof SYNO.SDS.Utils.EditorGridPanel||t instanceof SYNO.SDS.Utils.GridPanel},getApiArray:function(t,e){let i=[];return this.items.each((function(s,n,o){s instanceof SYNO.SDS.Utils.FormPanel&&(e&&this.loadDirtyOnly&&!s.getForm().isDirty()||(i=i.concat(s.getApiArray(t))))}),this),SYNO.ux.Utils.uniqueApiArray(i)},getAllForms:function(){const t=[];return this.items.each((function(e,i,s){this.hasFootbarPanel(e)&&t.push(this.getPage(e))}),this),t},loadAllForm:function(t){let e;if(!1===this.onBeforeRequest("get"))return!1;this.getApiArray&&(e=this.getApiArray("get")),e=this.processParams("get",e),this.sendAjaxRequest("get",e)},applyAllForm:function(t){let e;const i={};if(!1===this.onBeforeRequest("set"))return!1;this.items.each((function(t,e,s){if(!(t instanceof SYNO.SDS.Utils.FormPanel))return;const n=t.getForm();if(this.applyDirtyOnly&&!n.isDirty())return;const o=n.getValues(!1,"set");Ext.apply(i,o)}),this),e=this.constructApplyParams(i),e=e.concat(this.getApiArray("get",!0)),e=this.processParams("set",e),this.sendAjaxRequest("set",e)},getPage:function(t){return t.getForm?t.getForm():t},processParams:function(t,e){return this.items.each((function(i,s,n){if(!this.hasFootbarPanel(i))return;const o=this.getPage(i);"set"===t&&this.applyDirtyOnly&&!o.isDirty()||(e=i.processParams(t,e))}),this),e},resetAllForm:function(){const t=this.getAllForms();
1Ext.each(t,(function(t,e,i){t.reset()}),this)},isAnyFormDirty:function(){const t=this.getAllForms();let e=!1;return Ext.each(t,(function(t,i,s){if(t.isDirty())return e=!0,!1}),this),e},getAjaxCfg:function(t){return{}},getCompoundCfg:function(t){return{}},sendAjaxRequest:function(t,e){"get"===t?this.setStatusBusy():this.setStatusBusy({text:_T("common","saving")});const i=this.getAjaxCfg(t),s=this.getCompoundCfg(t),n=Ext.apply({params:{},compound:{stopwhenerror:!1,params:e},scope:this,callback:function(e,i,s){this.clearStatusBusy(),e?this.onApiSuccess(t,i,s):this.onApiFailure(t,i,s)}},i);n.compound=Ext.apply(n.compound,s),this.sendWebAPI(n)},onBeforeRequest:function(t){let e=!1;if(this.items.each((function(i,s,n){if(this.hasFootbarPanel(i))return i.onBeforeRequest(t)?void 0:(e=!0,!1)}),this),e)return!1;if("get"===t)return!0;if(this.checkFormDirty&&!this.isAnyFormDirty()){const t=_T("error","nochange_subject");return this.setStatusError({text:t,clear:!0}),!1}const i=this.getAllForms();let s=!0;return Ext.each(i,(function(t,e,i){if(!t.isValid())return s=!1,this.setStatusError({text:_T("common","forminvalid"),clear:!0}),this.setActiveByForm(t,e),!1}),this),s},onApiSuccess:function(t,e,i){"set"===t&&(e.has_fail||this.setStatusOK()),this.processReturnData(t,e,i)},processReturnData:function(t,e,i){this.items.each((function(s,n,o){if(!this.hasFootbarPanel(s))return;const a=this.getPage(s);"set"===t&&this.applyDirtyOnly&&!a.isDirty()||s.processReturnData(t,e,i)}),this)},onApiFailure:function(t,e,i){"set"===t?this.setStatus({text:_T("error","save"),iconCls:"syno-ux-statusbar-error"}):"get"===t&&this.setStatus({text:_T("common","loadres_fail"),iconCls:"syno-ux-statusbar-error"})},onBeforeTabChange:function(t,e,i){if(!e||!0===e.disabled)return!1;const s=t.getFooterToolbar();if(!s)return!0;let n=s.getEl();return n?(n.parent()&&n.parent().hasClass("x-tab-panel-footer")&&(n=n.parent()),this.hasFootbarPanel(e)?n.show():n.applyStyles({display:"none"}),t.hasLayout&&t.doLayout(!1,!1),!0):(s[this.hasFootbarPanel(e)?"show":"hide"](),!0)},setActiveByForm:function(t,e){const i=this.getAllForms();Ext.isNumber(e)&&this.items.getCount()===i.length?this.setActiveTab(e):this.items.each((function(e,i,s){if(e.getForm&&e.getForm()===t)return this.setActiveTab(i),!1}),this)},onPageDeactivate:function(){return!this.checkFormDirty||!this.isAnyFormDirty()},constructApplyParams:function(t){let e,i,s,n,o,a,r={},l=[];for(i in t)if(t.hasOwnProperty(i)){if(e=i.split("|"),4!=e.length)continue;s=i.substr(0,i.lastIndexOf("|")),n=i.substr(i.lastIndexOf("|")+1),o=t[i],r[s]||(r[s]={}),r[s][n]=o}for(s in r)if(r.hasOwnProperty(s)){for(n in e=s.split("|"),a={api:e[0],method:e[1],version:e[2]},a.params=SYNO.ux.Utils.getApiParams(a,this.getApiArray("set")),r[s])r[s].hasOwnProperty(n)&&(a.params[n]=r[s][n]);l.push(a)}return l},clearStatus:function(t){const e=this.getFooterToolbar();e&&Ext.isFunction(e.clearStatus)&&e.clearStatus(t)},clearStatusBusy:function(t){this.clearStatus(t),this.unmaskAppWin()},setStatus:function(t){t=t||{};const e=this.getFooterToolbar();e&&Ext.isFunction(e.setStatus)&&e.setStatus(t)},maskAppWin:function(){const t=this.findWindow();var e;if(t&&t instanceof SYNO.SDS.BaseWindow)null===(e=t.maskForBusy)||void 0===e||e.call(t);else if(null!=t&&t._isVue){var i;null===(i=t.setStatus)||void 0===i||i.call(t,.4,void 0)}},unmaskAppWin:function(){const t=this.findWindow();var e;if(t&&t instanceof SYNO.SDS.BaseWindow)null===(e=t.unmask)||void 0===e||e.call(t);else if(null!=t&&t._isVue){var i;null===(i=t.clearStatus)||void 0===i||i.call(t)}},setStatusBusy:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","loading"),iconCls:"syno-ux-statusbar-loading"}),this.setStatus(t),this.maskAppWin()},setStatusOK:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","setting_applied"),iconCls:"syno-ux-statusbar-success",clear:!0}),this.setStatus(t)},setStatusError:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","error_system"),iconCls:"syno-ux-statusbar-error"}),this.setStatus(t)}})},function(t,e){Ext.ns("SYNO.ux"),SYNO.SDS.Utils.FormPanel=Ext.extend(SYNO.ux.FormPanel,{module:null,constructor:function(t){let e;e=Ext.apply({checkFormDirty:!0,trackResetOnLoad:!0,useStatusBar:t.useDefaultBtn||t.buttons,useDefaultBtn:!1,hideMode:"offsets",buttons:!0===t.useDefaultBtn?[{xtype:"syno_button",btnStyle:"grey",text:_T("common","reset"),scope:this,handler:this.cancelHandler},{xtype:"syno_button",btnStyle:"blue",disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",text:_T("common","commit"),scope:this,handler:this.applyHandler}]:null},t),e=this.addStatusBar(e),SYNO.SDS.Utils.FormPanel.superclass.constructor.call(this,e)},addStatusBar:function(t){if(!t.useStatusBar)return t;const e={xtype:"statusbar",defaultText:" ",statusAlign:"left",buttonAlign:"left",items:[]};return t.buttons&&(e.items=e.items.concat(t.buttons),delete t.buttons),Ext.applyIf(t,{fbar:e}),t},onBeforeRequest:function(t){return!0},onBeforeAction:function(t,e){if("get"===e)return!0;
1if(this.checkFormDirty&&!this.isFormDirty()){const t=_T("error","nochange_subject");return this.setStatusError({text:t,clear:!0}),!1}return!!t.isValid()||(this.setStatusError({text:_T("common","forminvalid"),clear:!0}),!1)},onApiSuccess:function(t,e,i){"set"===t&&(Ext.isBoolean(e.has_fail)&&e.has_fail||this.setStatusOK()),this.processReturnData(t,e,i)},processReturnData:function(t,e,i){const s=this.getForm();i&&Ext.isArray(i.compound)&&s.loadRecords(e.result,i.compound)},onApiFailure:function(t,e,i){"get"===t?this.reportLoadFail(this.getForm(),t):"set"===t&&this.reportFormSubmitFail(this.getForm(),t)},reportLoadFail:function(t,e){this.setStatus({text:_T("common","loadres_fail"),iconCls:"syno-ux-statusbar-error"})},reportFormSubmitFail:function(t,e){this.setStatus({text:_T("error","save"),iconCls:"syno-ux-statusbar-error"})},applyHandler:function(t,e){this.applyForm()},cancelHandler:function(t,e){this.getForm().reset()},applyForm:function(){const t=this.getForm();if(!1===this.onBeforeAction(t,"set"))return!1;const e=t.getValues(!1,"set");let i=this.constructApplyParams(e);i=i.concat(this.getApiArray("get")),i=this.processParams("set",i),this.sendAjaxRequest("set",i)},upload:function(){const t=this.getForm();if(!this.fileUpload||!1===this.onBeforeAction(t,"set"))return!1;this.setStatusBusy({text:_T("common","saving")}),this.getForm().submit({clientValidation:!1,html5upload:!0===this.html5upload,scope:this,callback:function(t,e,i){this.clearStatusBusy(),t?this.onApiSuccess("set",e,i):this.onApiFailure("set",e,i)}})},processParams:function(t,e){return e},loadForm:function(t){let e;if(!1===this.onBeforeAction(this.getForm(),"get"))return!1;e=this.getApiArray("get"),e=this.processParams("get",e),this.sendAjaxRequest("get",e)},getAjaxCfg:function(t){return{}},getCompoundCfg:function(t){return{}},sendAjaxRequest:function(t,e){"get"===t?this.setStatusBusy():this.setStatusBusy({text:_T("common","saving")});const i=this.getAjaxCfg(t),s=this.getCompoundCfg(t),n=Ext.apply({fileUpload:!1,clientValidation:!1,compound:{stopwhenerror:!1,params:e},scope:this,callback:function(e,i,s){this.clearStatusBusy(),e?this.onApiSuccess(t,i,s):this.onApiFailure(t,i,s)}},i);n.compound=Ext.apply(n.compound,s),this.getForm().submit(n)},onPageDeactivate:function(){return!this.checkFormDirty||!this.isFormDirty()},isFormDirty:function(){return this.getForm().isDirty()},getAbsoluteURL:function(t){return this.module?this.module.getAbsoluteURL(t):t},createForm:function(){const t=Ext.applyIf({appWindow:this,listeners:{}},this.initialConfig);return new SYNO.API.Form.BasicForm(null,t)},getApiArray:function(t){let e=SYNO.ux.Utils.getApiArray(this,t,0,3);return e=SYNO.ux.Utils.uniqueApiArray(e),e},constructApplyParams:function(t){let e,i,s,n,o,a,r={},l=[];for(i in t)if(t.hasOwnProperty(i)){if(e=i.split("|"),4!=e.length)continue;s=i.substr(0,i.lastIndexOf("|")),n=i.substr(i.lastIndexOf("|")+1),o=t[i],r[s]||(r[s]={}),r[s][n]=o}for(s in r)if(r.hasOwnProperty(s)){for(n in e=s.split("|"),a={api:e[0],method:e[1],version:e[2]},a.params=SYNO.ux.Utils.getApiParams(a,this.getApiArray("set")),r[s])r[s].hasOwnProperty(n)&&(a.params[n]=r[s][n]);l.push(a)}return l},clearStatus:function(t){const e=this.getFooterToolbar();e&&Ext.isFunction(e.clearStatus)&&e.clearStatus(t)},clearStatusBusy:function(t){this.clearStatus(t),this.unmaskAppWin()},setStatus:function(t){t=t||{};const e=this.getFooterToolbar();e&&Ext.isFunction(e.setStatus)&&e.setStatus(t)},maskAppWin:function(){const t=this.findWindow();var e;if(t&&t instanceof SYNO.SDS.BaseWindow)null===(e=t.maskForBusy)||void 0===e||e.call(t);else if(null!=t&&t._isVue){var i;null===(i=t.setStatus)||void 0===i||i.call(t,.4,void 0)}},unmaskAppWin:function(){const t=this.findWindow();var e;if(t&&t instanceof SYNO.SDS.BaseWindow)null===(e=t.unmask)||void 0===e||e.call(t);else if(null!=t&&t._isVue){var i;null===(i=t.clearStatus)||void 0===i||i.call(t)}},setStatusBusy:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","loading"),iconCls:"syno-ux-statusbar-loading"}),this.setStatus(t),this.maskAppWin()},setStatusOK:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","setting_applied"),iconCls:"syno-ux-statusbar-success",clear:!0}),this.setStatus(t)},setStatusError:function(t){t=t||{},Ext.applyIf(t,{text:_T("common","error_system"),iconCls:"syno-ux-statusbar-error"}),this.setStatus(t)}})},function(t,e){Ext.ns("SYNO.ux"),SYNO.SDS.Utils.EditorGridPanel=Ext.extend(SYNO.ux.EditorGridPanel,{module:null,constructor:function(t){SYNO.SDS.Utils.EditorGridPanel.superclass.constructor.call(this,t)},isValid:function(){let t=!0;return this.items.each((function(e){e.validate()||(t=!1)})),t},reset:function(){return this.items.each((function(t){t.reset()})),this},onBeforeRequest:function(t){return!0},processParams:function(t,e){return e}
1,processReturnData:function(t,e,i){}}),SYNO.SDS.Utils.GridPanel=Ext.extend(SYNO.ux.GridPanel,{module:null,constructor:function(t){this.form=this,SYNO.SDS.Utils.GridPanel.superclass.constructor.call(this,t)},isValid:function(){let t=!0;return this.items.each((function(e){e.validate()||(t=!1)})),t},reset:function(){return this.items.each((function(t){t.reset()})),this},onBeforeRequest:function(t){return!0},processParams:function(t,e){return e},processReturnData:function(t,e,i){}})},function(t,e){SYNO.SDS.Utils.IFrame={createIFrame:function(t,e){const i=Ext.id(),s=t.createElement("iframe");return s.setAttribute("src",""),s.setAttribute("id",i),s.setAttribute("name",i),e&&s.setAttribute("src",e),s.setAttribute("frameBorder","0"),s.setAttribute("style","border:0px none;width:0;height:0;position:absolute;top:-100000px"),t.body.appendChild(s),s},cleanIframe:function(t,e){try{Ext.EventManager.removeAll(e),Ext.destroy(e),t.body.removeChild(e),e=void 0}catch(t){}},getWebAPIResp:function(t){let e;try{e=Ext.decode(t.contentDocument.body.firstChild.innerHTML),Ext.isEmpty(e.success)&&(e=void 0)}catch(t){e=void 0}return e},request:function(t,e,i,s,n,o){o||(t=SYNO.SDS.HandShake.UrlAppend(t));let a,r,l=document,c=SYNO.SDS.Utils.IFrame.createIFrame(l,s?Ext.SSL_SECURE_URL:o?t:Ext.urlAppend(t)),d=Ext.isIE?c.contentWindow.document:c.contentDocument||window.frames[c.id].document;if(n=Ext.isNumber(n)?n:12e4,a=setTimeout(function(){Ext.isFunction(e)&&e.call(i||this,"timeout",c),SYNO.SDS.Utils.IFrame.cleanIframe.defer(100,this,[l,c])}.createDelegate(this),n),s){r=document.createElement("form"),r.setAttribute("name","dlform"),r.setAttribute("action",o?t:Ext.urlAppend(t)),r.setAttribute("method","POST");for(const t in s)if(s.hasOwnProperty(t)){const e=s[t];r.appendChild(SYNO.SDS.Utils.IFrame.createHiddenInput(t,e))}d.body.appendChild(r)}return Ext.EventManager.on(c,"load",(function(){let t;Ext.isEmpty(a)||clearTimeout(a),Ext.isFunction(e)&&(t=this.getWebAPIResp(c),Ext.isObject(t)?e.call(i||this,"load",c,t.success,t.success?t.data:t.error):e.call(i||this,"load",c)),SYNO.SDS.Utils.IFrame.cleanIframe.defer(100,this,[l,c])}),this,{single:!0}),Ext.EventManager.on(c,"error",(function(){Ext.isEmpty(a)||clearTimeout(a),Ext.isFunction(e)&&e.call(i||this,"error",c),SYNO.SDS.Utils.IFrame.cleanIframe.defer(100,this,[l,c])}),this,{single:!0}),s&&(r.submit(),Ext.removeNode(r)),c},requestWebAPI:function(t){let e,i,s,n,o,a;if(Ext.isObject(t.webapi)&&SYNO.ux.Utils.checkApiObjValid(t.webapi)){if(n=t.webapi,s=Ext.isObject(t.appWindow)?t.appWindow.findAppWindow():t.appWindow,SYNO.SDS.Utils.CMS.IsAllowRelay(s)&&s.hasOpenConfig("cms_id"))i={api:"SYNO.CMS.DS",version:1,method:"relay"},o={id:s.getOpenConfig("cms_id"),timeout:s.getOpenConfig("cms_timeout")||120,webapi:Ext.apply({api:n.api,version:n.version,method:n.method},n.params)},a=n.encryption?["webapi"]:null;else{if(!(!1===s||s instanceof SYNO.SDS.AppWindow))return SYNO.Debug.error("appWindow is invalid!"),SYNO.Debug.debug("appWindow can be found by Ext.Component.findAppWindow"),void SYNO.Debug.debug("ex: this.findAppWindow() or config.module.appWin.findAppWindow()");i={api:n.api,method:n.method,version:n.version},o=n.params,a=n.encryption}return a?(e=SYNO.API.Manager.getBaseURL(i,!1,t.filename),o=this.encodeParams(i.api,o),this.sendEncrypedRequest({reqObj:{url:e,params:o},reqEnc:a,config:t})):(i.params=o,e=SYNO.API.Manager.getBaseURL(i,!1,t.filename),this.request(e,t.callback,t.scope,null,t.timeout,t.skipAppendSynoToken))}SYNO.Debug.error("webapi is invalid")},sendEncrypedRequest:function(t){return SYNO.API.Manager.requestAPI(Ext.apply({api:"SYNO.API.Encryption",method:"getinfo",version:1,params:{format:"module"},callback:this.onEncryptRequestAPI,scope:this},t))},onEncryptRequestAPI:function(t,e,i,s){let n,o,a=s.config,r=s.reqObj,l=s.reqEnc;if(t){for(SYNO.Encryption.CipherKey=e.cipherkey,SYNO.Encryption.RSAModulus=e.public_key,SYNO.Encryption.CipherToken=e.ciphertoken,SYNO.Encryption.TimeBias=e.server_time-Math.floor(+new Date/1e3),n=Ext.copyTo({},r.params,l),n=SYNO.Encryption.EncryptParam(n),o=0;o<l.length;o++)delete r.params[l[o]];r.params=Ext.apply(r.params,n)}return this.request(r.url,a.callback,a.scope,r.params,a.timeout,a.skipAppendSynoToken)},encodeParams:function(t,e){return"JSON"===SYNO.API.GetKnownAPI(t,e).requestFormat?SYNO.API.EncodeParams(e):e},createHiddenInput:function(t,e){const i=document.createElement("input");return i.setAttribute("type","hidden"),i.setAttribute("name",t),i.setAttribute("value",e),i}}},function(t,e){Ext.define("SYNO.ux.PasswordField",{extend:"SYNO.ux.TextField",xtype:"syno_passwordfield",constructor:function(t){const e={textType:"password",exPwdStrength:1,updateWhenRender:!0,pwdStrengthText:[_T("welcome","passwd_weak"),_T("welcome","passwd_medium"),_T("welcome","passwd_strong")],pwdStrengthCls:["weak","medium","strong"]};this.callParent([Ext.apply(e,t)])},onRender:function(){this.callParent(arguments),this.strengthEl=this.container.createChild({tag:"div",cls:"password-strength weak",children:[{cls:"strength-block block-1"},{cls:"strength-block block-2"},{cls:"strength-block block-3"},{cls:"strength-text",html:_T("welcome","passwd_weak")}]}),this.updateWhenRender&&this.updateStrengthCls(),this.mon(this.el,"keyup",this.updateStrengthCls,this,{buffer:this.getStrengthBuffer||100}),this.mon(this,"beforedestroy",this.onBeforeDestroy.bind(this))},normalizeStregth:function(t){return Math.floor(t/2)+1},getStrengthEl:function(){return this.strengthEl},hidePasswordStrength:function(){this.strengthEl.setDisplayed("none")},showPasswordStrength:function(){this.strengthEl.setDisplayed(!0)},onPasswordStrengthGet:function(t){const e=this.normalizeStregth(t.score),i=this.strengthEl,s=i.child(".strength-text");this.exPwdStrength!==e&&(i.removeClass(this.pwdStrengthCls[this.exPwdStrength-1]),i.addClass(this.pwdStrengthCls[e-1]),s.update(this.pwdStrengthText[e-1]),this.exPwdStrength=e),this.fireEvent("password_strength_get",[this].concat(arguments))},updateStrengthCls:function(){this.sendWebAPIPromise({api:"SYNO.Core.User.PasswordMeter",method:"evaluate",version:1,encryption:["password"],params:{password:this.getValue()}}).then(this.onPasswordStrengthGet.bind(this))},onBeforeDestroy:function(){this.strengthEl.remove(),this.strengthEl=null}})},function(t,e){Ext.define("SYNO.SDS.VuePanel",{extend:"Ext.Container",autoEl:{tag:"div"},title:"Unknown Title",constructor:function(t,e){t.vueClass||SYNO.Debug.error("SYNO.SDS.VuePanel should be along with vueClass"),this.vueOptions=e||{},this.callParent([t])},onRender:function(t,e){Ext.Component.prototype.onRender.apply(this,arguments),this.mountElDom=document.createElement("div"),this.mountElDom.id=this.mountId,this.el.dom.appendChild(this.mountElDom);const i=new this.vueClass(this.vueOptions);i._$extPanel=this,i.$mount(this.mountElDom),this._$vueInst=i,SYNO.SDS.Desktop&&i&&SYNO.SDS.Desktop.appendChild(i),this.addManagedComponent(this._$vueInst)}})},function(t,e){Ext.namespace("SYNO.SDS.AppInstance"),SYNO.SDS.AppInstance=Ext.extend(Ext.Component,{window:null,trayItem:null,instances:null,taskButton:null,blMainApp:!1,constructor:function(t){_S("standalone")&&(this.blMainApp=this.jsConfig.jsID===_S("standaloneAppName")),SYNO.SDS.AppInstance.superclass.constructor.apply(this,arguments),SYNO.SDS.AppMgr.register(this)},beforeDestroy:function(){!0===this.fullsize&&SYNO.SDS.StatusNotifier.fireEvent("fullsizeappdestroy"),this.jsConfig.upgradeApp&&!0===this.jsConfig.upgradeApp&&SYNO.SDS.StatusNotifier.fireEvent("upgradeappdestroy"),SYNO.SDS.AppInstance.superclass.beforeDestroy.apply(this,arguments),this.onBeforeDestroy()},onBeforeDestroy:function(){this.instances=null,this.window=null,this.trayItem=null,this.appItem=null,this.taskButton=null,SYNO.SDS.AppMgr.unregister(this)},beforeOpen:Ext.emptyFn,initInstance:function(t){let e;if(!this.window&&this.appWindowName){if(!0===this.fullsize){if(!(!!this.shouldLaunch&&this.shouldLaunch(t)))return void this.destroy()}e=Ext.getClassByName(this.appWindowName),this.window=new e(Ext.apply({appInstance:this,fromRestore:t.fromRestore,autoStart:t.autoStart,autoCenter:t.autoCenter},t.windowState||{})),this.addInstance(this.window),this.window.init(),this.window.open(t)}!this.trayItem&&this.appTrayItemName&&(e=Ext.getClassByName(this.appTrayItemName),this.trayItem=new e(Ext.apply({appInstance:this})),this.addInstance(this.trayItem),this.trayItem.open(t)),!this.appItem&&this.appItemName&&(e=Ext.getClassByName(this.appItemName),this.appItem=new e(Ext.apply({appInstance:this})),this.addInstance(this.appItem),this.appItem.open(t))},open:function(t){if(!Ext.isObject(t)||!Ext.isNumber(t.cms_id)||0>=t.cms_id)return this.delayOpen(t)},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(){const t={windowState:{}};return Ext.isEmpty(this.window)||Ext.apply(t,{windowState:this.window.getStateParam()},this.window.openConfig),t}})},function(t,e){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"});const e={hideMode:"offset",cls:"syno-sds-fullscreen-toolbar",renderTo:SYNO.SDS.Desktop.getEl(),items:[this.contentBox]};return Ext.apply(e,t)}
1,adjustPos:function(){let 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){const 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){let 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;const 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){const e=10,i=10;Ext.EventManager.onWindowResize(this.onModalWindowResize,this),Ext.apply(t,{x:e,y:i,width:Ext.lib.Dom.getViewWidth()-2*e,height:Ext.lib.Dom.getViewHeight()-2*i})}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){const t=this.getSmallIcon(!0);let e;e=SYNO.SDS.UIFeatures.test("isRetina")?[32,64,256]:[16,32,128],Ext.each(e,(function(e){t.indexOf("webman/3rdparty/")>=0?SYNO.SDS.Utils.addFavIconLink(t.replace(/(res=)(\d)*/,"$1"+e),"image/png",e+"x"+e):SYNO.SDS.Utils.addFavIconLink(t.replace(/(_16|_32)/,"_"+e),"image/png",e+"x"+e)})),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()}
1,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(){const 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='<div class="sds-standalone-main-window-header-text">'+this.header.dom.innerHTML+"</div>","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){const e=this.jsConfig.jsBaseURL+"/"+(this.jsConfig.icon||this.jsConfig.icon_16),i=this.isStandaloneMainWindow();let s;s=t?"FavHeader":i?"StandaloneHeader":this.isV5Style()?"Header":"HeaderV4";let n=SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(e,s);return this.appInstance.jsConfig.version&&(n="".concat(n,"&app_version=").concat(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={}){const 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:'<v-about-window :syno-id="synoId" :name="name" :custom-name="customName" :desc="desc" :icon="icon" :copyright-year="copyrightYear" :is-beta="isBeta" :swap-name-and-desc="swapNameAndDesc" :theme="theme" :class="customCls" />',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(){let 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(){let 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(){const 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(){let 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)}
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(){const 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(){const 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;const i=SYNO.SDS.TaskBar?SYNO.SDS.TaskBar.height():0;return!(!Ext.isDefined(this.pageY)||!(this.pageY<i||this.pageY+this.height>e))},centerItIfOutOfBound:function(){this.isOutOfBound()&&(SYNO.SDS.WindowMgr.centerWindow(this,{withOffset:this.autoStart}),this.moveDirty=!0)},getRestoreSizePos:function(t){const e=t.appInstance.getUserSettings("restoreSizePos")||{};return Ext.isDefined(t.minWidth)&&Ext.isDefined(e.width)&&e.width<t.minWidth&&(Ext.isDefined(t.
1width)?e.width=t.width:e.width=t.minWidth),Ext.isDefined(t.minHeight)&&Ext.isDefined(e.height)&&e.height<t.minHeight&&(Ext.isDefined(t.height)?e.height=t.height:e.height=t.minHeight),Ext.isDefined(e.maximized)||(e.maximized=t.defaultMaximized),t.maximized&&(e.maximized=t.maximized),e},onOpen:function(t){let e;if(this.initialized||this.init(),Ext.isObject(t)){for(e in t)t.hasOwnProperty(e)&&this.setOpenConfig(e,t[e]);t.title&&this.setTitle(t.title)}this.appInstance.skipRecord||this.recordAppOpened(),SYNO.SDS.AppWindow.superclass.onOpen.apply(this,arguments)},recordAppOpened:function(){const t=this.appInstance,e=t.appWindowName,i=t.jsConfig.jsID;e&&_S("isLogined")&&this.sendWebAPI({callback:function(){SYNO.SDS.StatusNotifier.fireEvent("apprecordupdated",i,e)}.bind(this),compound:{stopwhenerror:!1,params:[{api:"SYNO.Core.DataCollect.Application",version:1,method:"record",params:{app:e}},{api:"SYNO.Core.AppNotify",version:1,method:"view",params:{app:i}}]}})},onShow:function(){SYNO.SDS.AppWindow.superclass.onShow.apply(this,arguments),this.updateTaskButton("restore")},checkModalOrMask:function(){return!!(this.modalWin&&this.modalWin.length>0||this.maskCnt>0)&&(this.blinkModalChild(),!0)},setMaskMsgVisible:function(t){if(!this.el.isMasked())return;const 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]}})},function(t,e){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('<iframe id="{0}" src="{1}" frameborder="0" style="border: 0px none; width: 100%; height: 100%;"></iframe>',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(){const t=this.body.mask();t.setOpacity(0),this.mon(t,"mousedown",this.toFront,this)},unmaskBody:function(){const t=Ext.Element.data(this.body,"mask");t&&(this.mun(t,"mousedown",this.toFront,this),this.body.unmask())}})},function(t,e){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){let 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){let 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",regi
1on:"center"})),this.pageCt},mask:function(t,e,i,s){if(s)return this.callParent(arguments);if(this.isDestroyed)return;if(t=t||0,this.ctMaskCnt++,this.ctMaskCnt>1)return void this.setMaskOpacity(t);const 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)return;this.ctMaskCnt=0,this.maskTask&&this.maskTask.cancel();const 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]);if(!this.getPageCt().el.isMasked())return;Ext.Element.data(this.getPageCt().el,"mask").setOpacity(t)},selectPage:function(t){let e,i;return!!t&&(i=this.getPageList(),e=i.getNodeById(t),e&&i.getSelectionModel().isSelected(e)?(this.handleOpenParams(),!0):i.selectModule(t))},getActivePage:function(){return this.pageCt.layout.activeItem},getHelpParam:function(){let t,e,i;return t=this.getActivePage(),t?Ext.isFunction(t.getHelpParam)?t.getHelpParam():(i=this.getPageList(),e=i.getNodeById(t.itemId),e&&e.attributes&&Ext.isString(e.attributes.help)?e.attributes.help:this.help):this.help},onLoad:function(){},onBeforeSelect:function(t,e,i){let 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),s&&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{const t=s.onPageConfirmLostChangeSave&&s.onPageConfirmLostChangeSave.bind(s),i=s.onPageConfirmLostChangeDontSave&&s.onPageConfirmLostChangeDontSave.bind(s),n=s.onPageConfirmLostChangeCancel&&s.onPageConfirmLostChangeCancel.bind(s);this.confirmLostChangePromise({save:t||Ext.emptyFn,dontSave:i||Ext.emptyFn,cancel:n||Ext.emptyFn},this,Ext.emptyFn,(function(){this.setSkipDeactivateCheck(),this.selectPage(e.attributes.fn)}))}return n},onSelectionChange:function(t,e){let i;e.leaf&&(i=e.attributes.fn,i&&this.launchPage(i))},onClose:function(){const 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{const e=t.onPageConfirmLostChangeSave&&t.onPageConfirmLostChangeSave.bind(t),i=t.onPageConfirmLostChangeDontSave&&t.onPageConfirmLostChangeDontSave.bind(t),s=t.onPageConfirmLostChangeCancel&&t.onPageConfirmLostChangeCancel.bind(t);this.confirmLostChangePromise({save:e||Ext.emptyFn,dontSave:i||Ext.emptyFn,cancel:s||Ext.emptyFn},this,Ext.emptyFn,(function(){this.setSkipDeactivateCheck(),this.close()}))}return!1}return e},launchPage:function(t){let 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){const e=this.getActivePage();e&&e instanceof Ext.TabPanel&&Ext.isFunction(e.setActiveTab)&&e.setActiveTab(t)},createPage:function(t){let e,i,s=this.appWin||this,n=s.jsConfig;return e=Ext.getClassByName(t),i=new e({appWin:s,jsConfig:n,owner:this}),i.itemId=t,i},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)}
1,onRequest:function(t){this.callParent(arguments),this.onLaunchPage(t)},onLaunchPage:function(t){const 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){let 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")},function(t,e){Ext.define("SYNO.SDS.AboutWindow",{extend:"SYNO.SDS.ModalWindow",isBeta:!1,constructor:function(t){let e,i,s,n,o,a;if(!t||!t.owner)throw"No Owner!";e=t.owner,i=e.appInstance.jsConfig,o=t.owner.isBeta||this.isBeta,a=i.buildTime?Date.parseDate(i.buildTime,"Y-m-d"):Date.parseDate(_S("builddate"),"Y/m/d"),n=o?String.format('<span class="pkg-name" style="color: {0}">{1}<span class="beta-icon"></span></span>',t.pkgColor,SYNO.SDS.UIString.GetLocalizedString(i.title,i.jsID)):String.format('<span class="pkg-name" style="color: {0}">{1}</span>',t.pkgColor,SYNO.SDS.UIString.GetLocalizedString(i.title,i.jsID)),s={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('<img alt="" src="{0}" width="64" height="64">',i.jsBaseURL+"/"+String.format(i.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:n},{xtype:"box",cls:"about-divider"},{xtype:"box",cls:"about-version",html:String.format("<b>{0}: </b>{1}",_T("nfs","nfs_key_version"),i.version)},{xtype:"box",cls:"about-ip",html:String.format("<b>{0}: </b>{1}",_T("common","osname"),_S("productversion")+"-"+_S("version"))},{xtype:"box",cls:"about-copyright",width:314,html:String.format(_T("copyright","copyright"),a.getUTCFullYear())}]}]},Ext.apply(s,t),this.callParent([s])}})},function(t,e){SYNO.SDS.Utils.GetAppIcon=function(t,e){if(t in SYNO.SDS.Config.FnMap){const 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){const e=SYNO.SDS.Config.FnMap[t].config;return SYNO.SDS.UIString.GetLocalizedString(e.title,t)}return""}},function(t,e){Ext.define("SYNO.SDS.Wizard.Step",{extend:"Ext.Panel",getNext:function(){return this.nextId?this.nextId:null},checkState:function(){const 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");const 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(){const t=this.owner,e=t.getButton("next");this.callParent(arguments),e.setText(_T("common","start"))},activate:function(){this.adjustLayout(!0)},deactivate:function(){this.adjustLayout(!1)},adjustLayout:function(t){const e=this.owner,i=e.getWelcomeFBar(),s=e.getNormalFBar();i!==s&&i&&s&&(t?(i.show(),s.hide()):(i.hide(),s.show()))},updateHeight:function(){const 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)}
1,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){const 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)+'"','<span class="wizard-summary-field">'+t+"</span>"},descRenderer:function(t,e,i,s,n,o){const a=Ext.util.Format.htmlEncode(t);return e.attr='ext:qtip="'+Ext.util.Format.htmlEncode(a)+'"','<span class="wizard-summary-desc">'+a+"</span>"},activate:function(){const t=this.owner.stepStack;let e=null;this.getStore().removeAll(!0);for(let i=0;i<t.length;i++)e=this.owner.getStep(t[i]),Ext.isFunction(e.summary)&&e.summary(this.getStore());this.getView().refresh()},checkState:function(){SYNO.SDS.Wizard.Step.prototype.checkState.apply(this,arguments),this.showCommitButton&&this.owner.getButton("next").setText(_T("common","commit"))}}),Ext.define("SYNO.SDS.Wizard.TaskStore",{extend:"Ext.data.JsonStore",constructor:function(t){SYNO.SDS.Wizard.TaskStore.superclass.constructor.call(this,Ext.apply({autoDestroy:!0,idProperty:"id",root:"data",fields:["id","text","config","option","status"]},t))},append:function(t,e,i,s){const n=new this.recordType({status:"",id:t,text:e,config:i,option:s||{}},t);return this.add(n),n.set("status","queue"),n.setStatus=function(t){n.set("status",t),n.store.commitChanges()},n},get:function(t){return Ext.isString(t)?this.getById(t):Ext.isNumber(t)?this.getAt(t):Ext.isObject(t)&&t.store&&this===t.store?t:void 0}}),Ext.define("SYNO.SDS.Wizard.ApplyStep",{extend:"SYNO.ux.GridPanel",currentTask:null,stopOnFail:!0,constructor:function(t){SYNO.SDS.Wizard.ApplyStep.superclass.constructor.call(this,Ext.apply({headline:_T("ezinternet","ezinternet_apply_title"),description:_T("ezinternet","ezinternet_apply_desc"),cls:"without-dirty-red-grid",store:new SYNO.SDS.Wizard.TaskStore,viewConfig:{forceFit:!1,headersDisabled:!0},hideHeaders:!0,columns:[{header:"",align:"center",width:40,dataIndex:"status",renderer:this.renderStatus},{id:"text",header:"Activity",dataIndex:"text",renderer:function(t){return t}}],draggable:!1,enableColumnMove:!1,autoExpandColumn:"text"},t))},renderStatus:function(t){const e={doing:'<div class="x-status-loading"> </div>',done:'<div class="x-status-success"> </div>',fail:'<div class="x-status-fail"> </div>'};
1if(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(){const t=this,e=this.getStore(),i=this.owner.stepStack;let s=null;this.owner.clearStatus(),e.removeAll(!0),Ext.each(i,(function(i){const n=this.owner.getStep(i);Ext.isFunction(n.appendTask)&&(e.commitChanges(),n.appendTask(e),s=e.getModifiedRecords(),Ext.each(s,(function(e){const 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(){const t=this.getStore();let e=null,i=0;for(i=0;i<t.getCount();i++)if(e=t.getAt(i),"fail"===e.get("status"))return e.get("option").backId;return!1},doTask:function(t){const e={};(t=this.getStore().get(t))&&(t.setStatus("doing"),Ext.apply(e,t.get("config")),this.currentTask=t,this.compound=e.compound,this.sendWebAPI(Ext.apply(e,{callback:this.taskDone,scope:this})))},taskDone:function(t,e,i){const s=this.currentTask.get("config");let n;Ext.isFunction(s.callback)&&(n=s.callback.call(s.scope||void 0,t,e,i)),!1!==n&&"doing"!==n&&(!t||this.compound&&e.has_fail?this.doNextTask(!1):this.doNextTask(t))},doNextTask:function(t){const e=this.currentTask,i=this.getStore().indexOf(e);if(e.setStatus(t?"done":"fail"),!this.stopOnFail||t){if(-1===i)throw Error("can not found index of current task");i+1<this.getStore().getCount()?this.doTask(i+1):this.finish()}else this.finish()}})},function(t,e){Ext.define("SYNO.SDS.Wizard.StepContainer",{extend:"Ext.Container",constructor:function(t){let e=t.step;const i={cls:String.format("wizard-step-ct {0}",e instanceof SYNO.SDS.Wizard.WelcomeStep?"welcome-ct":""),itemId:e.itemId||void 0,items:[{xtype:"container",cls:"wizard-header-wrap",itemId:"header-wrap",items:[{xtype:"box",itemId:"headline",cls:"wizard-headline",html:Ext.util.Format.htmlEncode(e.headline||e.leftTitle||""),role:"article",tabIndex:0}]},e]};e.getHeadLine=this.getHeadLine.bind(this),e.getHeadLineCmp=this.getHeadLineCmp.bind(this),e.setHeader=this.setHeader.bind(this),this.callParent([i]),e=this.getStep(),e instanceof SYNO.ux.GridPanel||e instanceof SYNO.ux.EditorGridPanel?(this.mon(e,"viewready",this.onGridHeightChange,this),this.mon(e,"afterlayout",this.onGridHeightChange,this),this.mon(e.store,"datachanged",this.onGridHeightChange,this),this.mon(e.store,"load",this.onGridHeightChange,this),this.mon(e.getView(),"rowsinserted",this.onGridHeightChange,this),this.mon(e.getView(),"rowremoved",this.onGridHeightChange,this),this.mon(e.getView(),"rowupdated",this.onGridHeightChange,this)):this.mon(e,"afterlayout",this.onStepAfterLayout,this),this.mon(this,"flexcroll",this.onStepScroll,this),this.mon(this,"activate",this.onStepActivate,this)},getStep:function(){return this.items.items[1]},getHeadLine:function(){return this.getHeadLineCmp().el},getHeadLineCmp:function(){return this.getComponent("header-wrap").getComponent("headline")},setHeader:function(t){this.getHeadLine().update(t),this.getStep().headline=t,this.updateOwnerHeaderText()},onStepScroll:function(t,e){const i=e.scrollTop,s=Ext.isNumber(i)?Math.min(i,56)/56:0,n=this.owner.header.child(".sub-wrapper");n&&n.setStyle("opacity",s)},fitStepHeight:function(){let t,e,i,s=this.getStep();if(s.updateFleXcroll(),t=s.getScrollTarget(),e=t.dom.fleXdata?t.dom.fleXdata.cntSize:[!1,
1!1],i=e[1],s.el.child(".x-panel-footer")&&(i+=s.el.child(".x-panel-footer").getHeight()),!Ext.isNumber(i)||i<=0)return;const n=s.bbar;n&&(i+=n.getPadding("tb"),i+=n.getHeight());const o=s.tbar;o&&(i+=o.getPadding("tb"),i+=o.getHeight()),s.setHeight(i),s.updateFleXcroll()},fitGridStepHeight:function(){let t,e,i=this.getStep(),s=i.getView();if(s.updateScroller(),t=s.scroller.dom.fleXdata?s.scroller.dom.fleXdata.cntSize:[!1,!1],e=t[1],!Ext.isNumber(e)||e<=0)return;e+=s.mainHd.getHeight(),e+=i.el.getPadding("tb"),e+=i.el.child(".x-panel-bwrap").getPadding("tb"),e+=i.el.child(".x-panel-body").getPadding("tb");const n=i.el.child(".x-panel-tbar");n&&(e+=n.getPadding("tb"),e+=n.getHeight());const o=i.el.child(".x-panel-bbar");o&&(e+=o.getPadding("tb"),e+=o.getHeight());const a=i.el.child(".x-panel-footer");a&&(e+=a.getPadding("tb"),e+=a.getHeight()),e+=2,i.setHeight(e),s.updateScroller()},onGridHeightChange:function(){this.fitGridStepHeight(),this.updateFleXcroll()},onStepAfterLayout:function(){this.fitStepHeight(),this.updateFleXcroll()},onStepActivate:function(){this.updateOwnerHeaderText(),this.owner.toggleFootbar(this.getStep()),this.el.dom.focusProtect=!0},updateOwnerHeaderText:function(){const t=this.owner.header.child(".sub-title");t&&t.update(Ext.util.Format.htmlEncode(" - "+this.getStep().headline))}}),Ext.define("SYNO.SDS.Wizard.BaseWindow",{extend:"SYNO.SDS.BaseWindow",setHeader:function(t){this.getActiveStep().setHeader(t)},configWizard:function(t){const e={footer:!0,useStatusBar:!1,closable:void 0===t.closable||t.closable,layout:"card",activeItem:Ext.isDefined(t.activeStep)?t.activeStep:0,defaults:Ext.apply(t.defaults||{},{owner:this}),items:this.configSteps(t.steps),fbar:this.configButtons(t.fbar,t.steps)};return delete t.steps,delete t.activeStep,Ext.applyIf(e,t),Ext.applyIf(e,{resizable:!1,maximizable:!1}),e},addHeaderToStep:function(t){return new SYNO.SDS.Wizard.StepContainer({step:t})},getAllSteps:function(){return this.items.items.map((function(t){return t.getStep()}))},configSteps:function(t){if(Ext.isArray(t)){t={items:t}}const e=[];if(!t.items)throw Error("invalid config of wizard steps");for(let i=0;i<t.items.length;i++){let s=t.items[i];Ext.applyIf(s,{border:!1,nextId:i+1<t.items.length?i+1:null,getNext:SYNO.SDS.Wizard.Step.prototype.getNext,checkState:SYNO.SDS.Wizard.Step.prototype.checkState,owner:this}),s=this.addHeaderToStep(s),e.push(s)}return e},appendSteps:function(t){let e,i,s,n=[];for(Ext.isArray(t)||(t=[t]),s=this.items.length+t.length,e=0,i=this.items.length;e<t.length;e++,i++)n.push(t[e].itemId||"append"+i),Ext.applyIf(t[e],{owner:this,itemId:"append"+i,nextId:i+1<s?"append"+(i+1):null,getNext:SYNO.SDS.Wizard.Step.prototype.getNext,checkState:SYNO.SDS.Wizard.Step.prototype.checkState}),this.add(this.addHeaderToStep(t[e]));return this.doLayout(),n},getStep:function(t){const e=this.getComponent(t);return Ext.isEmpty(e)?null:e.getStep()},getActiveStep:function(){return this.layout.activeItem.getStep()},setActiveStep:function(t){if(!this.getStep(t))throw Error("step is not exist, id: "+t);return this.layout.setActiveItem(t),this.getActiveStep().getHeadLine().focus(),!0},toggleFootbar:function(t){!1===t.showFooter?(this.fbar.hide(),this.doLayout()):(this.fbar.show(),this.doLayout())},configButtons:function(t,e){const i=e[0]instanceof SYNO.SDS.Wizard.WelcomeStep;return t||{xtype:"container",height:48,items:[{xtype:"toolbar",buttonAlign:"right",cls:"normal-toolbar",itemId:"normal-buttons",hidden:i,items:[{xtype:"syno_button",btnStyle:"grey",itemId:"back",text:_T("common","back"),handler:function(){Ext.isFunction(this.getActiveStep().getBack)?this.goBack(this.getActiveStep().getBack()):this.goBack()},scope:this},{xtype:"syno_button",itemId:"next",text:_T("common","next"),btnStyle:"blue",handler:function(){this.goNext(this.getActiveStep().getNext())},scope:this}]},{xtype:"toolbar",itemId:"welcome-buttons",cls:"welcome-toolbar",buttonAlign:"center",hidden:!i,items:[{xtype:"syno_button",itemId:"next",text:_T("common","start"),btnStyle:"blue",handler:function(){this.goNext(this.getActiveStep().getNext())},scope:this}]}]}},getWelcomeFBar:function(){return this.getFooterToolbar().getComponent("welcome-buttons")||this.getFooterToolbar()},getNormalFBar:function(){return this.getFooterToolbar().getComponent("normal-buttons")||this.getFooterToolbar()},getButton:function(t){return this.getActiveStep()instanceof SYNO.SDS.Wizard.WelcomeStep?this.getWelcomeFBar().getComponent(t):this.getNormalFBar().getComponent(t)},goNext:function(t,e){let i,s=null;return!1!==t&&(null===t?(this.close(),!0):(s=this.getActiveStep(),i=s.getItemId(),(!Ext.isFunction(s.deactivate)||!1!==s.deactivate("next"))&&(!1!==this.setActiveStep(t)&&(!1!==e&&this.stepStack.push(i),s=this.getActiveStep(),(!Ext.isFunction(s.activate)||!1!==s.activate())&&(this.syncView(),!0)))))},goBack:function(t){let e,i=null;if(!1===t||!this.hasHistory())return!1;if(Ext.isDefined(t)&&!this.inHistory(t))return!1;if(i=this.getActiveStep(),Ext.isFunction(i.deactivate)&&!1===i.deactivate("back"))return!1;if(e=this.stepStack.pop(),Ext.isDefined(t)||(t=e),!1===this.setActiveStep(t))return this.stepStack.push(e),!1;for(;e!==t;)e=this.stepStack.pop();return i=this.getActiveStep(),(!Ext.isFunction(i.activate)||!1!==i.activate())&&(this.syncView(),!0)},inHistory:function(t){for(let e=this.stepStack.length-1;e>=0;e--)if(this.stepStack[e]===t)return!0;return!1},hasHistory:function(){return this.stepStack.length>0},syncView:function(){const 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);const t=this.header.child(".x-window-header-text"),e=this.initialConfig.title+String.format('<div class="sub-wrapper" style="opacity: 0;"><span class="sub-title"> - {0}</span></div>',this.getActiveStep().headline);t.update(e)},onOpen:function(){this.callParent(arguments);const t=this.getActiveStep();t&&Ext.isFunction(t.activate)&&!1===t.activate()||this.syncView()},onClose:function(){let t=!0;const e=this.getActiveStep();return(!e||!Ext.isFunction(e.deactivate)||!1!==e.deactivate("close"))&&(t=this.callParent(arguments),!1!==t)},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);const t=this.header.child(".x-window-header-text"),e=this.initialConfig.title+String.format('<div class="sub-wrapper" style="opacity: 0;"><span class="sub-title"> - {0}</span></div>',this.getActiveStep().headline);t.update(e)},onOpen:function(){this.callParent(arguments);const t=this.getActiveStep();t&&Ext.isFunction(t.activate)&&!1===t.activate()||this.syncView()},onClose:function(){let t=!0;const e=this.getActiveStep();return(!e||!Ext.isFunction(e.deactivate)||!1!==e.deactivate("close"))&&(t=this.callParent(arguments),!1!==t)},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.
1isMasked())return;const 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)}})},function(t,e){Ext.define("SYNO.ux.MessageComboBox",{extend:"SYNO.ux.ComboBox",listClass:"syno-ux-combobox-list syno-ux-message-combobox-list",constructor:function(t){let e,i;this.displayField=t.displayField||"display",this.descriptionField=t.descriptionField||"description",i='ext:qtip="{'+this.descriptionField+':htmlEncode}"',e={tpl:new Ext.XTemplate('<tpl for=".">',"<div "+i+' class="x-combo-list-item" role="option" aria-label="{'+this.displayField+'}" id="{[Ext.id()]}" style="height: 52px">',"<div "+i+' class="sds-combo-list-item-name">{'+this.displayField+"}</div>","<div "+i+' class="sds-combo-list-item-description">{'+this.descriptionField+"}</div>","</div>","</tpl>")},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)},function(t,e){SYNO.namespace("SYNO.SDS.Utils.StorageUtils"),SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB=1073741824,SYNO.SDS.Utils.StorageUtils.ISCSIVAAILUN_EP_SIZE=function(t){let e,i;return e=(t/4096+62)/63,e=Math.floor(e),i=512*e+1048576,i},SYNO.SDS.Utils.StorageUtils.SpaceIDParser=function(t){const e=t.split("_");let i="",s="",n="",o="";if("-"===t)return{type:"-",num:"-",sub_num:"-",str:"-"};if("hotspare"===t)return{type:"hotspare",num:"",str:_T("volume","volume_hot_spare")};if("system"===t)return{type:"system",num:"",str:_T("disk_info","alloc_role_system_installed")};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){const i=SYNO.SDS.isNumber(e),s=Math.pow(10,i?e:2),n=t/SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB;let o=n;return s>1?o=Math.round(n*s)/s:1==s&&(o=Math.floor(n)),o},SYNO.SDS.Utils.StorageUtils.UiRenderHelperInitializer=function(){const t="blue-status",e="red-status",i="green-status",s="orange-status",n={[t]:"acting",[e]:"danger",[i]:"normal",[s]:"attention",unverified:"unverified",detected:"detected"},o=[["acting"],["danger"],["unverified","attention"],["detected"],["normal"]],a={has_incompat_disk:{text:_T("volume","volume_danger"),color:e},has_dsmupdate_disk:{text:_T("storage_pool","pool_status_has_unverified_disk"),color:s},has_fwu_disk:{text:_T("storage_pool","pool_status_has_unverified_disk"),color:s},has_unverified_disk:{text:_T("storage_pool","pool_status_has_unverified_disk"),color:s,level:"unverified"},normal:{text:_T("volume","volume_status_normal"),color:i},warning:{text:_T("disk_info","disk_status_warning"),color:s},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:s},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:s},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:s},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},cache_replacing:{text:_T("volume","shared_cache_replacing"),color:t}
1,expanding:{text:_T("volume","volume_status_expand"),color:t},migrating:{text:_T("volume","volume_status_upgrade"),color:t},cache_migrating:{text:_T("volume","shared_cache_changing_raid_type"),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},volume_op_stop:{text:_T("volume","volume_status_running_volume_stop"),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:s},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},volume_unlocking:{text:_T("volume_encryption","volume_status_unlocking"),color:t},volume_vault_repairing:{text:_T("volume_encryption","volume_status_repairing_vault"),color:t},volume_vault_resetting:{text:_T("volume_encryption","volume_status_resetting_vault"),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_
1service"),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"),encvol_op_in_progress:_T("volume_encryption","step_in_progress"),none:""},l=function(t){const e={};let 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},c={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")},d={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},u=String.format("({0})",_T("volume","volume_add_tip_dataprotection")),h=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_1_disk")),p=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_2_disks")),m=String.format("({0})",_T("volume","volume_add_tip_nodataprotection")),f={shr_without_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:m},shr_with_1_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:h},shr_with_2_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:p},basic:{text:_T("volume","volume_generalhd"),tip:m},raid_linear:{text:_T("volume","volume_type_linear"),tip:m},raid_0:{text:_T("volume","volume_type_raid_0"),tip:m},raid_1:{text:_T("volume","volume_type_raid_1"),tip:u},raid_5:{text:_T("volume","volume_type_raid_5"),tip:u},"raid_5+spare":{text:_T("volume","volume_type_raid_5")+"+Spare",tip:u},raid_6:{text:_T("volume","volume_type_raid_6"),tip:u},raid_10:{text:_T("volume","volume_type_raid_10"),tip:u},raid_f1:{text:_T("volume","volume_type_raid_f1"),tip:u}},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("disk_info","disk_status_critical"),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:"red-status",tooltip:_T("disk_info","disk_status_data_detected")},disknotsupported:{text:_T("volume","volume_disknotsupported"),color:"red-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"}},g={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"}},_={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:""}},x={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:""}
1,damage:{text:_T("smart","smart_status_attention_required"),color:"orange-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"}},b={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:""}},y={idle:{text:"-",color:""},smart:{text:_T("disk_info","smart_is_testing"),color:"blue-status",progressType:"percent"},ihm:{text:_T("disk_info","ihm_is_testing"),color:"blue-status"},erase:{text:_T("disk_info","disk_secure_erasing"),color:"blue-status",progressType:"percent"},perf:{text:_T("disk_info","disk_perf_is_testing"),color:"blue-status"},locate:{text:_T("disk_info","disk_process_locate"),color:"blue-status",progressType:"time"},sys_repair:{text:_T("disk_info","disk_process_sys_repair"),color:"blue-status",progressType:"percent"},unknown:{text:_T("common","not_support"),color:""}},w={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"}},v={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"}},E={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"},dsm_update_required:{text:_T("disk_info","disk_compatibility_dsmupdate_required"),tooltip:_T("disk_info","disk_compatibility_dsmupdate_required_status"),cls:"sm-disk-dsmupdate-required",color:"red-status"}},T={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=!SYNO.SDS.isNumber(e)||e<=0?1:Math.round(e);const i=Math.pow(10,e);let s=0,n=0,o={unit:1,strUnit:""};return o=l(t),s=t/o.unit,n=Math.floor(s*i)/i,n-Math.floor(n)>0&&parseFloat(n)%1==0&&(n=parseInt(n,10)),String.format("{0} {1}",n,o.strUnit)}
1,GetSizeUnitWithFloor:function(t,e){e=!SYNO.SDS.isNumber(e)||e<=0?1:Math.round(e);const i=Math.pow(10,e);let s=0,n=0,o={unit:1,strUnit:""};return o=l(t),s=t/o.unit,n=Math.floor(s*i)/i,n-Math.floor(n)>0&&parseFloat(n)%1==0&&(n=parseInt(n,10)),{size:n,unit:o.strUnit}},SizeRender:function(t,e){e=!SYNO.SDS.isNumber(e)||e<=0?1:Math.round(e);const i=Math.pow(10,e);let s=0,n=0,o={unit:1,strUnit:""};return o=l(t),s=t/o.unit,n=Math.round(s*i)/i,n-Math.floor(n)>0&&parseFloat(n)%1==0&&(n=parseInt(n,10)),String.format("{0} {1}",n,o.strUnit)},GetSizeUnit:function(t,e){e=!SYNO.SDS.isNumber(e)||e<=0?1:Math.round(e);const i=Math.pow(10,e);let s=0,n=0,o={unit:1,strUnit:""};return o=l(t),s=t/o.unit,n=Math.round(s*i)/i,n-Math.floor(n)>0&&parseFloat(n)%1==0&&(n=parseInt(n,10)),{size:n,unit:o.strUnit}},StatusRender:function(t,e){const 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("<span class='blue-status'>{0}...</span>{1}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(e.step),s):s?String.format("{0}<span class='blue-status'>...</span>{1}",i,s):i},LunStatusRender:function(t,e){return 0===e.percent?String.format("{0}<span class='blue-status' style='white-space:nowrap'>({1})</span>",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(t),a.waiting.text):SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(t)+" "+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ProgressRender(e)},StatusNameRender:function(t,e){let i;return t in a?(i=a[t],e?i.text:String.format('<span class="{0}">{1}</span>',i.color,i.text)):""},PlainStatusNameRender:function(t){let e;return t in a?(e=a[t],e.text):""},TimeRender:function(t,{isResyncSpeedLimited:e=!1,showSecBelowMin:i=!1}={}){const s=Math.floor(t/86400),n=Math.floor(t%86400/3600),o=Math.floor(t%86400%3600/60),a=Math.floor(t%86400%3600%60),r=1<s?_T("common","time_days"):_T("common","time_day"),l=1<n?_T("common","time_hours"):_T("common","time_hour"),c=1<o?_T("common","time_minutes"):_T("common","time_minute"),d=1<a?_T("common","time_seconds"):_T("common","time_second");let u=[];return 0<s&&(u=u.concat([s,r])),0<n&&(u=u.concat([n,l])),1<=o&&(u=u.concat([o,c])),!s&&!n&&!o&&0<a?!0===i?(u=u.concat([a,d]),u.join(" ")):_T("common","time_less_min"):!0===e?_T("volume","status_calculating"):u.join(" ")},WaitingProgressRender:function(t){let e="",i="",s="";const n="-1"!==t.percent,o=1>=t.total_step&&0<t.remaining_time,a=1<t.total_step;return n?(o?(i="{0} ({1})",s=_T("storage_manager","task_time_remain")+_T("common","colon")+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.TimeRender(t.remaining_time,{isResyncSpeedLimited:t.is_resync_speed_limited}),e=String.format(i,SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent),s)):a?(i="{0} ({1}{2}/{3})",e=String.format(i,SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent),_T("common","step")+_T("common","colon"),t.cur_step,t.total_step)):(i="{0}",e=String.format(i,SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent))),e):String.format("{0}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(t.step))},ProgressRender:function(t){let e="",i="";return t&&t.step&&t.percent?"none"===t.step&&"-1"===t.percent?i="":"none"!==t.step&&"-1"===t.percent?i=String.format("{0}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(t.step)):"none"===t.step&&"-1"!==t.percent?i=String.format("{0}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent)):"waiting"===t.step?i=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.WaitingProgressRender(t):"initializing_inode_table"===t.step?i=String.format("{0}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent)):"defrag"===t.step?(e=String.format(_T("volume","fs_defrag_progress"),t.defragged_files,t.analyzed_files),i=String.format("{0}",e)):i=String.format("{0} {1}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(t.step),SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(t.percent)):i="",0<i.length?String.format("<span class='blue-status'>{0}</span>",i):""},WarningTextRender:function(t,e){let i;if(!(t in a))return"";if(i=a[t],i.warningText){const t=String.format('<br /><span class="{0}">{1}</span><br />',i.warningColor,i.warningText);return String.format(t,e)}return""},StepNameRender:function(t){return t in r?r[t]:""},PercentRender:function(t){let e="";return e="-1"==t?"":String.format("{0}%",t),e},RaidLevelRender:function(t){return-1<t.indexOf("shr")?"SHR":t in f?f[t].text:""},SpaceTypeRender:function(t,e){let i="-",s="",n=null;return t in f?(i=f[t].text,s=f[t].tip):0===t.indexOf("expansion")?(i=_T("volume","volume_type_expansion"),n=t.split(":"),s=String.format("({0} + {1})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DeviceTypeRender(n[1]),SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DeviceTypeRender(n[2]))):"-"!==t&&SYNO.Debug.warn("unknown space type: ",t),!1!==e?String.format('{0} <font class="normal-font">{1}</font>',i,s):String.format("{0} {1}",i,s)},DeviceTypeRender:function(t){return t in f?f[t].text:"unknown"},ParseID:function(t){const 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){let e="";const i=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ParseID(t);return e="ebox"==i.location?String.format("{0} {1} ({2})",_T("volume","volume_disk"),i.id,_T("volume","volume_expansion")):String.format("{0} {1}",_T("volume","volume_disk"),i.id),e},DiskStatusRenderMap:function(t){const e=S[t];return e?{text:e.text,color:e.color}:SYNO.SDS.isEmpty(t)||null===t.match("%")?{text:"",color:""}:{text:_T("disk_info","disk_secure_erasing")+": "+t,color:"blue-status"}},DiskStatusRender:function(t){const e=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskStatusRenderMap(t);return String.format('<span class="{0}">{1}</span>',e.color,e.text)}
1,DiskStatusTooltipRender:function(t,e,i=!1){const s=S[t];if("ssd cache"===e||SYNO.SDS.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){const 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{const 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'<span class="green-status">'+_T("volume","volume_diskinuse")+"</span>";case"failed":case"crashed":return'<span class="red-status">'+_T("volume","volume_diskfailed")+"</span>";case"rebuild":return'<span class="blue-status">'+_T("volume","volume_disk_rebuild")+"</span>";case"spare":return'<span class="blue-status">'+_T("volume","volume_status_waiting")+"</span>";case"deleting":return'<span class="blue-status">
1'+_T("volume","swap_device_removing")+"</span>";case"none":return"-"}},smartStatusRender:function(t,e){const i=g[t];return"-1"===e?String.format('<span class="blue-status">{0}</span>',_T("background_task","task_processing")):SYNO.SDS.isEmpty(e)||null===e.match("%")?i?String.format('<span class="{0}">{1}</span>',i.color,i.text):String.format('<span class="green-status">{0}</span>',_T("common","loading")):String.format('<span class="blue-status">{0}</span>',_T("smart","smart_test_remain")+": "+e)},smartStatusWithProgressRender:function(t){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.smartStatusRender(t.status,t.progress)},DiskDisconnectStatusRender:function(t){let e="-";let i;return SYNO.SDS.isEmpty(t)?{text:_T("disk_info","disk_status_normal"),color:"green-status"}:(i=parseInt(t),i>=0&&i<2&&(e=String.fromCharCode("A".charCodeAt(0)+i)),{text:String.format(_T("disk_info","disk_status_disconnect"),e),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){let n;const o=SYNO.SDS.Utils.StorageUtils.UiRenderHelper;if("space"===t)n=S[e];else if("health"===t)n=b[e];else if("processing"===t)n=y[e];else if("smart"===t)n=g[e];else if("compatibility"===t)n=s?o.DiskCompatibilityStatusMappingForNewHCL(e):E[e];else{if("disconnect"!==t)return SYNO.Debug.error("Invalid arguments",arguments),{text:"",color:""};n=o.DiskDisconnectStatusRender(e)}if(!n||!n.hasOwnProperty("color")||!n.hasOwnProperty("text"))return SYNO.Debug.error("Invalid arguments",arguments),{text:"",color:""};if("processing"===t&&"-"!==n.text){let t="";return SYNO.SDS.isEmpty(i)||"-1"===i||("percent"===n.progressType?t=i:"time"===n.progressType&&(t=_T("storage_manager","task_time_remain")+_T("common","colon")+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.TimeRender(parseInt(i)),t=String.format("({0})",t))),{text:String.format("{0}...{1}",n.text,t),color:n.color}}return{text:n.text,color:n.color}},DiskSummaryStatusRender:function(t,e,i=null,s=!1){"yes"===_S("support_synodrive_ability")&&(E.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"});const n=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskSummaryStatusRenderMap(t,e,i,s);return String.format('<span class="{0}">{1}</span>',n.color,n.text)},DiskTypeRender:function(t,e){let i;return i=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",i},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){let i,s="",n=!1;switch(t){case"processing":case"creating":case"deleting":n=!0}return t in a?(i=a[t],s=String.format('<span class="{0}">{1}</span>',i.color,i.text),0===e&&n&&(s=String.format("{0}<span class='{1}' style='white-space:nowrap'>({2})</span>",s,a.waiting.color,a.waiting.text)),s):""}
1,SpareStatusRender:function(t,e,i){let s="";return"none"===t?String.format('<span class="red-status">{0}</span>',_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('<span class="blue-status">{0} {1}, {2} {3}</span>',s,e,_T("volume","volume_raid_subgroup"),i):e?String.format('<span class="blue-status">{0} ({1})</span>',s,e):String.format('<span class="blue-status">{0}</span>',s)):"standby"==t?String.format('<span class="green-status">{0}</span>',_T("volume","volume_hot_spare")):" "},SnapShotStatusRender:function(t){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusRender(t.type,t.progress)},getErrorMsg:function(t){let e=_T("common","commfail");return t.errinfo&&t.errinfo.sec&&t.errinfo.key&&(e=_T(t.errinfo.sec,t.errinfo.key),SYNO.SDS.isArray(t.errinfo.params)?(t.errinfo.params.unshift(e),e=String.format.apply(String,t.errinfo.params)):SYNO.SDS.isString(t.errinfo.params)&&(e=String.format(e,t.errinfo.params))),e},decodeResponse:function(t,e){let i=null;const s={success:!1,text:_T("common","commfail")};if(!t||!e)return SYNO.Debug.error("response fail"),s;try{i=JSON.parse(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,"<")).replace(/>/g,">")},htmlDecoder:function(t){return t?t=(t=t.replace(/</g,"<")).replace(/>/g,">"):""},getServiceNames:function(t){const e=[];let i=[];return t.forEach((function(t){t in c?e.push(c[t]):-1!=t.lastIndexOf(":")?(i=t.split(":"),e.push(_T(i[0],i[1]))):e.push(t)})),e.join(", ")},getVolumeNames:function(t){const e=this,i=[];return t.forEach((function(t){SYNO.SDS.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){const e=[];return t.forEach((function(t){e.push(t.name)})),e.join(", ")},disableServices:function(t){t.forEach((function(t){SYNO.SDS.isString(d[t])&&SYNO.SDS.StatusNotifier.setServiceDisabled(d[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){let 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):(n=o[3],0<=n.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="";const n=JSON.parse(t);for(const t of n){if(s=SYNO.SDS.UIString.GetLocalizedString(t,""),e&&"("===s)break;i+=s}return i},DeprecatedDiskDisplayNameGet(t,e,i,s,n){let o=0;const a=_D("upnpmodelname"),r=SYNO.SDS.Utils.StorageUtils.UiRenderHelper;if(!n&&-1===i)return r.DiskNameRenderer(t,e);if(n){switch(a.toLowerCase()){case"rs3413xs+":case"rs10613xs+":return o=10,String.format("{0} {1}",_T("volume","dedicated_ssd_cache"),s-o)}let t=_T("volume","dedicated_ssd_cache");return"yes"===_D("support_m2_pool","no")&&(t=_T("volume","volume_m2_device")),0===i?String.format("{0} {1}",t,s):String.format("{0} {1}-{2}",t,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,i,s,{detail:n,color:o}){let a,r;if(!t.trustable)return n?_T("disk_info","disk_remain_life_cant_estimate"):_T("disk_info","disk_remain_life_cant_estimate_short");if("not_enough_time"===e)return _T("disk_info","ssd_bundle_calculating");if(!0===s){let t=_T("disk_info","disk_stop_warranty");return o?String.format('<span class="red-status">{0}</span>',t):t}return 30>e?_T("disk_info","disk_less_than_one_month"):i?(a=Math.floor(e/30),r=Math.floor(e%30/7),l=0===(u=a)?"":u+" "+(1===u?_T("disk_info","ssd_bundle_time_month"):_T("disk_info","ssd_bundle_time_months")),0===(c=0===(d=r)?"":d+" "+(1===d?_T("disk_info","ssd_bundle_time_week"):_T("disk_info","ssd_bundle_time_weeks"))).length?l:0===l.length?c:l+" "+c):_T("disk_info","disk_status_normal");var l,c,d,u}
1,RemainLifeRenderMap:function(t,e,i){return t.trustable?-1===t.value?{text:"-",color:""}:i?{text:t.value+" %",color:"red-status"}:e?{text:t.value+" %",color:""}:{text:_T("disk_info","disk_status_normal"),color:""}:{text:_T("disk_info","disk_remain_life_cant_estimate"),color:""}},RemainLifeRender:function(t,e,i){const s=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.RemainLifeRenderMap(t,e,i);return t.trustable||(s.text=_T("disk_info","disk_remain_life_cant_estimate_short")),String.format('<span class="{0}">{1}</span>',s.color,s.text)},RemainLifeRenderOld:function(t,e,i){return t.trustable?-1===t.value?"-":i?String.format('<span class="red-status">{0} %</span>',t.value):e?String.format("{0} %",t.value):String.format('<span ext:qtip="{1} %">{0}</span>',_T("disk_info","disk_status_normal"),t.value):_T("disk_info","disk_remain_life_cant_estimate")},BadSecCtRender:function(t){return-1===t?"-":t},advStatusRender:function(t,e){const i=_[t],s=new RegExp("%");return"-1"===e?String.format('<span class="blue-status">{0}</span>',_T("background_task","task_processing")):null!==s.exec(e)?String.format('<span class="blue-status">{0}</span>',_T("smart","smart_test_remain")+": "+e):i?String.format('<span class="{0}">{1}</span>',i.color,i.text):String.format('<span class="green-status">{0}</span>',_T("common","loading"))},smartTestStatusRender:function(t){const e=x[t];return e?String.format('<span class="{0}">{1}</span>',e.color,e.text):String.format('<span class="green-status">{0}</span>',_T("common","loading"))},textAnimate:function(t,e,i){switch(i){case 1:t.innerHTML=String.format('<span class="blue-status">{0}.</span>',e);break;case 2:t.innerHTML=String.format('<span class="blue-status">{0}..</span>',e);break;case 3:t.innerHTML=String.format('<span class="blue-status">{0}...</span>',e);break;default:t.innerHTML=String.format('<span class="blue-status">{0}</span>',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){let 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;default:return void SYNO.Debug.error("no such value",t)}return i},DiskCompatibilityStatusMappingForNewHCL:function(t){return t in T?T[t]:E[t]},DiskOverviewStatusRenderMap:function(t){const e=b[t];return e?{text:e.text,color:e.color}:{text:t,color:"green-status"}},DiskOverviewStatusRenderForNewHCL:function({compatibility:t="support",overview_status:e="normal"},i=""){const s=SYNO.SDS.Utils.StorageUtils.UiRenderHelper;let n=s.DiskOverviewStatusRenderMap(e);return s.DiskCompIssueCheck(t,i)&&(n=s.DiskCompatibilityStatusMappingForNewHCL(t)),String.format('<span class="{0}">{1}</span>',n.color,n.text)},DiskOverviewStatusRender:function(t){const e=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskOverviewStatusRenderMap(t);return String.format('<span class="{0}">{1}</span>',e.color,e.text)},DiskTestLogRender:function(t){return w[t]},DiskWddaRender:function(t){const e=v[t];return e||v.unknown},DiskPredictionMainFactorRender:function(t,e){let i="";const s=/smart_{1}(\d+)_/g;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{const n=s.exec(t)[1];for(let t=0;t<e.length;t++){const s=e[t];parseInt(n)===parseInt(s.id)&&(i=String.format(_T("disk_info","disk_prediction_main_factor_smart_info"),s.id,s.name))}}}return i},DiskCompatibilityGet:function(t,e){let i=E[e];switch(i||(i=E.disabled),t){case"tooltip":return i.tooltip;case"class":return i.cls;case"status":return String.format('<span class="{0}">{1}</span>',i.color,i.text)}}
1,DriveFirmwareRender:function(t,e,i,s){let n,o,a,r,l=t;return"upgrading"===e?o=_T("disk_info","fwupgrade_status_upgrading"):"upgrade_firmware"===e?(a="sm-fwupgrade-upgrade-fw-link",r="red-status",o=_T("disk_info","fwupgrade_status_upgrade_firmware")):"upgrade_dsm"===e?(a="sm-fwupgrade-upgrade-dsm-link",r="red-status",o=_T("disk_info","fwupgrade_status_upgrade_dsm")):"upgrade_database"===e&&(a="sm-fwupgrade-upgrade-db-link",r="orange-status",o=_T("disk_info","fwupgrade_status_upgrade_database")),o&&(n=o,s&&r&&a&&(n=String.format('<span style="text-decoration:underline; cursor: pointer; display: inline;" class="{0} {1}">{2}</span>',r,a,n)),l=String.format("{0} ({1})",l,n)),i&&(l=String.format('<div ext:qtip="{0}">{1}</div>',this.DriveFirmwareRender(t,e,!1,!1),l)),l},getStatusLevel:function(e){const i=n[t],s=a[e];if(!s)return i;let o=s.color;return s.hasOwnProperty("level")&&(o=s.level),n[o]||i},whichStatusLevelHigher:t=>Object.keys(t).map(e=>{return{key:e,levelPriorityIdx:(i=t[e],o.findIndex(t=>t.includes(SYNO.SDS.Utils.StorageUtils.UiRenderHelper.getStatusLevel(i))))};var i}).reduce((t,e)=>e.levelPriorityIdx<t.levelPriorityIdx?e:t).key}},SYNO.SDS.Utils.StorageUtils.UiRenderHelper=SYNO.SDS.Utils.StorageUtils.UiRenderHelperInitializer(),SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer=function(t){let e,i;if(Ext.isString(t))e=t;else{if("internal"!==t.location)return t.display_name||"";if(!Ext.isString(t.volume_path))return"";e=t.volume_path}return i=e.match(/volume\D*(\d+)/),i&&2===i.length?String.format("{0} {1}",_T("volume","volume"),i[1]):""},SYNO.SDS.Utils.StorageUtils.VolumeNameSizeRenderer=function(t){let e,i;return e=SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(t),i=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.SizeRender(t.size_free_byte),String.format("{0} ({1}{2} {3})",e,_T("volume","volume_freesize"),_T("common","colon"),i)},SYNO.SDS.Utils.CapacityRender=function(t,e){let i=_T("common","size_mb"),s=t;s<0&&(s=0),s>=1024&&(s/=1024,i=_T("common","size_gb")),s>=1024&&(s/=1024,i=_T("common","size_tb"));const n=e||2;return s.toFixed(n)+" "+i},SYNO.SDS.Utils.StorageUtils.FirmwareStatusClickHandler=function(t){const e=function(t,e){return t.hasClass?t.hasClass(e):!!t.contains&&t.contains(e)};if(t){const i="yes"===_D("support_hyper_converged","no");e(t,"sm-fwupgrade-upgrade-fw-link")?i?SYNO.SDS.AppLaunch("SYNO.SDS.ClusterManager.Instance",{page:{id:"nodePage",tabName:"hddssd-tab",winName:"SYNO.SDS.ClusterManager.FirmwareUpgradeWindow"}}):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")&&(i?SYNO.SDS.AppLaunch("SYNO.SDS.ClusterManager.Instance",{page:{id:"settingPage"}}):SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance",{fn:"SYNO.SDS.StorageManager.Disk.Main",vueWizard:"HDDSettingWindow"}))}}},function(t,e){Ext.namespace("SYNO.SDS.Utils.Network"),SYNO.SDS.Utils.Network={MacIPAnd:function(t,e){let i;const s=[];let n,o,a;for(a=0;a<32;a++)n=t%2,o=e%2,s[a]=1==n&&1==o?1:0,t=(t-n)/2,e=(e-o)/2;for(i=0,a=31;a>=0;a--)i=2*i+s[a];return i},GetIPValue:function(t){const e=t.split(".");let i=0;if(4!==e.length)return!1;for(let t=0;t<=3;t++)i*=256,i+=parseInt(e[t],10);return i},GetIPStr:function(t){const e=[];for(let 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){let s=!0;const n=SYNO.SDS.Utils.Network.GetIPValue(t),o=SYNO.SDS.Utils.Network.GetIPValue(i),a=SYNO.SDS.Utils.Network.GetIPValue(e),r=SYNO.SDS.Utils.Network.MacIPAnd(n,o),l=SYNO.SDS.Utils.Network.MacIPAnd(a,o);return s=0!==r&&r==l,s},idToString:function(t,e){let i="",s="";const 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
1("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(){const t=_D("maxlanport","1");return 1<parseInt(t,10)},checkExternalIP:function(t){if(!t)return!1;let e,i;if(t=t.toLowerCase(),!Ext.form.VTypes.looseip(t))return!0;if(t.indexOf(".")<0&&0===t.indexOf("fc00:"))return!1;if(t.indexOf(".")<0)return!1;for(e in i=t.split("."),i)i.hasOwnProperty(e)&&(i[e]=parseInt(i[e],10));return 10!=i[0]&&(!(172==i[0]&&i[1]>=16&&i[1]<=31)&&(192!=i[0]||168!=i[1]))},getExternalHostName:function(t){let e;return e=_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,e},getURLprefix:function(t){let 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"===_S("support_net_topology")}}},function(t,e){SYNO.SDS.Utils.createTimeItemStore=function(t){const e=[],i={hour:24,min:60,sec:60};if(t in i){for(let s=0;s<i[t];s++)e.push([s,String.leftPad(String(s),2,"0")]);return new Ext.data.SimpleStore({id:0,fields:["value","display"],data:e})}return null},SYNO.SDS.Utils.isBSTinEffect=function(){let t,e,i,s,n,o=new Date;for(t=31;t>0;t--)if(e=new Date(o.getFullYear(),2,t),0===e.getDay()){s=e;break}for(t=31;t>0;t--)if(e=new Date(o.getFullYear(),9,t),0===e.getDay()){n=e;break}return i=!(o<s||o>n),i}},function(t,e){Ext.define("SYNO.SDS.CustomizeLogo",{extend:"Ext.Container",constructor:function(t){Ext.apply(this,t);const 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){const 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(){const t=Ext.fly("sds-login-cuslogo-img");this.imgSize=this.getNatural(t),this.adjustImgPos()},adjustImgPos:function(){if(!this.imgSize)return;const 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")}}
1),Ext.define("SYNO.SDS.WelcomeInfo",{extend:"Ext.Container",constructor:function(t){Ext.apply(this,t);const e=[];this.logo_enable&&e.push(this.createLogo()),this.hasWelComeMsg()&&e.push(this.createWelComeMsg());const 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(){const t=""!==this.login_welcome_title,e=""!==this.login_welcome_msg;return t||e},createWelComeMsg:function(){const 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)return;const t=this.msgWrapper.getEl(),e=Ext.lib.Dom.getViewHeight()-t.getTop()-20-26;t.setStyle("max-height",e+"px")}})},function(t,e){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(){const 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(){const 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){const 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){const i=this;i.callParent(arguments),i.el.addClass(this.widgetCls),i.header[i.onlyView?"addClass":"addClassOnHover"](i.widgetOverHeaderCls)},initTools:function(){const 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])}
1,createGhost:function(t,e,i){return t+=" "+this.widgetCls,this.callParent([t,e,i])},setIcon:function(t){const 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{const t=s.launchParam?Ext.decode(s.launchParam):void 0;SYNO.SDS.AppLaunch(s.appInstance,t)}}),e)},onMinimize:function(){const 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(){const t=this;t.getEl().removeClass("sds-widget-window-medium"),t.setSize(320,205),t.hidden||t.doExpand(),t.mediumSize=!1},afterRender:function(){const t=this;t.callParent(arguments),t.maximized||t.setMediumSize()},setMediumSize:function(){this.doCollapse(),this.getEl().addClass("sds-widget-window-medium"),this.setSize(320,121),this.mediumSize=!0},doCollapse:function(){const t=this.widget;t&&t.doCollapse&&t.doCollapse()},doExpand:function(){const t=this.widget;t&&t.doCollapse&&t.doExpand()},restore:function(){if(this.maximized){const 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(){const 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(){const 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(){const t=this;Ext.destroy(t.taskButton),t.callParent(arguments)},onActivate:Ext.emptyFn,onDeactivate:Ext.emptyFn})},function(t,e){function i(t){for(;null!==(e=null===(i=t)||void 0===i?void 0:i.ownerCt)&&void 0!==e?e:null===(s=t)||void 0===s?void 0:s.vueOwnerCt;){var e,i,s,n;t=null!==(n=t.ownerCt)&&void 0!==n?n:t.vueOwnerCt}return t}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){const 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){const 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(let t=0;t<this.components.length;++t)try{this.components[t].$destroy?this.components[t].$destroy():this.components[t].destroy()}catch(e){if(Ext.isDefined(SYNO.SDS.JSDebug))throw SYNO.Debug.error(this.id,"sub-components["+t+"] destroy failed.",this.components[t]),e}delete this.components},findWindow:function(){const t=function(t){return t&&t._isVue&&window["syno-vue-components"].fn.isExtendVueComponent(t,window["syno-vue-components"].components.vWindow)};let e=this;return e instanceof SYNO.SDS.BaseWindow||t(e)?e:(e=i(e),e instanceof SYNO.SDS.BaseWindow||t(e)?e:void 0)},findAppWindow:function(){const t=function(t){return t&&t._isVue&&window["syno-vue-components"].fn.isExtendVueComponent(t,window["syno-vue-components"].components.vAppWindow)};let e=this,s=Ext.getClassByName("SYNO.SDS.AppWindow");if(!Ext.isEmpty(s)){if(e instanceof s||t(e))return e;if(e._appWindow instanceof s||t(e._appWindow))return e._appWindow;if(e=i(e),e instanceof s||t(e))return this._appWindow=e,e;if(Ext.isObject(e)){for(;
1Ext.isObject(e.owner||e.$options&&e.$options.owner);e=e._isVue?e.$options.owner:e.owner);return e instanceof s||t(e)?(this._appWindow=e,e):e.module&&e.module.appWin&&(e.module.appWin instanceof s||t(e.module.appWin))?(this._appWindow=e.module.appWin,e.module.appWin):void 0}}},getDsmVersion:function(){const t=this.findAppWindow();return t?t.getOpenConfig("dsm_version"):null},getDsmHttpPort:function(){let t,e=this.findAppWindow();return e&&e.hasOpenConfig("cms_ds_data")&&(t=e.getOpenConfig("cms_ds_data").http_port),t},getDsmHost:function(){let t,e=this.findAppWindow();return e&&e.hasOpenConfig("cms_ds_data")&&(t=e.getOpenConfig("cms_ds_data").host),t},getBaseURL:function(t,e,i){return t.appWindow=this.findAppWindow(),SYNO.API.GetBaseURL(t,e,i)},sendWebAPI:function(t){return t.appWindow=this.findAppWindow(),SYNO.API.Request(t)},sendWebAPIPromise:function(t){return new Promise(function(e,i){t.callback=function(t,s,n,o){t?e(s):i(s)},this.sendWebAPI(t)}.bind(this))},pollReg:function(t){return t.appWindow=this.findAppWindow(),SYNO.API.Request.Polling.Register(t)},pollUnreg:function(t){return SYNO.API.Request.Polling.Unregister(t)},pollList:function(t){return t.appWindow=this.findAppWindow(),SYNO.API.Request.Polling.List(t)},downloadWebAPI:function(t){return t.appWindow=this.findAppWindow(),SYNO.SDS.Utils.IFrame.requestWebAPI(t)},IsAllowRelay:function(){const t=this.findAppWindow();return!!Ext.isObject(t)&&(SYNO.SDS.Utils.CMS.IsAllowRelay&&SYNO.SDS.Utils.CMS.IsAllowRelay(t))},_S:function(t){return _S(t)},_D:function(t,e){return _D(t,e)},getKnownAPI:function(t){return SYNO.API.GetKnownAPI(t)},IsKnownAPI:function(t,e){const i=this.getKnownAPI(t);return!!SYNO.SDS.isObject(i)&&!(e<i.minVersion||i.maxVersion<e)}}),Ext.override(Ext.grid.GridView,{onLayout:function(){const t=this.el.select(".x-grid3-scroller",this).elements[0];t.clientWidth===t.offsetWidth?this.scrollOffset=2:this.scrollOffset=void 0,this.fitColumns(!1)}}),Ext.override(Ext.data.Record,{set:function(t,e){let i;const s=Ext.isPrimitive(e)?String:Ext.encode;if(s(this.data[t])!=s(e)){if(this.dirty=!0,this.modified||(this.modified={}),t in this.modified&&this.modified[t]===e){for(i in this.dirty=!1,delete this.modified[t],this.modified)if(this.modified.hasOwnProperty(i)){this.dirty=!0;break}}else t in this.modified||(this.modified[t]=this.data[t]);this.data[t]=e,this.editing||this.afterEdit()}}}),Ext.override(Ext.data.Store,{afterEdit:function(t){const e=this.modified.indexOf(t);t.dirty&&-1==e?this.modified.push(t):t.dirty||-1==e||this.modified.splice(e,1),this.fireEvent("update",this,t,Ext.data.Record.EDIT)}}),Ext.Element.addMethods(Ext.Fx),Ext.override(Ext.dd.DragSource,{validateTarget:function(t,e,i){return!(i!==e.getTarget().id&&!e.within(i))||(this.getProxy().setStatus(this.dropNotAllowed),!1)},beforeDragEnter:function(t,e,i){return this.validateTarget(t,e,i)},beforeDragOver:function(t,e,i){const s=this.validateTarget(t,e,i);return this.proxy&&this.proxy.setStatus(s?this.dropAllowed:this.dropNotAllowed),s},beforeDragOut:function(t,e,i){return this.validateTarget(t,e,i)},beforeDragDrop:function(t,e,i){return!!this.validateTarget(t,e,i)||(this.onInvalidDrop(t,e,i),!1)}}),Ext.override(Ext.form.CompositeField,{combineErrors:!1}),Ext.isIE&&(Ext.menu.BaseItem.prototype.clickHideDelay=-1),Ext.override(Ext.Window,{onRender:function(t,e){Ext.Window.superclass.onRender.call(this,t,e),this.plain&&this.el.addClass("x-window-plain"),this.focusEl=this.el.createChild({tag:"div",cls:"x-dlg-focus",tabIndex:"0",role:this.ariaRole||"dialog","aria-label":this.title},this.el.first()),this.focusEl.swallowEvent("click",!0),this.focusEl.addKeyListener(Ext.EventObject.TAB,this.onFirstTab,this),this.lastEl=this.el.createChild({tag:"div",cls:"x-dlg-focus",tabIndex:0,role:"alert",html:_T("desktop","window_last_hint")}),this.lastEl.addKeyListener(Ext.EventObject.TAB,this.onLastTab,this),this.proxy=this.el.createProxy("x-window-proxy"),this.proxy.enableDisplayMode("block"),this.modal&&(this.maskEl=this.container.createChild({cls:"ext-el-mask"},this.el.dom),this.maskEl.enableDisplayMode("block"),this.maskEl.hide(),this.mon(this.maskEl,"click",this.focus,this)),this.maximizable&&this.mon(this.header,"dblclick",this.toggleMaximize,this),this.frame&&this.header&&(this.tl=this.header.dom.parentNode.parentNode.parentNode)},onLastTab:function(t,e){e.shiftKey||(e.preventDefault(),this.focusEl.focus())},onFirstTab:function(t,e){if(e.shiftKey)e.preventDefault(),this.lastEl.focu
1s();else if(Ext.isFunction(this.findTopWin)){const t=this.findTopWin();t!==this&&(e.preventDefault(),t.focus())}},beforeShow:function(){if(delete this.el.lastXY,delete this.el.lastLT,void 0===this.x||void 0===this.y){const t=this.el.getAlignToXY(this.container,"c-c"),e=this.el.translatePoints(t[0],t[1]);this.x=void 0===this.x?e.left:this.x,this.y=void 0===this.y?e.top:this.y}this.el.setLeftTop(this.x,this.y),this.expandOnShow&&this.expand(!1),this.modal&&(Ext.getBody().addClass("x-body-masked"),this.maskEl.setSize(Ext.lib.Dom.getViewWidth(!0),Ext.lib.Dom.getViewHeight(!0)),this.maskEl.show())},onWindowResize:function(){this.maximized&&this.fitContainer(),this.modal&&(this.maskEl.setSize("100%","100%"),this.maskEl.setSize(Ext.lib.Dom.getViewWidth(!0),Ext.lib.Dom.getViewHeight(!0))),this.doConstrain()},setZIndex:function(t){this.modal&&this.maskEl.setStyle("z-index",t),this.el.setZIndex(++t),t+=5,this.resizer&&this.resizer.proxy.setStyle("z-index",++t),this.lastZIndex=t},beforeDestroy:function(){this.rendered&&(this.hide(),this.clearAnchor(),Ext.destroy(this.focusEl,this.resizer,this.dd,this.proxy,this.maskEl)),Ext.Window.superclass.beforeDestroy.call(this)},hide:function(t,e,i){return this.hidden||!1===this.fireEvent("beforehide",this)||(e&&this.on("hide",e,i,{single:!0}),this.hidden=!0,void 0!==t&&this.setAnimateTarget(t),this.modal&&(this.maskEl.hide(),Ext.getBody().removeClass("x-body-masked")),this.animateTarget?this.animHide():(this.el.hide(),this.afterHide())),this},getFrameHeight:function(){let t=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");return t+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0),this.frame?t+=(this.tl||this.el.dom.firstChild).offsetHeight+this.ft.dom.offsetHeight+this.mc.getFrameWidth("tb"):t+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0),t},toFront:function(t){this.manager.bringToFront(this)&&(this.focusLeave=!1,t&&t.getTarget().focus?(t.getTarget().focus(),document.activeElement!==t.getTarget()&&this.focus()):this.focus())}}),Ext.override(Ext.grid.RowSelectionModel,{silentMode:!1,onRefresh:function(){let t,e,i=this.grid.store,s=this.getSelections(),n=0,o=s.length;for(this.silent=this.silentMode&&!0,this.clearSelections(!0);n<o;n++)e=s[n],-1!=(t=i.indexOfId(e.id))&&this.selectRow(t,!0);s.length!=this.selections.getCount()&&this.fireEvent("selectionchange",this),this.silent=!1}}),Ext.override(Ext.grid.GridPanel,{getValues:function(){const t=[],e=this.getStore();return Ext.isObject(e)?(e.each((function(e,i,s){t.push(Ext.apply({},e.data))}),this),t):t},setValues:function(t){const e=this.getStore(),i=[];if(!Ext.isObject(e)||!Ext.isArray(t))return!1;e.removeAll(),Ext.each(t,(function(t){i.push(new Ext.data.Record(t))}),this),e.add(i)}}),Ext.override(Ext.grid.GridView.ColumnDragZone,{getDragData:function(t){const e=Ext.lib.Event.getTarget(t),i=this.view.findHeaderCell(e);return!!i&&{ddel:Ext.fly(i).child("div.x-grid3-hd-inner",!0),header:i}}}),Ext.override(Ext.grid.HeaderDropZone,{positionIndicator:function(t,e,i){let s,n,o=Ext.lib.Event.getPageX(i),a=Ext.lib.Dom.getRegion(Ext.fly(e).child("div.x-grid3-hd-inner",!0)),r=a.top+this.proxyOffsets[1];return a.right-o<=(a.right-a.left)/2?(s=a.right+this.view.borderWidth,n="after"):(s=a.left,n="before"),!this.grid.colModel.isFixed(this.view.getCellIndex(e))&&(s+=this.proxyOffsets[0],this.proxyTop.setLeftTop(s,r),this.proxyTop.show(),this.bottomOffset||(this.bottomOffset=this.view.mainHd.getHeight()),this.proxyBottom.setLeftTop(s,r+this.proxyTop.dom.offsetHeight+this.bottomOffset),this.proxyBottom.show(),n)},onNodeDrop:function(t,e,i,s){const n=s.header;if(n!=t){let e=this.grid.colModel,s=Ext.lib.Event.getPageX(i),o=Ext.lib.Dom.getRegion(Ext.fly(t).child("div.x-grid3-hd-inner",!0)),a=o.right-s<=(o.right-o.left)/2?"after":"before",r=this.view.getCellIndex(n),l=this.view.getCellIndex(t);return"after"==a&&l++,r<l&&l--,e.moveColumn(r,l),!0}return!1}}),Ext.override(SYNO.ux.ModuleList,{getLocalizedString:function(t){return SYNO.SDS.UIString.GetLocalizedString(t)}}),Ext.override(SYNO.ux.FieldSet,{stateful:!0,stateEvents:["expand","collapse"],getState:function(){return{collapsed:this.collapsed}},saveState:function(){const t=this.getState();this.setUserCollapseState(t.collapsed)},getUserCollapseState:function(){const t=this.getStateId(),e=this.findAppWindow();if(e&&e.appInstance&&t){const i=e.appInstance.getUserSettings("fieldset_collapse_status")||{};return Ext.isBoolean(i[t])?i[t]:this.collapsed}return this.collapsed},setUserCollapseState:function(t){const e=this.getStateId(),i=this.findAppWindow();if(i&&i.appInstance&&e){const s=i.appInstance.getUserSettings("fieldset_collapse_status")||{};s[e]=t,i.appInstance.setUserSettings("fieldset_collapse_status",s)}},updateUserCollapseState:function(){const t={collapsed:this.getUserCollapseState()};this.applyState(t)}}),Ext.urlAppend=function(...t){return SYNO.SDS.urlAppend(...t)},Ext.ns("SYNO.SDS"),Ext.Ajax.on("beforerequest",(function(t,e){SYNO.Remind("try to use SYNO.API.Request instead of Ext.Ajax.request"),!0!==e.updateSynoToken&&Ext.isEmpty(e.skipSynoToken)&&!Ext.isEmpty(_S("SynoToken"))&&(Ext.isEmpty(e.headers)&&(e.headers={}),void 0===e.headers["X-SYNO-TOKEN"]&&(e.headers["X-SYNO-TOKEN"]=_S("SynoToken")))})),Ext.util.Observable.observeClass(Ext.form.BasicForm),Ext.form.BasicForm.on("beforeaction",(function(t,e){t.url&&(t.url=Ext.urlAppend(t.url))})),Ext.util.Observable.observeClass(Ext.data.Connection),Ext.data.Connection.on("beforerequest",(function(t,e){Ext.isEmpty(e.skipSynoToken)&&!Ext.isEmpty(_S("SynoToken"))&&(Ext.isEmpty(e.headers)&&(e.headers={}),e.headers["X-SYNO-TOKEN"]=_S("SynoToken"))})),Ext.define("Ext.data.JsonP",{singleton:!0,requestCount:0,requests:{},timeout:3e4,disableCaching:!0,disableCachingParam:"_dc",callbackKey:"callback",request:function(t){t=Ext.apply({},t);let e,i,s=this,n=Ext.isDefined(t.disableCaching)?t.disableCaching:s.disableCaching,o=t.disableCachingParam||s.disableCachingParam,a=++s.requestCount,r=t.callbackName||"callback"+a,l=t.callbackKey||s.callbackKey,c=Ext.isDefined(t.timeout)?t.timeout:s.timeout,d=Ext.apply({},t.params),u=t.url;return n&&!d[o]&&(d[o]=(new Date).getTime()),t.params=d,d[l]="Ext.data.JsonP."+r,i=t.iframeUrl?s.createIframe(u,d,t):s.createScript(u,d,t),s.requests[a]=e={url:u,params:d,script:i,id:a,scope:t.scope,success:t.success,failure:t.failure,callback:t.callback,callbackKey:l,callbackName:r},c>0&&(e.timeout=setTimeout(Ext.createDelegate(s.handleTimeout,s,[e]),c)),s.setupErrorHandling(e),s[r]=Ext.createDelegate(s.handleResponse,s,[e],!0),s.loadScript(e),e},abort:function(t){let e,i=this,s=i.requests;
1if(t)t.id||(t=s[t]),i.handleAbort(t);else for(e in s)s.hasOwnProperty(e)&&i.abort(s[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){let 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){const 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){let s;const n=Ext.urlAppend(t,Ext.urlEncode(e),!1);if(void 0===i.iframeUrl)return void SYNO.Debug("no iframe url");let o=i.iframeUrl;return o+="&url="+encodeURIComponent(n),o=Ext.urlAppend(o,"",!0),s=document.createElement("iframe"),s.setAttribute("src",o),s.setAttribute("style","visibility: hidden"),s},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);const 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)return;const 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)return;const 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);const 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)return;const 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){const 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){const 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)}})},function(t,e){Ext.namespace("SYNO.API.Util"),SYNO.API.Util.ShowDeprecatedMsg=function(){SYNO.Debug.warn("SYNO.API.Util is deprecated, please use SYNO.API.Response instead.")}
1,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){let e,i,s,n=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 e=window.devicePixelRatio||n,i=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1,s=e/i,s}}})},function(t,e){SYNO.namespace("SYNO.API"),SYNO.API.SerializeForm=function(t){let e,i,s,n,o=t.elements||(document.forms[t]||Ext.getDom(t)).elements,a=!1,r=encodeURIComponent,l="";for(const t of o){if(e=t.name,i=t.type,s=Ext.getCmp(t.id),t.getAttribute("non-serialize"))return;if(!t.disabled&&e)if(/select-(one|multiple)/i.test(i))Ext.each(t.options,
1(function(t){t.selected&&(n=t.hasAttribute?t.hasAttribute("value"):t.getAttributeNode("value").specified,l+=String.format("{0}={1}&",r(e),r(n?t.value:t.text)))}));else if(!/file|undefined|reset|button/i.test(i))if(null!==Ext.getClassByName("SYNO.ux.Radio")&&s instanceof SYNO.ux.Radio)s.getValue()&&(l+=r(e)+"="+r(s.getInputValue())+"&");else if(null!==Ext.getClassByName("SYNO.ux.Checkbox")&&s instanceof SYNO.ux.Checkbox)l+=r(e)+"="+r(s.getValue())+"&";else if(null!==Ext.getClassByName("SYNO.ux.SuperBoxSelect")&&s instanceof SYNO.ux.SuperBoxSelect){if(s.shouldSerializeValue()){const t=s.getInputValue();if(Ext.isString(t))return void(l+=r(e)+"="+r(t)+"&");if(Ext.isArray(t)){for(let i=0,s=t.length;i<s;i++){const s=t[i];l+=r(e)+"="+r(s)+"&"}return}}}else/radio|checkbox/i.test(i)&&!t.checked||"submit"==i&&a||(l+=r(e)+"="+r(t.value)+"&",a=/submit/i.test(i))}return l.substring(0,l.length-1)}},,,function(t,e,i){i.r(e);var s=i(0);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('<div class="x-tool x-tool-{id}" role="option" aria-label="{text}"> </div>'),realHeight:void 0,realWidth:void 0,constructor:function(t){const e=Ext.urlDecode(location.search.substr(1));this.enableAlertHeight=e.alertHeight;const 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){const t=Ext.Resizable.positions;for(const 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(){let t,e;this.constrainHeader&&(t=this.getSize(),e=this.el.getConstrainToXY(this.container,!0,void 0),e&&(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();t<this.minHeight&&(t=this.minHeight),this.constrainHeight(t)}},constrainHeight:function(t,e){(this.isVisible()||Ext.isDefined(e))&&this.realHeight>t&&(this.setHeight(t),this.heightConstrained=!0)},disableCloseButton:function(){const t=this.toolCt.child(".x-tool.x-tool-close");this.closeDisabled=!0,t&&t.addClass("disabled")},enableCloseButton:function(){const 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))},onOpenByVue:function(){this._openByVue=!0,this.onOpen()},onOpen:function(){var t;!this._openByVue&&null!==(t=this.owner)&&void 0!==t&&t._isVue&&Object(s.d)("you should open extjs window by using `openExtWindow`, dont open it by yourself"),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(){let 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(){const t=this.getSize();return t.width<this.minWidth&&(t.width=this.minWidth),t.height<this.minHeight&&(t.height=this.minHeight),t},maximize:function(){return this.maximized||(this.fireEvent("beforemaximize",this),this.expand(!1),this.restoreSize=this.getConstrainSize(),this.restorePos=this.getPosition(!0),this.maximizable&&(this.tools.maximize.hide(),this.tools.restore.show()),this.maximized=!0,this.el.disableShadow(),this.dd&&this.dd.lock(),this.collapsible&&this.tools.toggle.hide(),this.el.addClass("x-window-maximized"),this.container.addClass("x-window-maximized-ct"),SYNO.SDS.TaskBar&&this.setPosition(0,this.isFullScreen?0:SYNO.SDS.TaskBar.height()),this.fitContainer(),this.fireEvent("maximize",this)),this},fitContainer:function(){const t=this.container.getViewSize(!1);SYNO.SDS.TaskBar&&!this.isFullScreen?this.setSize(t.width,t.height-SYNO.SDS.TaskBar.height()):this.setSize(t.width,t.height)}
1,setTitle:function(t,e,i){return this.titleEncoded=i,this.title=t,!1!==i&&(t=Ext.util.Format.htmlEncode(t)),this.header&&this.headerAsText&&this.header.child("span").update(t),e&&this.setIconClass(e),this.fireEvent("titlechange",this,this.title),this},getStateParam:function(){const t={};return(this.maximized||this.hidden)&&(t.maximized=this.maximized,t.minimized=this.hidden),t},getToolSelectedEl:function(){const t=this.toolCt.dom.getAttribute("aria-activedescendant");return t?Ext.get(t):null},selectToolNext:function(){let t,e=this.getToolSelectedEl();if(!e)return this.toolCt.set({"aria-activedescendant":this.toolCt.first().id}),void this.toolCt.first().addClass("x-tool-selected");for(t=e.next();t&&!t.isVisible();)t=t.next();t&&(e.removeClass("x-tool-selected"),this.toolCt.set({"aria-activedescendant":t.id}),t.addClass("x-tool-selected"))},selectToolPre:function(){let t,e=this.getToolSelectedEl();if(!e)return this.toolCt.set({"aria-activedescendant":this.toolCt.last().id}),void this.toolCt.last().addClass("x-tool-selected");for(t=e.prev();t&&!t.isVisible();)t=t.prev();t&&(e.removeClass("x-tool-selected"),this.toolCt.set({"aria-activedescendant":t.id}),t.addClass("x-tool-selected"))},onToolCtKenEnter:function(){const t=this.getToolSelectedEl();t&&t.handler.call(this)},addTool:function(){if(this.rendered&&!this.toolCt&&this.header&&(this.elements+=",toolCt",this.toolCt=this.header.createChild({cls:"x-window-toolCt"},this.header.first("."+this.headerTextCls,!0)),this.toolCt.setARIA({role:"listbox",label:_T("desktop","window_toolbar_list"),activedescendant:"false"}),this.toolCt.addKeyListener(Ext.EventObject.LEFT,this.selectToolNext,this),this.toolCt.addKeyListener(Ext.EventObject.RIGHT,this.selectToolPre,this),this.toolCt.addKeyListener(Ext.EventObject.DOWN,this.selectToolNext,this),this.toolCt.addKeyListener(Ext.EventObject.UP,this.selectToolPre,this),this.toolCt.addKeyListener(Ext.EventObject.ENTER,this.onToolCtKenEnter,this)),this.callParent(arguments),!this.rendered||!this.header)return;let t,e=arguments,i=e.length,s=this.tools;for(t=0;t<i;t++){const i=e[t];s[i.id].handler||(s[i.id].handler=i.handler)}},createGhost:function(t,e,i){const s=document.createElement("div");if(s.className="x-panel-ghost "+(t||""),this.header&&s.appendChild((this.tl||this.el.dom.firstChild).cloneNode(!0)),Ext.fly(s.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight()),s.style.width=this.el.dom.offsetWidth+"px",i?Ext.getDom(i).appendChild(s):this.container.dom.appendChild(s),!1!==e&&!1!==this.el.useShim){const t=new Ext.Layer({shadow:!1,useDisplay:!0,constrain:!1},s);return t.show(),t}return new Ext.Element(s)},initTools:function(){this.minimizable&&this.addTool({id:"minimize",text:_T("desktop","minimize"),handler:this.minimize.createDelegate(this,[])}),this.maximizable&&(this.addTool({id:"maximize",text:_T("desktop","maximize"),handler:this.maximize.createDelegate(this,[])}),this.addTool({id:"restore",text:_T("destop","restore"),handler:this.restore.createDelegate(this,[]),hidden:!0})),this.closable&&this.addTool({id:"close",text:_T("common","close"),handler:this._onCloseAction.createDelegate(this,[])})},openVueWindow:function(t,e){let i,s,n;if(Ext.isString(t)){i=Ext.getClassByName(t)}else i=t;if(i._isVue)n=s=i,document.querySelector("#sds-desktop").appendChild(i.$el);else{const t=document.createElement("div");n=new i({propsData:e}),SYNO.SDS.Desktop&&n&&SYNO.SDS.Desktop.appendChild(n),document.querySelector("#sds-desktop").appendChild(t),n.$mount(t),s=function t(e){if(e){if("ModalWindow"===e.$options.name||"MessageBoxWindow"===e.$options.name||"WizardWindow"===e.$options.name)return e;for(const i of e.$children){const e=t(i);if(e)return e}}}(n)}return s.setOwner(this),s.init(this.manager),this.modalWin.push(s),{window:s,component:n}}}),SYNO.SDS.BaseWindow=Ext.extend(SYNO.SDS.AbstractWindow,{maskCnt:0,maskTask:null,siblingWin:null,sinkModalWin:null,modalWin:null,msgBox:null,dsmStyle:"v5",owner:null,useDefualtKey:!0,onEsc:function(){!1!==this.useDefualtKey&&SYNO.SDS.BaseWindow.superclass.onEsc.apply(this,arguments)},constructor:function(t){let e,i=!!t.owner;this.siblingWin=[],this.modalWin=[],this.sinkModalWin=[],this.updateDsmStyle(t),t.useStatusBar&&(t=this.addStatusBar(t)),e=Ext.urlDecode(location.search.substr(1)),e.dsmStyle&&(this.dsmStyle=e.dsmStyle),t.cls=String.format("{0}{1}",t.cls?t.cls:"",this.isV5Style()?" sds-window-v5":" sds-window"),this.fillPadding(t),SYNO.SDS.BaseWindow.superclass.constructor.call(this,Ext.applyIf(t,{border:!0,plain:!1,shadow:!this.isV5Style()&&!SYNO.SDS.UIFeatures.test("disableWindowShadow")&&"frame",shadowOffset:6,closeAction:"close"})),!i||t.owner instanceof SYNO.SDS.BaseWindow||t.owner._isVue||SYNO.Debug.warn(String.format('WARNING! owner of window "{0}" is not BaseWindow',this.title||this.id)),this.mon(this,"hide",this.restoreWindowFocus,this)},findTopWin:function(){let t,e=!1,i=this;for(;!1===e;)if(Ext.isArray(i.modalWin)&&i.modalWin.length>0)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(){let t,e=this.findTopWin();
1if(t=e.focusStack,!t)return void(e.focusEl&&e.focusEl.focus());let i,s,n=!1;for(i=t.length-1;i>=0&&!0!==n;i--)s=Ext.fly(t[i]),s&&s.dom&&s.isVisible()&&-1!==s.dom.getAttribute("tabIndex")&&(s.focus(),n=!0);n||(this.focusEl.focus(),s=this.focusEl),e.focusStack=[s.dom]},addFocusPt:function(){let t,e=document.activeElement;e&&Ext.fly(e).up(".x-window")&&(t=this.findTopWin(),t.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){const 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);const 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){let e=this;do{if(t===e)return!0;e=e._isVue?e.$options.owner:e.owner}while(e);return!1},getTopWin:function(){let t=this,e=this;for(;t;)e=t,t=t._isVue?t.$options.owner:t.owner;return e},getGroupWinAccessTime:function(){let 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){let 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){const 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){let o,a={};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)");a=t}const r=a.save,l=a.dontSave,c=a.cancel,d=a.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(r,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))return void SYNO.Debug.error("Callback should be callable");let 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))},getToastBox:function(t,e,i,s){this.toastBox&&!this.toastBox.isDestroyed&&this.toastBox.destroy();const 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(){let 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&&(t=!1!==SYNO.SDS.BaseWindow.superclass.onClose.apply(this,arguments)),t},onActivate:function(){const 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(){const 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))}
1,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)return;const e=Ext.Element.data(this.el.dom,"mask");e&&e.setOpacity(t)},mask:function(t,e,i,s){if(this.isDestroyed)return;if(t=Ext.isNumber(t)?t:0,this.maskCnt++,this.maskCnt>1)return void this.setMaskOpacity(t,s);const 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)return;this.maskCnt=0,this.maskTask&&this.maskTask.cancel();const t=Ext.Element.data(this.el,"mask");this.mun(t,"mousedown",this.blinkModalChild,this),this.el.unmask()},blinkModalChild:function(t){if(null==t||t.stopPropagation(),!SYNO.SDS.WindowMgr)return;this.modalWin.sort(SYNO.SDS.WindowMgr.sortWindows);const e=this.modalWin[this.modalWin.length-1];e?e.blinkModalChild(t):this.isModalized()&&(this.toFront(),this.blinkShadow(3))},clearStatus:function(t){const 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||{};const 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(){let 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&&t.setStyle("padding-left",e+"px")))},fillPadding:function(t){let e;if(e=this.getFirstItem(t),!e)return t;(this.isGridPanel(e)||this.isFormPanel(e)||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){let 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){let s,n,o;if(!t)return!1;if(t instanceof e)return!0;for(s=t.xtype,n=0,o=i.length;n<o;n++)if(s===i[n])return!0;return!1},destroy:function(){this.isDestroyed||!1!==this.fireEvent("beforedestroy",this)&&(this.destroying=!0,this.focusStack&&(this.focusStack=null),this.restoreWindowFocus(),SYNO.SDS.BaseWindow.superclass.destroy.call(this))}});i(59);Ext.namespace("SYNO.SDS.ModalWindow"),Ext.define("SYNO.SDS.ModalWindow",{extend:"SYNO.SDS.BaseWindow",ownerMasked:!1,constructor:function(t){t=Ext.apply({useStatusBar:!0,closable:!0,maximizable:!1,minimizable:!1,modal:!t.owner},t),this.callParent([t])},afterRender:function(){if(this.callParent(arguments),!this.heightConstrained){const t=this.owner?this.owner.el:document.body;this.owner&&this.owner._isVue?this.owner._openByVue||this.alignTo(this.owner.$el,"c-c"):this.alignTo(t,"c-c")}"emphasized"===this.popupStyle&&Object(s.d)("popup style emphasized is deprecated, please remove it")},isModalized:function(){return!0},hideFromOwner:function(){if(this.owner){const t=this.sinkable?"sinkModalWin":"modalWin";return Ext.isArray(this.owner[t])&&this.owner[t].remove(this),this.ownerMasked&&(this.owner.unmask(!0),this.ownerMasked=!1),!0}return!1},afterShow:function(){if(this.callParent(arguments),this.owner&&this.owner._isVue){if(this._openByVue)return;var t,e;null===(t=(e=this.owner).onExtWindowShow)||void 0===t||t.call(e,this)}else this.owner&&this.sinkable?this.owner.sinkModalWin.push(this):!this.ownerMasked&&this.owner&&(this.owner.modalWin.push(this),this.owner.mask(0,null,
1null,!0),this.ownerMasked=!0)},afterHide:function(){if(SYNO.SDS.ModalWindow.superclass.afterHide.apply(this,arguments),this.owner&&this.owner._isVue){if(this._openByVue)return;var t,e;null===(t=(e=this.owner).onExtWindowHide)||void 0===t||t.call(e,this)}else this.hideForMinimize||this.hideFromOwner()},onBeforeDestroy:function(){if(this.owner&&this.owner._isVue){if(this._openByVue)return;var t,e;null===(t=(e=this.owner).onExtWindowDestroy)||void 0===t||t.call(e,this)}else this.hideFromOwner()&&(this.owner=null);SYNO.SDS.ModalWindow.superclass.onBeforeDestroy.apply(this,arguments)},onMinimize:function(){this.hide(),SYNO.SDS.ModalWindow.superclass.onMinimize.apply(this,arguments)},onWindowClose:function(){this.owner?this.owner.focus():SYNO.SDS.TaskBar.getStartButton().focus()},fillWindowPadding:function(t){Ext.applyIf(t,{padding:"16px 20px 0 20px"})}});i(60),i(61),i(62),i(63),i(64),i(65),i(66),i(67),i(68),i(69),i(70),i(71),i(72),i(73),i(74),i(75),i(76),i(77),i(78),i(79),i(80),i(81),i(82),i(83),i(84),i(85),i(86),i(87),i(88);var n=i(2);SYNO.SDS.DateTimeUtils=function(){const t=["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"],e=[_T("common","pref_time_format_12")||"12-hour",_T("common","pref_time_format_24")||"24-hour"],i=[0,1].map((function(t){return n.c[t]+n.b[t]})),s=n.a[0],o=i[1],a={chs:n.a[0],cht:n.a[0],csy:n.a[4],dan:n.a[4],enu:n.a[7],fre:n.a[4],ger:n.a[5],hun:n.a[0],ita:n.a[4],jpn:n.a[0],krn:n.a[0],nld:n.a[3],nor:n.a[5],plk:n.a[5],ptb:n.a[4],ptg:n.a[4],rus:n.a[5],spn:n.a[4],sve:n.a[0],tha:n.a[4],trk:n.a[5]};return{SupportedDateFormats:n.a,SupportedTimeFormats:i,GetDateFormatByLang:function(t){return a[t]||s},GetTimeFormatByLang:function(t){return o},GetSystemDateFormat:function(){return _S("date_format")||s},GetSystemTimeFormat:function(){return _S("time_format")||o},CreateDateFormatArray(e){const i=SYNO.SDS.DateTimeUtils.SupportedDateFormats.map((function(e,i){return[e,t[i]]})),s=SYNO.SDS.DateTimeUtils.GetSystemDateFormat();return e&&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){const e=SYNO.SDS.DateTimeUtils.CreateDateFormatArray(t);return new Ext.data.ArrayStore({fields:["value","display"],autoDestroy:!0,data:e})},CreateTimeFormatArray:function(t){const i=SYNO.SDS.DateTimeUtils.SupportedTimeFormats.map((function(t,i){return[t,e[i]]})),s=SYNO.SDS.DateTimeUtils.GetSystemTimeFormat();return t&&Ext.each(i,(function(t){t[0]===s&&(t[1]=t[1]+" ("+_T("common","sys_default_setting")+")")})),i},CreateTimeFormatJsonOptions:function(t){return SYNO.SDS.DateTimeUtils.CreateTimeFormatArray(t).map((function(t){return{value:t[0],display:t[1]}}))},CreateTimeFormatStore:function(t){const 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(){let t=SYNO.SDS.UserSettings.getProperty("Personal","dateFormat");return t="system"===t?SYNO.SDS.DateTimeUtils.GetSystemDateFormat():t||SYNO.SDS.DateTimeUtils.GetSystemDateFormat(),t},GetTimeFormat:function(){let t=SYNO.SDS.UserSettings.getProperty("Personal","timeFormat");return t="system"===t?SYNO.SDS.DateTimeUtils.GetSystemTimeFormat():t||SYNO.SDS.DateTimeUtils.GetSystemTimeFormat(),t},GetTimePrefix:function(){return SYNO.SDS.DateTimeUtils.GetTimeFormat().indexOf(n.c[1])>-1?n.c[1]:n.c[0]},GetTimePostfix:function(){return SYNO.SDS.DateTimeUtils.GetTimeFormat().indexOf(n.c[1])>-1?n.b[1]:n.b[0]},GetDateTimeFormat:function(){return SYNO.SDS.DateTimeUtils.GetDateFormat()+" "+SYNO.SDS.DateTimeUtils.GetTimeFormat()},GetDateTimeSecFormat:function(){const t=SYNO.SDS.DateTimeUtils;return t.GetDateFormat()+" "+t.GetTimePrefix()+":s"+t.GetTimePostfix()},GetTimeSecFormat:function(){const t=SYNO.SDS.DateTimeUtils;return t.GetTimePrefix()+":s"+t.GetTimePostfix()},GetDateTimeSecMsFormat:function(){const t=SYNO.SDS.DateTimeUtils,e=t.GetTimePrefix(),i=t.GetTimePostfix();return t.GetDateFormat()+" "+e+":s.u"+i},GetTimeSecMsFormat:function(){const t=SYNO.SDS.DateTimeUtils;return t.GetTimePrefix()+":s.u"+t.GetTimePostfix()},ShowDiffDateOnlyDecorator:function(t,e){const 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){const 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"";
1let i,s=e&&e.type,n=SYNO.SDS.DateTimeUtils,o=e&&e.showDiffDateOnly,a=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)),a&&(i=n.ShowDiffYearOnlyDecorator(t,i)),t.format(i)};i(89);SYNO.namespace("SYNO.SDS.EnforceOTPWizard"),Ext.define("SYNO.SDS.EnforceOTPWizard",{extend:"SYNO.SDS.Wizard.ModalWindow",next_step:null,WIZRAD_HEIGHT:500,constructor:function(t){this.welcomeStep=new SYNO.SDS.EnforceOTPWizard.WelcomeStep({itemId:"welcome",nextId:"qrcode"}),this.qrcodeStep=new SYNO.SDS.EnforceOTPWizard.QRcodeStep({itemId:"qrcode",nextId:"authenticate"}),this.authStep=new SYNO.SDS.EnforceOTPWizard.AuthStep({itemId:"authenticate",nextId:"finish",isAdminGroup:t.isAdminGroup}),this.finishStep=new SYNO.SDS.EnforceOTPWizard.FinishStep({itemId:"finish",isLDAP:t.isLDAP,nextId:null});const e=[this.welcomeStep,this.qrcodeStep,this.authStep,this.finishStep];this.callParent([Ext.apply({title:_T("personal_settings","otp_wizard_title"),showHelp:!1,width:650,height:this.WIZRAD_HEIGHT,steps:e},t)])},onOpen:function(){this.setActiveStep("welcome"),this.getButton("cancel").hide(),this.callParent(arguments)},getEncryptedParams:function(t){t=Ext.apply({username:this.username,passwd:this.passwd},t);const e=SYNO.Encryption.EncryptParam(t);return e.client_time=Math.floor((new Date).getTime()/1e3),e},close:function(){this.finishStep.form.clearInvalid(),this.setStatusBusy({text:_T("common","loading")}),this.gotoDesktop()},gotoDesktop:function(){SYNO.SDS.initData()},markInvalid:function(t,e){t.markInvalid(),e&&(this.getMsgBox().alert(this.title,e),this.getMsgBox().getDialog().addClass("enforce-wizard-err-message-dialog"))},displayError:function(t){let e;e=t?_T(t.section,t.key):_T("error","error_error_system"),this.getMsgBox().alert(this.title,e),this.getMsgBox().getDialog().addClass("enforce-wizard-err-message-dialog")},setNextStep:function(t,e){0>this.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){const 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(){let t=this.owner.username;t=t.replace(/\\/g,"/");const e=this.owner.getEncryptedParams({action:"getQRcodePage",account:t+"@"+_S("hostname")}
1);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();const 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){const 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"),'(<a class="pathlink">'+_T("personal_settings","otp_enter_manually_link")+"</a>)"),listeners:{render:function(t){const e=t.el.first("a.pathlink");e&&this.mon(e,"click",this.launchEditDialog,this)},scope:this,single:!0,buffer:80}},{html:'<img id = "qrcode_img" src="" width="120" height="120" />',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||{});const 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(){let t=this.owner.username;t=t.replace(/\\/g,"/");const 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;let t=this.getForm().findField("account_name").getValue();t=t.replace(/\\/g,"/");const 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();const 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){const 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);
1SYNO.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;const 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();const 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){const 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){const 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(){const 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}});i(90),i(91),i(92),i(93);Ext.define("SYNO.ux.AriaComponent",{extend:"Ext.Component",disabled:!1,canInit:function(t){return!(!t||!0!==t.useARIA||this.disabled||t.isDestroyed)},disable:function(){this.callParent(arguments),this.clearMons(),this.uninitList=this.uninitList.concat(this.initList),this.initList=[]},enable:function(){let t,e;for(this.callParent(arguments),t=this.uninitList.length-1;t>=0;t--)e=this.uninitList[t],this.canInit(e)&&(this.uninitList.splice(t,1),this.initList.push(e),this.initializeItem(e))},bindEvent:function(t,e,i,s,n,o){s=s||this,t.mon?t.mon(t,e,i,s,n):o.mon?o.mon(t,e,i,s,n):(this.mon(t,e,i,s,n),t.ariaMons=t.ariaMons||[],t.ariaMons.push({item:t,evt:e,fn:i,opt:n,scope:s}),t.ariaMonned||(this.mon(t,"beforedestroy",(function e(){Ext.each(t.ariaMons,(function(i){this.mun(i.item,i.evt,i.fn,i.scope,i.opt),this.mun(t,"beforedestroy",e,this)}),this)}),this),t.ariaMonned=!0))},bindRenderEvent:function(t,e,i){this.bindConditionalEvent(t,"afterrender","rendered",e,i)},bindConditionalEvent:function(t,e,i,s,n){i&&t[i]?s.call(n,t):this.bindEvent(t,e,s,n)},findAndRemove:function(t,e){let i;return i=e.indexOf(t),i>=0&&e.splice(i,1),e},removeItem:function(t){this.initList=this.findAndRemove(t,this.initList),this.uninitList=this.findAndRemove(t,this.uninitList)},initializeItem:Ext.emptyFn,constructor:function(){this.uninitList=[],this.initList=[],this.callParent(arguments)},init:function(t){this.canInit(t)?(this.initList.push(t),this.initializeItem(t)):this.uninitList.push(t),this.bindEvent(t,"beforedestroy",this.removeItem.createDelegate(this,[t]))}}),Ext.define("SYNO.ux._ComponentARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onAfterRender,this)},onAfterRender:function(t){const e={};Ext.each(["tabIndex","tabindex","role","aria-label","disabled"],(function(i){t.hasOwnProperty(i)&&(e[i]=t[i])})),t.hasOwnProperty("aria-label")||!t.hasOwnProperty("tooltip")||Ext.isEmpty(t.tooltip)||(e["aria-label"]=t.tooltip),t.getAriaEl().setARIA(e),Ext.isFunction(t.initAriaProperties)&&t.initAriaProperties(),this.bindEvent(t,"disable",this.onDisable,this),this.bindEvent(t,"enable",this.onEnable,this)},onDisable:function(t){this.setDisabled(t,!0)},onEnable:function(t){this.setDisabled(t,!1)}
1,setDisabled:function(t,e){t.getAriaEl().setARIA({disabled:e})}}),Ext.define("SYNO.ux._ButtonARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onBtnAfterRender,this),this.bindEvent(t,"textchanged",this.onBtnTextChanged,this),this.bindEvent(t,"disable",this.onButtonDisabled.createDelegate(this,[t,!0])),this.bindEvent(t,"enable",this.onButtonDisabled.createDelegate(this,[t,!1]))},onBtnAfterRender:function(t){const e=t.arrowBtnEl||t.btnEl,i=t.text||t.tooltip,s={};i&&(s["aria-label"]=i),t.disabled&&(s["aria-disabled"]=!0,t.hideDisabledBtn&&(s.tabIndex=-1)),t.btnEl.set(s),t.menu&&(s["aria-expanded"]=!1,s["aria-haspopup"]=!0,s["aria-owns"]=t.menu.id,Ext.isDefined(t.tabIndex)&&(s.tabIndex=t.tabIndex),this.bindEvent(t,"menushow",this.onBtnExpanded.createDelegate(this,[t,!0])),this.bindEvent(t,"menuhide",this.onBtnExpanded.createDelegate(this,[t,!1]))),e.set(s)},onBtnTextChanged:function(t,e){t.el&&(t.btnEl.set({"aria-label":e}),t.arrowBtnEl&&t.arrowBtnEl.set({"aria-label":e}))},onBtnExpanded:function(t,e){if(!t.rendered)return;(t.arrowBtnEl||t.btnEl).set({"aria-expanded":e})},onButtonDisabled:function(t,e){const i=Ext.isDefined(t.tabIndex)?t.tabIndex:e?-1:0;t.rendered&&(t.hideDisabledBtn&&t.btnEl.set({tabIndex:i}),t.arrowBtnEl&&(t.arrowBtnEl.set({"aria-disabled":e}),t.hideDisabledBtn&&t.arrowBtnEl.set({tabIndex:i})))}}),Ext.define("SYNO.ux._ComboboxARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onAfterRender),this.bindConditionalEvent(t,"listInitialized","list",this.onListInitialized,this),this.bindEvent(t,"expand",this.onListExpand.createDelegate(this,[t,!0])),this.bindEvent(t,"collapse",this.onListExpand.createDelegate(this,[t,!1]))},onAfterRender:function(t){t.el.setRole("combobox").setARIAExpanded(!1).setARIAHasPopUp(!0)},onListInitialized:function(t){const e=t.list;t.el.setARIAOwns(t.list.id),e.setRole("listbox"),this.bindEvent(t.view,"selectionchange",this.onSelectedItemChanged.createDelegate(this,[t],!0),this,null,t)},onListExpand:function(t,e){t.el.setARIAExpanded(e)},onSelectedItemChanged:function(t,e,i){i.el.setARIAActiveDescendant(e.length>0&&e[0].id)}}),Ext.define("SYNO.ux._DataViewARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onViewRendered),this.bindEvent(t,"afterrender",this.onViewRendered,this),this.bindEvent(t,"selectionchange",this.onSelectionChanged,this)},onViewRendered:function(t){t.el.set({tabIndex:0,role:"listbox","aria-activedescendant":!1})},onSelectionChanged:function(t){const e=t.all.elements,i=t.getSelectedNodes(),s=i.length>0&&i[i.length-1].id;t.el.setARIAActiveDescendant(s),Ext.each(e,(function(t){Ext.fly(t).setARIASelected(!1)})),Ext.each(i,(function(t){Ext.fly(t).setARIASelected(!0)}))}}),Ext.define("SYNO.ux._GridPanelARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindConditionalEvent(t,"viewready","viewReady",this.onViewReady,this)},bindStoreUpdateEvt:function(t){let e,i=["datachange","add","remove","load","clear"];for(e=0;e<i.length;e++)this.bindEvent(t.store,i[e],this.updateCountHint.createDelegate(this,[t],this),this,null,t);this.bindEvent(t.store,"update",this.onRecordUpdate.createDelegate(this,[t],!0),this,{buffer:50},t)},onRecordUpdate:function(t,e,i,s){let n,o=s.getSelectionModel();Ext.isFunction(o.getColIdx)&&o.getSelected()&&(n=o.getActiveEl(),s.view.focusEl.setARIA({activedescendant:!!n&&n.id}))},addEmptyHint:function(t){t.view.cntHintEl||(t.view.cntHintEl=t.view.focusEl.createChild({tag:"div",id:Ext.id(),cls:"syno-ux-gridpanel-empty-hint",html:_JSLIBSTR("uicommon","empty_grid")}));let e=t.view.cntHintEl.id,i=t.view.focusEl.dom.getAttribute("aria-describedby")||"";i.indexOf(e)>=0||(i+=" "+e,t.view.focusEl.setARIA({describedby:i}))},onViewReady:function(t){const e=t.getView(),i=t.getSelectionModel();e.focusEl.set({role:"grid","aria-activedescendant":!1,"aria-readonly":!0,tabIndex:"0"}),this.addEmptyHint(t),this.bindEvent(i,"rowselect",this.onRowSelected,this,null,t),this.bindEvent(i,"rowdeselect",this.onRowDeselected,this,null,t),t.store&&this.bindStoreUpdateEvt(t),this.bindEvent(t,"reconfigure",this.bindStoreUpdateEvt.createDelegate(this,[t]))},updateCountHint:function(t){const e=t.store.getCount();t.view.cntHintEl&&t.view.cntHintEl.update(0===e?_JSLIBSTR("uicommon","empty_grid"):String.format(_JSLIBSTR("uicommon","grid_record_count")||"{0} records",e))}
1,setRowSelected:function(t,e,i){const s=t.grid.getView(),n=Ext.fly(s.getRow(e)),o=n?n.child("tr"):null;o&&(o.set({"aria-selected":i}),i&&s.focusEl.set({"aria-activedescendant":o.id}))},onRowSelected:function(t,e,i){this.setRowSelected(t,e,!0)},onRowDeselected:function(t,e,i){this.setRowSelected(t,e,!1)}}),Ext.define("SYNO.ux._MenuARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onCompAfterRender,this),this.bindEvent(t,"hide",this.onMenuHide,this),this.bindEvent(t,"itemclick",this.onItemClick,this),this.bindEvent(t,"beforeshow",this.onBeforeMenuShow,this),this.bindEvent(t,"itemactivate",this.onItemActivate,this),this.bindEvent(t,"itemdeactivate",this.onItemDeactivate,this)},onCompAfterRender:function(t){t.rendered&&(t.ul.set({role:"menu",tabIndex:0}),t.focusEl.dom.removeAttribute("href"),t.focusEl.on("focus",(function(){t.ul.focus()})))},onItemActivate:function(t,e){t.el.setARIASelected(!0)},onItemDeactivate:function(t,e){t.el.setARIASelected(!1)},onItemClick:function(t,e,i){if(!0===t.disableClearLastDom||t.menu)return;let s=t.parentMenu,n=s;for(;n.parentMenu;)n.parentMenu.lastDom=null,n=n.parentMenu;s.lastDom=null},onBeforeMenuShow:function(t){const e=document.activeElement;t.lastDom=e,t.getOpenPt&&(t.getOpenPt=null),t.getOpenPt=function(){return e}},onMenuHide:function(t){t.lastDom&&Ext.fly(t.lastDom).focus(300)}}),Ext.define("SYNO.ux._TreePanelARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onAfterRender,this),this.initializeRenderedNode(t),this.bindEvent(t,"noderendered",this.onNodeRender,this),this.bindEvent(t,"collapsenode",this.onNodeCollapse,this),this.bindEvent(t,"expandnode",this.onNodeExpand,this),this.bindEvent(t,"checkchange",this.onNodeCheckChange,this)},onAfterRender:function(t){const e=t.body;e.set({role:"tree",tabIndex:0}),t.ariaTreeEl=e,t.getSelectionModel().on("selectionchange",this.onNodeSelect,this),t.body.on("focus",this.onFocus.createDelegate(this,[t])),t.ariaTreeEl.addKeyListener(Ext.EventObject.SPACE,this.onKeySpace.createDelegate(this,[t]))},onFocus:function(t){document.activeElement!==t.getAriaEl().dom&&t.getAriaEl().focus()},onKeySpace:function(t){const e=t.getSelectionModel().getSelectedNode();e&&e.ui.toggleCheck()},initializeRenderedNode:function(t){let e,i,s=t.nodeHash;for(e in s)s.hasOwnProperty(e)&&(i=s[e],i.rendered&&this.onNodeRender(i,t))},onNodeRender:function(t,e){let i,s=t.ui.wrap,n=t.ui.ctNode,o=t,a=e.rootVisible?1:0;for(;o.parentNode;)a++,o=o.parentNode;i={role:"treeitem","aria-labelledby":Ext.id(t.ui.textNode),"aria-expanded":!t.isLeaf()&&t.isExpanded(),"aria-selected":!1,"aria-level":a},t.attributes.checked&&(i["aria-checked"]=t.attributes.checked),Ext.fly(s).set(i),t.isLeaf()||Ext.fly(n).set({role:"group"})},onNodeSelect:function(t,e){if(Ext.isEmpty(e))return;const i=t.tree;Ext.isObject(e)&&(e=[e]),Ext.fly(e[0].ui.wrap).set({"aria-selected":!0}),i.ariaTreeEl.set({"aria-activedescendant":Ext.id(e[0].ui.wrap)})},onNodeCollapse:function(t){Ext.fly(t.ui.wrap).set({"aria-expanded":!1})},onNodeExpand:function(t){Ext.fly(t.ui.wrap).set({"aria-expanded":!0})},onNodeCheckChange:function(t,e){const i=t.ui.wrap;Ext.fly(i).set({"aria-checked":e})}}),Ext.define("SYNO.ux._SliderARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onSliderRender,this)},onSliderRender:function(t){const e=this.onSliderDisabled.createDelegate(this,[t,!0]),i=this.onSliderDisabled.createDelegate(this,[t,!1]);t.getAriaEl().setARIA({label:t.title||"",tabindex:Ext.isDefined(t.tabindex)?t.tabindex:t.disabled?-1:0,role:"slider",readonly:"false",orientation:!0===t.vertical?"vertical":"horizontal",minvalue:t.minvalue||0,maxValue:t.maxValue||0,valuenow:t.value}),this.bindEvent(t,"change",this.onSliderValueChanged,this),this.bindEvent(t,"enable",i),this.bindEvent(t,"disable",e),this.bindEvent(t,"maxvaluechanged",this.onSliderMaxValueChanged),this.bindEvent(t,"minvaluechanged",this.onSliderMinValueChanged)},onSliderDisabled:function(t,e){const i=Ext.isDefined(t.tabindex)?t.tabindex:e?-1:0;t.getAriaEl().setARIA({tabindex:i})}
1,onSliderValueChanged:function(t,e,i){t.getAriaEl().setARIA({valuenow:e})},onSliderMinValueChanged:function(t,e){t.getAriaEl().setARIA({maxvalue:e})},onSliderMaxValueChanged:function(t,e){t.getAriaEl().setARIA({minvalue:e})}}),Ext.define("SYNO.ux._TabPanelARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.initializeRenderedTab(t),this.bindEvent(t,"deactivatetab",this.onDeactivateTab,this),this.bindEvent(t,"activatetab",this.onActivateTab,this),this.bindEvent(t,"inittab",this.onTabInited,this)},initializeRenderedTab:function(t){t.rendered&&Ext.each(t.items.items,(function(e,i){e.tabEl&&this.onTabInited(e.tabEl,t)}),this)},onDeactivateTab:function(t){this.setTabActivate(t,!1)},onActivateTab:function(t){this.setTabActivate(t,!0)},setTabActivate:function(t,e){const i=e?0:-1;Ext.fly(t).set({"aria-selected":e,"aria-expanded":e}),Ext.fly(t).down(".x-tab-right").set({tabIndex:i})},onTabInited:function(t,e){new Ext.KeyNav(t,{right:e.selectNextTab,left:e.selectPreTab,down:e.selectNextTab,up:e.selectPreTab,scope:e})}}),Ext.define("SYNO.ux._CheckboxARIA",{extend:"SYNO.ux.AriaComponent",initializeItem:function(t){this.bindRenderEvent(t,this.onAfterRender,this),this.bindEvent(t,"check",this.onCheck,this)},onCheck:function(t,e){t.rendered&&t.el.set({"aria-checked":e})},onAfterRender:function(t){const e=t.el.id+"-label-el",i={checked:t.checked,invalid:!1};t["aria-label"]?i.label=t["aria-label"]:i.labelledby=e,t.el.setARIA(i)}});let o=!1;const a=["Component","Button","Combobox","DataView","GridPanel","Menu","TreePanel","Slider","TabPanel","Checkbox"];Ext.onReady((function(){!function(){if(o)return;let t;for(Ext.ns("SYNO.ux"),t=0;t<a.length;t++){const e=a[t],i=String.format("SYNO.ux._{0}ARIA",e),s=String.format("{0}ARIA",e),n=Ext.getClassByName(i);SYNO.ux[s]=new n}Ext.override(Ext.Component,{useARIA:!0,initComponent:function(){if(!0===this.useARIA){const t=this.addPlugins(SYNO.ux.ComponentARIA,this);this.plugins=t.plugins}this.listeners&&(this.on(this.listeners),delete this.listeners),this.enableBubble(this.bubbleEvents)}}),o=!0}()}));i(94);SYNO.ns("SYNO.SDS.Extjs"),SYNO.SDS.Extjs.InitUtils={reloadVTypes:function(){return Ext.form.VTypes.reloadVtypeStr(),this},initQuickTips:function(){return Ext.QuickTips.init(),this},initDragDrop:function(){return Ext.dd.DragDropMgr.stopPropagation=!1,Ext.dd.DragDropMgr.clickTimeThresh=-1,Ext.WindowMgr.zseed=12e3,this},initAccesibilityPlugin:function(){var t,e;return function(t){if(!o)return;let e,i=t?"disable":"enable";for(e=0;e<a.length;e++)SYNO.ux[a[e]+"ARIA"][i]()}(null!==(t=null===(e=SYNO.SDS.UserSettings)||void 0===e?void 0:e.getProperty("Desktop","disableAccessibility"))&&void 0!==t&&t),this}},SYNO.SDS.Extjs.InitUtils.reloadVTypes().initQuickTips().initDragDrop().initAccesibilityPlugin()}])}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.