Files
yunkong2.admin/www/js/app.js
2018-09-14 21:27:03 +08:00

3 lines
529 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";Array.prototype.remove=function(){for(var e,t,a=arguments,i=a.length;i&&this.length;)for(e=a[--i];-1!==(t=this.indexOf(e));)this.splice(t,1);return this},console.debug||(console.debug=console.log),"undefined"==typeof Number&&(console.log("define Number"),Number=function(e){return parseFloat(e)}),Object.assign||(Object.assign=$.extend);var $iframeDialog=null,configNotSaved=null,showConfig=null,defaults={},customPostInits={},FORBIDDEN_CHARS=/[\]\[*,;'"`<>\\\s?]/g,adapterRedirect=function(e,t){e&&setTimeout(function(){e+=document.location.pathname,e+=document.location.hash,document.location.href=e},t||5e3)},gMain=null;function detectIE(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(0<t)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(0<e.indexOf("Trident/")){var a=e.indexOf("rv:");return parseInt(e.substring(a+3,e.indexOf(".",a)),10)}var i=e.indexOf("Edge/");return 0<i&&parseInt(e.substring(i+5,e.indexOf(".",i)),10)}function Adapters(e){var H=this;function t(){H.$grid.show(),H.$tiles.html("").hide(),H.$tab.find("#main-toolbar-table-types-btn").hide(),H.$grid.data("inited")?(H.$tab.find("#btn_collapse_adapters").show(),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_list_adapters").show()):(H.$grid.data("inited",!0),H.$grid.fancytree({extensions:["table","gridnav","filter","themeroller"],checkbox:!1,strings:{noData:_("No data")},table:{indentation:5},show:function(e,t,a){H.sortTree()},source:H.tree,renderColumns:function(e,t){var a=t.node,i=$(a.tr).find(">td"),n=H.data[a.key];function s(e){return'<div class="text-ellipsis">'+e+"</div>"}if(n){i.eq(0).css({overflow:"hidden","white-space":"nowrap"});var o=n.desc.indexOf("<div"),r=0<=o?n.desc.substr(0,o):n.desc;i.eq(1).html(s(n.desc)).attr("title",r).css({"white-space":"nowrap",position:"relative","font-weight":n.bold?"bold":null}).find(">div>div").css("height: 22px !important"),u(2,n.keywords).attr("title",n.keywords),i.eq(3).html(n.installed),i.eq(4).html(n.version),u(5,n.license),u(6,n.install),H.initButtons(a.key),H.isCollapsed[n.group]&&(H.isCollapsed[n.group]=!1,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}else{i.eq(0).css({"font-weight":"bold"}),i.eq(0).find("img").remove(),i.eq(0).find("span.fancytree-title").attr("style","padding-left: 0px !important");for(var l=0;l<H.tree.length;l++)if(H.tree[l].key===a.key){i.eq(1).html(H.tree[l].desc||"").css({overflow:"hidden","white-space":"nowrap",position:"relative"});for(var d=0,c=0;c<H.tree[l].children.length;c++)H.data[H.tree[l].children[c].key].installed&&d++;H.tree[l].installed=d,a.data.installed=d,'[<span title="'+_("Installed from group")+'">'+d+'</span> / <span title="'+_("Total count in group")+'">'+H.tree[l].children.length+"</span>]",i.eq(1).html(s('<span class="dark-green">'+d+"</span> "+_("of")+'<span class="dark-blue"> '+H.tree[l].children.length+"</span> "+_("Adapters from this Group installed")));break}}function u(e,t){return i.eq(e).html(s(t))}},gridnav:{autofocusInput:!1,handleCursorKeys:!0},filter:{mode:"hide",autoApply:!0},collapse:function(e,t){H.isCollapsed[t.node.key]||(H.isCollapsed[t.node.key]=!0,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}}),H.$tab.find("#btn_collapse_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!1)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_expand_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!0)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_list_adapters").show().off("click").on("click",function(){var e=H.$tab.find(".process-adapters");e.show(),H.isList=!H.isList,H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),$(this).attr("title",_("list"))):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show(),$(this).attr("title",_("tree"))),H.main.saveConfig("adaptersIsList",H.isList),e.show(),setTimeout(function(){H._postInit(!0),e.hide()},200)})),H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3").attr("title",_("tree")),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide()):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3").attr("title",_("list")),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show()),H.$tab.find(".filter-input").trigger("change")}function a(){H.$grid.hide(),H.$tiles.show(),H.$tab.find("#main-toolbar-table-types-btn").show(),H.$tab.find("#btn_list_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find(".filter-input").trigger("change")}function i(){H.onlyUpdatable?(H.$tab.find("#btn_filter_updates").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_upgrade_all").hide(),H.$tab.find("#btn_filter_updates").removeClass("red lighten-3"))}function n(){H.main.config.expertMode?(H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_adapters_expert_mode").removeClass("red lighten-3"),i())}function Q(){var t=!1;H.currentFilter?H.$tiles.find(".tile").each(function(){var e=$(this);(!H.currentType||e.hasClass("class-"+H.currentType))&&B({key:e.data("id")})?(t=!0,e.show()):e.hide()}):H.currentType?(H.$tiles.find(".tile").hide(),H.$tiles.find(".class-"+H.currentType).show(),H.$tiles.find(".tile").each(function(){if($(this).is(":visible"))return!(t=!0)})):H.$tiles.find(".tile").show().each(function(){if($(this).is(":visible"))return!(t=!0)}),t?H.$tiles.find(".filtered-out").hide():H.$tiles.find(".filtered-out").show()}function B(e){if(H.currentFilter){if(!H.data[e.key])return!1;var t=H.data[e.key].title;t&&"object"==typeof t&&(t=t[systemLang]||t.en);var a=H.data[e.key].desc;return a&&"object"==typeof a&&(a=a[systemLang]||a.en),!!(H.data[e.key].name&&-1!==H.data[e.key].name.toLowerCase().indexOf(H.currentFilter)||t&&-1!==t.toLowerCase().indexOf(H.currentFilter)||H.data[e.key].keywords&&-1!==H.data[e.key].keywords.toLowerCase().indexOf(H.currentFilter)||a&&-1!==a.toLowerCase().indexOf(H.currentFilter))}return!0}function F(e,t){var a="";if(t.news)for(var i in t.news)if(t.news.hasOwnProperty(i)){if(systemLang===i&&(a+=(a?"\n":"")+t.news[i]),"en"===i||"ru"===i||"de"===i)continue;if(i===e)break;a+=(a?"\n":"")+(t.news[i][systemLang]||t.news[i].en)}return a}function Z(e){if(!e)return"";var t;if(e instanceof Array){t={};for(var a=0;a<e.length;a++)if("string"!=typeof e[a])for(var i in e[a])e[a].hasOwnProperty(i)&&(t[i]=e[a][i])}else t=e;for(var n in t)if(t.hasOwnProperty(n))if("js-controller"===n){if(!semver.satisfies(H.main.objects["system.host."+H.main.currentHost].common.installedVersion,t[n]))return _("Invalid version of %s. Required %s",n,t[n])}else{if(!H.main.objects["system.adapter."+n]||!H.main.objects["system.adapter."+n].common||!H.main.objects["system.adapter."+n].common.installedVersion)return _("No version of %s",n);if(!semver.satisfies(H.main.objects["system.adapter."+n].common.installedVersion,t[n]))return _("Invalid version of %s",n)}return""}function W(e,t,a,i,n,s,o){if(o=o||Date.now(),!e)return"";"string"!=typeof e&&"number"!=typeof e||(e=new Date(e));var r=o.getTime()-e.getTime(),l=Math.floor(r/864e5);if(0===l)return o.getDate()===e.getDate()?t:a;if(1===l)return o.getDate()-e.getDate()==1?a:n.replace("%d",l+1);var d=l%10,c=l%100;return(c<10||20<c)&&2<=d&&d<=4?n.replace("%d",l):(c<10||20<c)&&1===d?i.replace("%d",l):s.replace("%d",l)}function V(e,t,a){var i="";return t||"string"==typeof e?(t||(i+='<div class="group-upload-progress"'),!0):(a=e,e=null),a&&(i+='<table style="height: 3px; " title="'+_("Upload")+" "+a+'%" class="no-space" style="width:100%; height: 100%; opacity: 0.7"><tr style="height: 100%" class="no-space"><td class="no-space" style="width:'+a+'%;background: blue"></td><td style="width:'+(100-a)+'%;opacity: 0.1" class="no-space"></td></tr></table>'),i}this.curRepository=null,this.curRepoLastUpdate=null,this.curInstalled=null,this.curRepoLastHost=null,this.list=[],this.$tab=$("#tab-adapters"),this.$grid=this.$tab.find("#grid-adapters"),this.$tiles=this.$tab.find("#grid-adapters-tiles"),this.$installDialog=$("#dialog-install-url"),this.main=e,this.tree=[],this.data={},this.urls={},this.groupImages={"common adapters_group":"img/common.png",general_group:"img/common.png",hardware_group:"img/hardware.png",lighting_group:"img/hardware.png",energy_group:"img/hardware.png",household_group:"img/hardware.png","iot-systems_group":"img/hardware.png","climate-control_group":"img/hardware.png",infrastructure_group:"img/hardware.png",garden_group:"img/hardware.png",alarm_group:"img/hardware.png",script_group:"img/script.png",logic_group:"img/script.png",media_group:"img/media.png",multimedia_group:"img/media.png",communication_group:"img/communication.png",protocols_group:"img/communication.png",network_group:"img/communication.png",messaging_group:"img/communication.png",visualisation_group:"img/visualisation.png",visualization_group:"img/visualisation.png","visualization-icons_group":"img/visualisation.png","visualization-widgets_group":"img/visualisation.png",storage_group:"img/storage.png",weather_group:"img/weather.png",schedule_group:"img/schedule.png",vis_group:"img/vis.png","date-and-time_group":"img/service.png",geoposition_group:"img/service.png",utility_group:"img/service.png","misc-data_group":"img/service.png",service_group:"img/service.png","third-party_group":"img/service.png"},this.inited=!1,this.isList=!1,this.filterVals={length:0},this.onlyInstalled=!1,this.onlyUpdatable=!1,this.currentFilter="",this.currentType="",this.isCollapsed={},this.isTiles=!0,this.types={occ:"schedule"},this.prepare=function(){this.$tab.find("#btn_switch_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.isTiles=!H.isTiles,H.isTiles?(H.$tab.removeClass("view-table").addClass("view-tiles"),$(this).find("i").text("view_list")):($(this).find("i").text("view_module"),H.$tab.removeClass("view-tiles").addClass("view-table")),H.main.saveConfig("adaptersIsTiles",H.isTiles),setTimeout(function(){H.isTiles?a():t(),H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyInstalled=!H.onlyInstalled,H.onlyInstalled?H.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):H.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),H.main.saveConfig("adaptersOnlyInstalled",H.onlyInstalled),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_updates").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyUpdatable=!H.onlyUpdatable,i(),H.main.saveConfig("adaptersOnlyUpdatable",H.onlyUpdatable),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},200)}),this.$tab.find("#btn_filter_custom_url").off("click").on("click",function(){var e,t='<option value="">'+_("none")+"</option>",a=[];for(e in H.urls)H.urls.hasOwnProperty(e)&&a.push(e);a.sort();for(var i=0;i<a.length;i++){var n=H.urls[a[i]].match(/\.com\/([-_$§A-Za-z0-9]+)\/([-._$§A-Za-z0-9]+)\//);n&&2<=n.length&&(H.main.config.expertMode||-1===a[i].indexOf("js-controller"))&&(t+='<option value="https://github.com/'+n[1]+"/yunkong2."+a[i]+"/tarball/master "+a[i]+'">'+a[i]+"</option>")}H.$installDialog.find("#install-github-link").html(t).val(H.main.config.adaptersGithub||""),H.$installDialog.modal(),H.$installDialog.find(".btn-install").off("click").on("click",function(){var e,t,a;if(!H.$installDialog.find('a[href="#tabs-install-github"]').hasClass("active"))e=H.$installDialog.find("#install-url-link").val(),t=H.$installDialog.find("#install-url-debug").prop("checked")?" --debug":"",a="";else{var i=H.$installDialog.find("#install-github-link").val().split(" ");e=i[0],t=H.$installDialog.find("#install-github-debug").prop("checked")?" --debug":"",a=" "+i[1]}e?H.main.cmdExec(null,'url "'+e+'"'+a+t,function(e){e||H.init(!0,!0)}):H.main.showError(_("Invalid link"))}),H.$installDialog.find("#install-github-link").select(),H.$installDialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),H.$installDialog.modal("open"),H.$installDialog.find(".tabs").mtabs({nShow:function(e){e&&H.main.saveConfig("adaptersInstallTab",$(e).attr("id"))}}),H.main.config.adaptersInstallTab&&!H.main.noSelect&&H.$installDialog.find(".tabs").mtabs("select",H.main.config.adaptersInstallTab)}),this.$tab.find("#btn_upgrade_all").off("click").on("click",function(){H.main.confirmMessage(_("Do you want to upgrade all adapters?"),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"upgrade",function(e){e||H._postInit(!0)})})}),this.$tab.find("#btn_adapters_expert_mode").on("click",function(){H.main.config.expertMode=!H.main.config.expertMode,H.main.saveConfig("expertMode",H.main.config.expertMode),H.updateExpertMode(),H.main.tabs.instances.updateExpertMode()}),H.main.config.expertMode&&H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),this.$installDialog.find("#install-github-link").on("change",function(){H.main.saveConfig("adaptersGithub",$(this).val())}),this.$installDialog.find("#install-url-link").on("keyup",function(e){13===e.which&&H.$installDialog.find("#dialog-install-url-button").trigger("click")}),this.isTiles=void 0===this.main.config.adaptersIsTiles||null===this.main.config.adaptersIsTiles||this.main.config.adaptersIsTiles,this.isList=this.main.config.adaptersIsList||!1,this.onlyInstalled=this.main.config.adaptersOnlyInstalled||!1,this.onlyUpdatable=this.main.config.adaptersOnlyUpdatable||!1,this.currentFilter=this.main.config.adaptersCurrentFilter||"",this.currentType=this.main.config.adaptersCurrentType||"",this.currentOrder=this.main.config.adaptersCurrentOrder||"a-z",this.isCollapsed=this.main.config.adaptersIsCollapsed?JSON.parse(this.main.config.adaptersIsCollapsed):{},this.currentFilter?(this.$tab.find(".filter-input").addClass("input-not-empty").val(H.currentFilter),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.onlyInstalled?this.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):this.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),this.onlyUpdatable?this.$tab.find("#btn_filter_updates").addClass("red lighten-3"):this.$tab.find("#btn_filter_updates").removeClass("red lighten-3"),"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find("#btn_switch_adapters").hide()),n(),this.$tab.find("#btn_refresh_adapters").on("click",function(){H.init(!0,!0)}),this.$tab.find(".filter-input").on("keyup",function(){$(this).trigger("change")}).on("change",function(e){H.filterTimer&&clearTimeout(H.filterTimer),H.filterTimer=setTimeout(function(){H.filterTimer=null,H.currentFilter=H.$tab.find(".filter-input").val().toLowerCase(),e&&e.target&&$(e.target)[H.currentFilter?"addClass":"removeClass"]("input-not-empty"),H.currentFilter?H.$tab.find(".filter-clear").show():H.$tab.find(".filter-clear").hide(),H.main.saveConfig("adaptersCurrentFilter",H.currentFilter),H.isTiles?Q():H.$grid.fancytree("getTree").filterNodes(B,!1)},400)}),this.$tab.find(".filter-clear").on("click",function(){H.$tab.find(".filter-input").val("").trigger("change")}),this.isTiles?(this.$tab.find("#btn_switch_adapters").find("i").text("view_list"),H.$tab.removeClass("view-table").addClass("view-tiles"),a()):(H.$tab.removeClass("view-tiles").addClass("view-table"),t())},this.updateExpertMode=function(){this.init(!0),n()},this.getAdaptersInfo=function(e,t,a,i){if(e){if(!i)throw"Callback cannot be null or undefined";t&&(!this.curRepoLastUpdate||1e3<(new Date).getTime()-this.curRepoLastUpdate)&&(this.curRepository=null,this.curInstalled=null),this.curRunning?this.curRunning.push(i):(this.curRepository&&this.curRepoLastHost===e||(this.curRepository=null,this.main.socket.emit("sendToHost",e,"getRepository",{repo:this.main.systemConfig.common.activeRepo,update:a},function(e){"permissionError"===e&&(console.error('May not read "getRepository"'),e={}),H.curRepository=e||{},H.curRepository&&H.curInstalled&&H.curRunning&&(H.curRepoLastUpdate=(new Date).getTime(),setTimeout(function(){for(var e=0;e<H.curRunning.length;e++)H.curRunning[e](H.curRepository,H.curInstalled);H.curRunning=null},0))})),this.curInstalled&&this.curRepoLastHost===e||(this.curInstalled=null,this.main.socket.emit("sendToHost",e,"getInstalled",null,function(e){"permissionError"===e&&(console.error('May not read "getInstalled"'),e={}),H.curInstalled=e||{},H.curRepository&&H.curInstalled&&(H.curRepoLastUpdate=(new Date).getTime(),setTimeout(function(){for(var e=0;e<H.curRunning.length;e++)H.curRunning[e](H.curRepository,H.curInstalled);H.curRunning=null},0))})),this.curRepoLastHost=e,this.curInstalled&&this.curRepository?setTimeout(function(){if(H.curRunning){for(var e=0;e<H.curRunning.length;e++)H.curRunning[e](H.curRepository,H.curInstalled);H.curRunning=null}i&&i(H.curRepository,H.curInstalled)},0):this.curRunning=[i])}},this.enableColResize=function(){$.fn.colResizable&&this.$grid.is(":visible")&&this.$grid.colResizable({liveDrag:!0})},this.sortTree=function(){H.$grid.fancytree("getRootNode").sortChildren(function(e,t){var a=e.data.installed||0,i=(t.data.installed||0)-a;if(i)return i;var n=e.titleLang||e.title||"";"object"==typeof n&&(n=n[systemLang]||n.en);var s=t.titleLang||t.title||"";return"object"==typeof s&&(s=s[systemLang]||s.en),n=n.toLowerCase(),(s=s.toLowerCase())<n?1:n<s?-1:0},!0)},this._postInit=function(e,t){void 0!==this.$grid?(H.$tab.find(".process-adapters").show(),this.$grid.find("tbody").html(""),this.getAdaptersInfo(this.main.currentHost,e,t,function(e,t){var a,i,n,o,s=0,r=[],l=[],d=new Date,c={"add instance":_("add instance"),update:_("update"),upload:_("upload"),"Available version:":_("Available version:"),"Active instances":_("Active instances"),"Installed version":_("Installed version"),readme:_("readme"),"delete adapter":_("delete adapter"),"install specific version":_("install specific version"),all:_("all"),"Last update":_("Last update"),"Installations counter":_("Installation counter"),today:_("today"),yesterday:_("yesterday"),"1 %d days ago":_("1 %d days ago"),"2 %d days ago":_("2 %d days ago"),"5 %d days ago":_("5 %d days ago")};if(t){for(o in t)t.hasOwnProperty(o)&&(a=t[o])&&!a.controller&&"hosts"!==o&&r.push(o);r.sort()}for(o in H.urls={},e)e.hasOwnProperty(o)&&(t&&t[o]&&!t[o].versionDate&&(t[o].versionDate=e[o].versionDate),e[o].nogit||(H.urls[o]=e[o].meta),(a=e[o])&&!a.controller&&(i="",t&&t[o]||l.push(o)));function u(e,t,a,i){var n=function(e){if(e){var t=e.split(".");e="0"===t[0]&&"0"===t[1]&&"0"===t[2]?"planned":"0"===t[0]&&"0"===t[1]?"alpha":"0"===t[0]?"beta":"npm error"===e?"error":"stable"}return e}(e),s=n+"\n\r"+(a||"");return e='<table style="cursor: alias; width: 100%; text-align: center; border: 0; border-spacing: 0;'+(a?"color: blue;":"")+'" cellspacing="0" cellpadding="0" class="ui-widget"><tr class="'+n+'Bg"><td title="'+c["Available version:"]+" "+s+'" class="actual-version">'+e+'</td><td style="border: 0; padding: 0; width: 30px" class="update-version">',t&&(e+='<button class="adapter-update-submit small-button m" data-adapter-name="'+o+'" '+(i?' disabled title="'+i+'"':'title="'+c.update+'"')+'><i class="material-icons">refresh</i></button>'),e+="</td></tr></table>"}l.sort(),H.tree=[],H.data={};for(var p=0;p<r.length;p++)if(o=r[p],(a=t?t[o]:null)&&!a.controller&&"hosts"!==o){var m="",g="",f=a.icon;i="",e[o]&&e[o].version&&(i=e[o].version),e[o]&&e[o].extIcon&&(f=e[o].extIcon);var h=0,b=0;if(a.version){var y="",M=!1,v="";H.main.upToDate(i,a.version)||(y=F(a.version,e[o]),M=!0,v=Z(e[o].dependencies),s++),m='<table style="min-width: 80px; text-align: center; border: 0; border-spacing: 0;" cellspacing="0" cellpadding="0" class="ui-widget"><tr>';for(var w=0;w<H.main.instances.length;w++)H.main.objects[H.main.instances[w]]&&H.main.objects[H.main.instances[w]].common.name===o&&(h++,H.main.objects[H.main.instances[w]].common.enabled&&b++);if(h?(m+='<td style="border: 0; text-align: center; padding: 0; width: 40px">',b!==h&&(m+='<span title="'+_("Installed instances")+'">'+h+"</span>",b&&(m+=" ~ ")),b&&(m+='<span title="'+c["Active instances"]+'" class="true">'+b+"</span>"),m+="</td>"):m+='<td style="border: 0; padding: 0; width: 40px"></td>',m+='<td style="border: 0; padding: 0; width: 50px" title="'+c["Installed version"]+'">'+a.version+"</td>",g='<span class="installed" title="'+c["Installed version"]+'">'+a.version+"</span>",m+="</tr></table>",!M&&H.onlyUpdatable)continue}i=u(n=i,M,y,v);var j=(a.type||H.types[o]||"common adapters")+"_group";C=(C="object"==typeof a.desc?a.desc[systemLang]||a.desc.en:a.desc)||"",C+=V(j,o,H.main.states["system.adapter."+o+".upload"]?H.main.states["system.adapter."+o+".upload"].val:0);var N=a.titleLang||a.title;if(N="object"==typeof N?N[systemLang]||N.en:N,H.data[o]={image:f?'<img onerror="this.src=\'img/info-big.png\';" src="'+f+'" class="adapter-table-icon" />':"",icon:f||"",stat:e[o]?e[o].stat:0,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,news:y,updatableError:v,keywords:a.keywords?a.keywords.join(" "):"",version:i,installed:m,rawVersion:n,instances:h,rawInstalled:g,versionDate:a.versionDate,updatable:M,bold:a.highlight||!1,install:'<button data-adapter-name="'+o+'" class="adapter-install-submit small-button m" title="'+c["add instance"]+'" data-adapter-desc="'+C+'"><i class="material-icons">add_circle_outline</i></button><button '+(a.readme?"":'disabled="disabled" ')+'data-adapter-name="'+o+'" data-adapter-url="'+(a.readme||"")+'" class="adapter-readme-submit small-button" title="'+c.readme+'"><i class="material-icons">help_outline</i></button>'+(H.main.config.expertMode?'<button data-adapter-name="'+o+'" class="adapter-upload-submit small-button" title="'+c.upload+'"><i class="material-icons">file_upload</i></button>':"")+"<button "+(m?"":'disabled="disabled" ')+'data-adapter-name="'+o+'" class="adapter-delete-submit small-button" title="'+c["delete adapter"]+'"><i class="material-icons">delete_forever</i></button>'+(H.main.config.expertMode?'<button data-adapter-name="'+o+'" data-target="adapters-menu" class="adapter-update-custom-submit small-button" title="'+c["install specific version"]+'"><i class="material-icons">add_to_photos</i></button>':""),group:j,license:a.license||"",licenseUrl:a.licenseUrl||""},a.type||console.log('"'+o+'": "common adapters",'),a.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:f,title:H.data[o].title||o,key:o});else{for(var L=-1,T=0;T<H.tree.length;T++)if(H.tree[T].key===H.data[o].group){L=T;break}L<0&&(c[H.data[o].group]||(c[H.data[o].group]=_(H.data[o].group)),H.tree.push({title:c[H.data[o].group],desc:V(j),key:H.data[o].group,folder:!0,expanded:!H.isCollapsed[H.data[o].group],children:[],icon:H.groupImages[H.data[o].group]}),L=H.tree.length-1),H.tree[L].children.push({icon:f,title:H.data[o].title||o,key:o})}}if(!H.onlyInstalled&&!H.onlyUpdatable)for(p=0;p<l.length;p++)if((a=e[o=l[p]])&&!a.controller&&(i="",!t||!t[o])){a&&a.version&&(i=u(n=i=a.version));var C;j=(a.type||H.types[o]||"common adapters")+"_group";if(C=(C="object"==typeof a.desc?a.desc[systemLang]||a.desc.en:a.desc)||"",C+=V(j,o,H.main.states["system.adapter."+o+".upload"]?H.main.states["system.adapter."+o+".upload"].val:0),N="object"==typeof(N=a.titleLang||a.title)?N[systemLang]||N.en:N,H.data[o]={image:a.extIcon?'<img onerror="this.src=\'img/info-big.png\';" src="'+a.extIcon+'" class="adapter-table-icon" />':"",icon:a.extIcon,stat:a.stat,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,keywords:a.keywords?a.keywords.join(" "):"",rawVersion:n,version:i,bold:a.highlight,installed:"",versionDate:a.versionDate,install:'<button data-adapter-name="'+o+'" class="adapter-install-submit small-button" title="'+c["add instance"]+'" data-adapter-desc="'+C+'"><i class="material-icons">add_circle_outline</i></button><button '+(a.readme?"":'disabled="disabled" ')+' data-adapter-name="'+o+'" data-adapter-url="'+(a.readme||"")+'" class="adapter-readme-submit small-button" title="'+c.readme+'"><i class="material-icons">help_outline</i></button><button data-adapter-name="'+o+'" class="adapter-delete-submit small-button hide" title="'+c["delete adapter"]+'"><i class="material-icons">delete_forever</i></button>'+(H.main.config.expertMode?'<button data-adapter-name="'+o+'" data-target="adapters-menu" class="adapter-update-custom-submit small-button" title="'+c["install specific version"]+'"><i class="material-icons">add_to_photos</i></button>':""),license:a.license||"",licenseUrl:a.licenseUrl||"",group:j},a.type||console.log('"'+o+'": "common adapters",'),a.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:a.extIcon,title:H.data[o].title||o,key:o});else{for(var k=-1,D=0;D<H.tree.length;D++)if(H.tree[D].key===H.data[o].group){k=D;break}k<0&&(c[H.data[o].group]||(c[H.data[o].group]=_(H.data[o].group)),H.tree.push({title:c[H.data[o].group],key:H.data[o].group,folder:!0,expanded:!H.isCollapsed[H.data[o].group],children:[],icon:H.groupImages[H.data[o].group]}),k=H.tree.length-1),H.tree[k].children.push({title:H.data[o].title||o,icon:a.extIcon,desc:V(j),key:o})}}if("popular"===H.currentOrder||"updated"===H.currentOrder){var z=Object.keys(H.data);"popular"===H.currentOrder?z.sort(function(e,t){return H.data[e].stat>H.data[t].stat?-1:H.data[e].stat<H.data[t].stat?1:0}):"updated"===H.currentOrder&&z.sort(function(e,t){return H.data[e].versionDate&&!H.data[t].versionDate?-1:!H.data[e].versionDate&&H.data[t].versionDate?1:H.data[e].versionDate>H.data[t].versionDate?-1:H.data[e].versionDate<H.data[t].versionDate?1:t<e?-1:e<t?1:0});for(var I={},A=0;A<z.length;A++)I[z[A]]=H.data[z[A]];H.data=I}if(H.isTiles&&("ie"!==H.main.browser||10<H.main.browserVersion)){var S="",E=[];for(var O in H.data)if(H.data.hasOwnProperty(O)){var x=H.data[O];-1===E.indexOf(x.group)&&E.push(x.group),S+='<div class="col s12 m6 l4 xl3 tile class-'+x.group+'" data-id="'+x.name+'">',S+=' <div class="card hoverable card-adapters">',S+=' <div class="card-header '+(x.updatable?"updatable":x.installed?"installed":"")+'"></div>',S+=' <div class="card-content">',S+=' <img onerror="this.src=\'img/info-big.png\';" class="card-profile-image" src="'+x.icon+'">',S+=' <span class="card-title grey-text text-darken-4">'+x.title+"</span>",S+=' <a title="info" class="btn-floating activator btnUp blue lighten-2 z-depth-3"><i class="material-icons">more_vert</i></a>',S+=' <ul class="ver">',S+=" <li>"+c["Available version:"]+' <span class="data '+(x.updatable?"updatable":"")+'" '+(x.news?' title="'+x.news+'"':"")+">"+x.rawVersion+"</span>"+(x.updatable?'<button class="adapter-update-submit small-button" data-adapter-name="'+O+'" '+(v?' disabled title="'+x.updatableError+'"':'title="'+c.update+'"')+'><i class="material-icons">refresh</i></button>':"")+"</li>",x.installed&&(S+=" <li>"+c["Installed version"]+': <span class="data">'+x.rawInstalled+"</span></li>"),x.instances&&(S+=" <li>"+_("Installed instances")+': <span class="data">'+x.instances+"</span></li>"),S+=" </ul>",S+=" </div>",S+=' <div class="footer right-align"></div>',S+=' <div class="card-reveal">',S+=' <i class="card-title material-icons right">close</i>',S+=" <p>"+x.desc+"</p>",S+=' <div class="card-reveal-buttons">',S+=x.install,S+=" </div>",S+=" </div>","popular"===H.currentOrder&&x.stat?S+=' <div class="stat" title="'+c["Installations counter"]+'">'+x.stat+"</div>":"updated"===H.currentOrder&&x.versionDate&&(S+=' <div class="last-update" title="'+c["Last update"]+'">'+W(x.versionDate,c.today,c.yesterday,c["1 %d days ago"],c["2 %d days ago"],c["5 %d days ago"],d)+"</div>"),S+=" </div>",S+="</div>"}for(var P in S+='<div class="col s12 m6 l4 xl3 filtered-out">',S+=' <div class="card hoverable card-adapters">',S+=' <div class="card-header"></div>',S+=' <div class="card-content">',S+=' <span class="card-title grey-text text-darken-4">'+_("Filtered out")+"</span>",S+=" </div>",S+=' <div class="footer right-align"></div>',S+=" </div>",S+="</div>",H.$tiles.html(S),H.data)H.data.hasOwnProperty(P)&&H.initButtons(P);for(var R='<li class="main-toolbar-table-types-item" data-type=""><a>'+c.all+"</a></li>\n",U=0;U<E.length;U++)R+='<li class="main-toolbar-table-types-item" data-type="'+E[U]+'"><a>'+_(E[U])+"</a></li>\n";var G=H.$tab.find("#main-toolbar-table-types");G.html(R),G.find(".main-toolbar-table-types-item").show().off("click").on("click",function(){H.currentType=$(this).data("type")||"",Q(),H.$tab.find("#main-toolbar-table-types-btn").html(_(H.currentType||"all")),H.main.saveConfig("adaptersCurrentType",H.currentType)}),H.currentType&&!c[H.currentType]&&(c[H.currentType]=_(H.currentType)),H.$tab.find("#main-toolbar-table-types-btn").html(c[H.currentType||"all"]).dropdown({constrainWidth:!1,gutter:0}),(G=H.$tab.find("#main-toolbar-table-order")).find(".main-toolbar-table-order-item").off("click").on("click",function(){H.currentOrder=$(this).data("type")||"",H.$tab.find("#main-toolbar-table-order-btn").html(_(H.currentOrder||"a-z")),H.main.saveConfig("adaptersCurrentOrder",H.currentOrder),H._postInit()}),H.currentOrder&&!c[H.currentOrder]&&(c[H.currentOrder]=_(H.currentOrder)),H.$tab.find("#main-toolbar-table-order-btn").show().html(c[H.currentOrder||"a-z"]).dropdown({constrainWidth:!1,gutter:0}),Q()}else{H.$tab.find("#main-toolbar-table-types-btn").hide(),H.$tab.find("#main-toolbar-table-order-btn").hide(),H.$grid.fancytree("getTree").reload(H.tree),H.$grid.find(".fancytree-icon").each(function(){$(this).attr("src")&&$(this).css({width:18,height:18}),$(this).on("hover",function(){var e='<div class="icon-large" style="left: '+Math.round($(this).position().left+$(this).width()+5)+'px;"><img src="'+$(this).attr("src")+'"/></div>',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})}),H.currentFilter&&H.$grid.fancytree("getTree").filterNodes(B,!1),H.sortTree(),H.enableColResize();var Y=["tab-adapters-table-name","tab-adapters-table-description","tab-adapters-table-keywords","tab-adapters-table-installed","tab-adapters-table-available","tab-adapters-table-license","tab-adapters-table-install"];H.$grid.find("tbody tr").each(function(){var e=0;$(this).find("td").each(function(){$(this).addClass(Y[e]),e++})})}H.$tab.find(".grid-main-div").removeClass("order-a-z order-popular order-updated").addClass(H.currentOrder?"order-"+H.currentOrder:""),H.$tab.find(".process-adapters").hide(),H.updateCounter(s)})):this.enableColResize(),this.restoreScroll()},this.saveScroll=function(){this.scrollTop=this.$tab.find(".grid-main-div").scrollTop()},this.restoreScroll=function(){this.scrollTop&&this.$tab.find(".grid-main-div").scrollTop(this.scrollTop)},this.updateCounter=function(e){if(void 0===e)this.getAdaptersInfo(this.main.currentHost,!1,!1,function(e,t){var a=0;for(var i in t)if(t.hasOwnProperty(i)){var n=t?t[i]:null;if(n&&!n.controller&&"hosts"!==i){var s="";e[i]&&e[i].version&&(s=e[i].version),n.version&&!H.main.upToDate(s,n.version)&&a++}}H.updateCounter(a)});else if(e){var t=$("#updates-for-adapters");t.length?t.text(e):$('<span id="updates-for-adapters" title="'+_("updates")+'" class="new badge updates-for-adapters" data-badge-caption="">'+e+"</span>").appendTo('.admin-sidemenu-items[data-tab="tab-adapters"] a')}else $("#updates-for-adapters").remove()},this.init=function(e,t){this.inited&&!e||(this.main.objectsLoaded?(this.inited||(this.inited=!0,this.main.subscribeObjects("system.host.*"),this.main.subscribeStates("system.host.*")),this.main.tabs.hosts.getHosts(function(){H._postInit(e,t)})):setTimeout(function(){H.init(e,t)},250))},this.destroy=function(){this.inited&&(this.saveScroll(),this.inited=!1,this.main.unsubscribeObjects("system.host.*"),this.main.unsubscribeStates("system.host.*"))},this.initButtons=function(r){this.$tab.find('.adapter-install-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var s=$(this).attr("data-adapter-name"),e=$(this).attr("data-adapter-desc");!function(e,t,a){if(H.main.tabs.hosts.list.length<=1&&!H.main.config.expertMode)return a(!0,H.main.currentHost,"");var i=$("#dialog-add-instance");i.find(".dialog-add-instance-name").html(e),i.find(".dialog-add-description").html(t);for(var n="",s=0;s<H.main.tabs.hosts.list.length;s++){var o=H.main.tabs.hosts.list[s];n+="<option "+(o.name===H.main.currentHost?"selected":"")+' value="'+o.name+'">'+o.name+"</option>"}H.main.tabs.hosts.list.length<=1?i.find(".dialog-add-instance-host").addClass("disabled").prop("disabled",!0):i.find(".dialog-add-instance-host").removeClass("disabled").prop("disabled",!1),i.find(".dialog-add-instance-host").html(n).select();for(var r=-1,l=[],d=0;d<H.main.tabs.instances.list.length;d++){var c=H.main.tabs.instances.list[d].split(".");if(c[c.length-2]===e){var u=parseInt(c[c.length-1],10);l.push(u),r<u&&(r=u)}}r+=10,n='<option selected value="">'+_("auto")+"</option>";for(var p=0;p<r;p++)-1===l.indexOf(p)&&(n+='<option value="'+p+'">'+p+"</option>");i.find(".dialog-add-instance-number").html(n).select(),i.find(".dialog-add-install-btn").off("click").on("click",function(e){a&&(a(!0,i.find(".dialog-add-instance-host").val(),i.find(".dialog-add-instance-number").val()),a=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.find(".dialog-add-cancel-btn").off("click").on("click",function(e){a&&(a(!1),a=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.modal({dismissible:!1,complete:function(){i.find(".dialog-add-instance-name").html("")}}).modal("open")}(s,e,function(e,i,n){e&&H.getAdaptersInfo(i,!1,!1,function(e,t){var a=e[s];a||(a=t[s]),a&&(a.license&&"MIT"!==a.license?function(i,n){var s=$("#dialog-license");if(!H.data[i].installed&&H.data[i].licenseUrl){var o=setTimeout(function(){n(!(o=null))},1e4);H.data[i].licenseUrl||(H.data[i].licenseUrl="https://raw.githubusercontent.com/yunkong2/yunkong2."+(H.data[i].name||i)+"/master/LICENSE"),"object"==typeof H.data[i].licenseUrl&&(H.data[i].licenseUrl=H.data[i].licenseUrl[systemLang]||H.data[i].licenseUrl.en),-1!==H.data[i].licenseUrl.indexOf("github.com")&&(H.data[i].licenseUrl=H.data[i].licenseUrl.replace("github.com","raw.githubusercontent.com").replace("/blob/","/")),H.main.socket.emit("httpGet",H.data[i].licenseUrl,function(e,t,a){o&&(clearTimeout(o),o=null,!e&&a?(s.css({"z-index":200}),a=(a=a.toString().replace(/\r\n/g,"<br>")).replace(/\n/g,"<br>"),s.find(".license_text").html(a),s.find(".license_agreement_name").text(_(" for %s",i)),s.modal({dismissible:!1,complete:function(){s.find(".license_text").html("")}}).modal("open"),s.find(".license_agree").off("click").on("click",function(e){n&&(n(!0),n=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")}),s.find(".license_non_agree").off("click").on("click",function(e){n&&(n(!1),n=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")})):(n&&n(!0),n=null))})}else n(!0)}(s,function(e){e&&H.main.cmdExec(null,"add "+s+" "+n+" --host "+i,function(e){e||H._postInit(!0)})}):H.main.cmdExec(null,"add "+s+" "+n+" --host "+i,function(e){e||H._postInit(!0)}))})})}),this.$tab.find('.adapter-delete-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var t=$(this).attr("data-adapter-name");H.main.confirmMessage(_("Are you sure you want to delete adapter %s?",t),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"del "+t,function(e){e||H._postInit(!0)})})}),this.$tab.find('.adapter-readme-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){H.main.navigate({tab:"adapters",dialog:"readme",params:$(this).data("adapter-name")})}),this.$tab.find('.adapter-update-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");"admin"===e&&(H.main.waitForRestart=!0),H.main.cmdExec(null,"upgrade "+e,function(e){e||H._postInit(!0)})}),this.$tab.find('.adapter-upload-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");H.main.cmdExec(null,"upload "+e,function(e){e||H._postInit(!0)})});var e=this.$tab.find('.adapter-update-custom-submit[data-adapter-name="'+r+'"]');e.off("click").on("click",function(){var e=[];if(H.main.objects["system.adapter."+r].common.news){var t=H.main.objects["system.adapter."+r].common.news;for(var a in t)t.hasOwnProperty(a)&&e.push(a)}else e.push(H.main.objects["system.adapter."+r].common.version);for(var i='<div class="collection">',n=0;n<e.length;n++){var s=t[e[n]]?t[e[n]][systemLang]||t[e[n]].en:"";i+='<a data-version="'+e[n]+'" data-position="left" data-delay="50" title="'+s+'" data-adapter-name="'+$(this).data("adapter-name")+'" class="collection-item adapters-versions-link tooltipped"><span class="adapters-versions-link-version">'+e[n]+'</span> - <div class="adapters-versions-link-history">'+s+"</div></a>"}i+="</div>";var o=$("#adapters-menu");o.length||((o=$('<div id="adapters-menu" class="modal modal-fixed-footer"><div class="modal-content"><h4>Modal Header</h4><p></p></div><div class="modal-footer"><a class="modal-action modal-close waves-effect waves-green btn-flat ">'+_("Close")+"</a></div></div>")).appendTo($(".materialize-dialogs").first()),o.modal()),o.data("trigger",this),o.find("p").html(i),o.find("h4").html(_("Versions of %s",r)),o.find(".adapters-versions-link").off("click").on("click",function(){o.modal("close");var e=$(this).data("adapter-name"),t=$(this).data("version");t&&e&&H.main.cmdExec(null,"upgrade "+e+"@"+t,function(e){e||H._postInit(!0)})}),o.modal("open")}),H.main.objects["system.adapter."+r]||e.hide()},this.objectChange=function(e,t){if(e.match(/^system\.adapter\.[a-zA-Z0-9-_]+$/)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var a=this.list.indexOf(e);-1!==a&&this.list.splice(a,1)}void 0!==this.$grid&&this.$grid[0]._isInited&&this.init(!0)}},this.stateChange=function(e,t){if(e&&t){var a=e.match(/^system\.adapter\.([\w\d-]+)\.upload$/);if(a){var i=this.$tab.find('.adapter-upload-progress[data-adapter-name="'+a[1]+'"]'),n=V(t.val);i.html(n).css({opacity:t.val?.7:0}),this.$tab.find('.group-upload-progress[data-adapter-group="'+i.data("adapter-group")+'"]').html(n).css({opacity:t.val?.7:0})}}}}function Config(e){var t=this;this.$dialog=$("#dialog-config"),this.$configFrame=this.$dialog.find("#config-iframe"),this.main=e,this.prepare=function(){$iframeDialog=this},this.init=function(){if(!this.inited){this.inited=!0;var e=this.main.navigateGetParams(),t=e.split(".");this.main.objects[e]&&this.main.objects[e].common&&this.main.objects[e].common.materialize?this.$configFrame.attr("src","adapter/"+t[2]+"/index_m.html?"+t[3]):this.$configFrame.attr("src","adapter/"+t[2]+"/?"+t[3]);var a=e.replace(/^system\.adapter\./,"");this.$dialog.data("name",a),this.$dialog.find(".title").html(_("Adapter configuration")+": "+a)}},this.allStored=function(){return!window.frames["config-iframe"].changed},this.close=function(){t.main.navigate()},this.destroy=function(){if(this.inited&&(this.inited=!1,this.$configFrame.attr("src",""),void 0!==showConfig&&showConfig&&showConfig.length)){var e=showConfig.shift();setTimeout(function(){t.main.navigate({tab:"instances",dialog:"config",params:e})},1e3)}}}function Customs(C){var p,m,g,f,T,k,D,z,I,A,S,E,O="__different__",x=this;function P(e){if(e)x.historyTimeout&&clearTimeout(x.historyTimeout);else if(x.historyTimeout)return;x.historyTimeout=setTimeout(function(){x.historyTimeout=null,S&&x.loadHistoryTable(S.data("id"),!0)},e||5e3)}function R(t,a){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom_m.html",success:function(e){a(null,e)},error:function(e){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom.html",success:function(e){a(null,e)},error:function(e){a(e.responseText)}})}})}function U(e){e.stopPropagation(),e.preventDefault();var t=x.$dialog.find("#customs-tabs"),l=t.data("ids");x.currentCustoms=null;var d=_(O);if(t.find("input, select").each(function(){var e=$(this).data("instance"),t=$(this).data("field");if(t){var a;if("checkbox"===$(this).attr("type")){if(this.indeterminate)return;a=$(this).prop("checked")}else a=$(this).val();if(a!==d){null===a&&(a=""),void 0===a&&(a=""),"false"===a&&(a=!1),"true"===a&&(a=!0);var i=parseFloat(a);a.toString().replace(/^\+/,"").replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,"$1")===i.toString()&&(a=i);for(var n=0;n<l.length;n++){var s=x.main.objects[l[n]].common.custom;if(void 0===(s=x.main.objects[l[n]].common.custom=s||{})[e]){var o,r=e.split(".")[0];o=defaults[r]?"function"==typeof defaults[r]?defaults[r](x.main.objects[l[n]],x.main.objects["system.adapter."+e]):defaults[r]:x.defaults[r],s[e]=o||{}}s[e][t]=a}}}}),l){x.$dialog.find(".dialog-system-buttons .btn-save").addClass("disabled");for(var a=0;a<l.length;a++){var i=!1,n=x.main.objects[l[a]].common.custom;for(var s in n)n.hasOwnProperty(s)&&(n[s].enabled?i=!0:delete n[s]);i||(x.main.objects[l[a]].common.custom=null)}x.setCustoms(l,function(){x.loadHistoryChart(),x.main.navigate()})}}function G(e){switch(e){case"tab-customs-settings":x.loadHistoryChart();break;case"tab-customs-table":S.select(),x.loadHistoryChart();break;case"tab-customs-chart":x.$dialog.find("#tab-customs-chart .select-instance").select();var t=x.$dialog.find("#tabs-customs");x.loadHistoryChart(t.data("id"))}}return this.main=C,this.$dialog=$("#dialog-customs"),this.customEnabled=null,this.currentCustoms=null,this.check=function(){for(var e=0;e<this.main.instances.length;e++)if(this.main.objects[this.main.instances[e]].common&&("storage"===this.main.objects[this.main.instances[e]].common.type||this.main.objects[this.main.instances[e]].common.supportCustoms)&&this.main.objects[this.main.instances[e]].common.enabled)return null!==this.customEnabled&&!0!==this.customEnabled?(this.customEnabled=!0,this.inited&&this.init(null,!0)):this.customEnabled=!0,void!0;null!==this.customEnabled&&!1!==this.customEnabled?(this.customEnabled=!1,this.inited&&this.init(null,!0)):this.customEnabled=!1},this.stateChange=function(e){this.currentCustoms===e&&P()},this.initCustomsTabs=function(e,t){var s=this.$dialog.find("#customs-tabs");e=e||[],s.html("");var o=_(O);this.defaults={};var a=this.main.config["object-customs-collapsed"];a=a?a.split(","):[];for(var r={},i=null,n=null,l=0;l<t.length;l++){var d=t[l].replace(/^system\.adapter\./,"");r[d]={};for(var c=0;c<e.length;c++){var u=C.objects[e[c]].common.custom,p=u?u[d]:null;if(C.objects[e[c]].common&&(null===i?i=C.objects[e[c]].common.type:""!==i&&i!==C.objects[e[c]].common.type&&(i=""),null===n?n=C.objects[e[c]].common.role:""!==n&&n!==C.objects[e[c]].common.role&&(n="")),p)for(var m in p)p.hasOwnProperty(m)&&(void 0===r[d][m]?r[d][m]=p[m]:r[d][m]!==p[m]&&(r[d][m]=O));else{var g=d.split(".")[0],f=null;for(var h in f=defaults[g]?"function"==typeof defaults[g]?defaults[g](x.main.objects[e[c]],x.main.objects["system.adapter."+d]):defaults[g]:this.defaults[g])f.hasOwnProperty(h)&&(void 0===r[d][h]?r[d][h]=f[h]:r[d][h]!==f[h]&&(r[d][h]=O))}}}for(var b=0;b<t.length;b++){var y=t[b].split("."),v=y[2],w=y[3],j=v+"."+w,N=this.main.objects["system.adapter."+v].common.icon;N="/adapter/"+v+"/"+N;var L='<li data-adapter="'+j+'" class="'+(-1===a.indexOf(j)?"active":"")+'"> <div class="collapsible-header"> <img src="'+N+'" />'+_("Settings for %s",j)+' <span class="activated" data-adapter="'+j+'" style="opacity: '+(!r[j]||!0!==r[j].enabled&&r[j].enabled!==O?"0":"1")+'">'+_("active")+'</span> </div> <div class="customs-settings collapsible-body">'+$('script[data-template-name="'+v+'"]').html()+" </div></li>",T=$(L);this.defaults[v]={},T.find("input, select").each(function(){var e=$(this);e.attr("data-instance",v+"."+w);var t=e.attr("data-field"),a=e.attr("data-default");"true"===a&&(a=!0),"false"===a&&(a=!1),void 0!==a&&a.toString().replace(/\+/,"")===parseFloat(a).toString()&&(a=parseFloat(a)),x.defaults[v][t]=a,"enabled"===t&&e.on("click",function(e){e.stopPropagation(),$(this).prop("checked")})}),s.append(T),customPostInits.hasOwnProperty(v)&&"function"==typeof customPostInits[v]&&customPostInits[v](T,r[v+"."+w],x.main.objects["system.adapter."+v+"."+w],i,n)}s.find("input, select").each(function(){var e,a=$(this),t=a.data("instance"),i=t.split(".")[0],n=a.data("field");void 0!==r[t][n]?"checkbox"===a.attr("type")?r[t][n]===O?a[0].indeterminate=!0:a.prop("checked",r[t][n]):r[t][n]===O?("number"===a.attr("type")&&a.attr("type","text"),"SELECT"===a.prop("tagName").toUpperCase()?(a.prepend('<option value="'+o+'">'+o+"</option>"),a.val(o)):a.val("").attr("placeholder",o)):a.val(r[t][n]):(x.defaults[i]&&void 0!==x.defaults[i][n]&&(e=x.defaults[i][n]),void 0!==e&&("checkbox"===a.attr("type")?a.prop("checked",e):a.val(e)));"checkbox"===a.attr("type")?a.on("change",function(){if(x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled"),"enabled"===$(this).data("field")){var e=a.data("instance"),t=s.find('.activated[data-adapter="'+e+'"]');$(this).prop("checked")?t.css("opacity",1):t.css("opacity",0)}}):a.on("change",function(){x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")})}),this.showCustomsData(1<e.length?null:e[0]),this.$dialog.find(".dialog-system-buttons .btn-save").addClass("disabled"),translateAll("#dialog-customs"),x.$dialog.find(".collapsible").collapsible({onOpenEnd:function(e){var t=x.main.config["object-customs-collapsed"];t=t?t.split(","):[];var a=$(e).data("adapter"),i=t.indexOf(a);-1!==i&&t.splice(i,1),x.main.saveConfig("object-customs-collapsed",t.join(","))},onCloseEnd:function(e){var t=x.main.config["object-customs-collapsed"];t=t?t.split(","):[];var a=$(e).data("adapter");-1===t.indexOf(a)&&t.push(a),x.main.saveConfig("object-customs-collapsed",t.join(","))}}),x.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||(e[0].indeterminate?(e[0].indeterminate=!1,e.prop("checked",!0).trigger("change")):e.prop("checked",!e.prop("checked")).trigger("change"))}),s.find("select").select(),M.updateTextFields("#dialog-customs"),this.resizeHistory()},this.loadHistoryTable=function(e,t,d){m=m||x.$dialog.find("#grid-history"),p=p||x.$dialog.find("#grid-history-body"),t||p.html('<tr><td colspan="5" style="text-align: center">'+_("Loading...")+"</td></tr>");var a={aggregate:"none",instance:S.val(),from:!0,ack:!0,q:!0};T||(T=this.$dialog.find("#tab-customs-table .datepicker.date-from"),k=this.$dialog.find("#tab-customs-table .datepicker.date-to"),D=this.$dialog.find("#tab-customs-table .timepicker.time-from"),z=this.$dialog.find("#tab-customs-table .timepicker.time-to"));var c,i=T.val()?M.Datepicker.getInstance(T).toString("yyyy.mm.dd"):"",n=D.val(),s=k.val()?M.Datepicker.getInstance(k).toString("yyyy.mm.dd"):"",o=z.val(),r=!0;if(s?(r=!1,(s=new Date(s)).setHours(23),s.setMinutes(59),s.setSeconds(59),s.setMilliseconds(999)):s=new Date,o){var l=o.split(":");s.setHours(l[0]),s.setMinutes(l[1]),s.setSeconds(59),s.setMilliseconds(999),r=!1}if(s=s.getTime(),r&&(s+=1e4),a.end=s,i||n){if(i=new Date(i||s),n){var u=n.split(":");i.setHours(u[0]),i.setMinutes(u[1])}else i.setHours(0),i.setMinutes(0);i.setSeconds(0),i.setMilliseconds(0),a.start=i.getTime()}else a.count=50;d&&(c=new Date(s).toISOString()+"_"+(a.start?new Date(a.start):a.count+"points")+"_"+e+"__"+a.instance+".csv"),C.socket.emit("getHistory",e,a,function(r,l){setTimeout(function(){var e,t,a,i="value;acknowledged;from;timestamp;lastchanged;\n";if(r)console.error(r),p.html('<tr><td colspan="5" style="text-align: center" class="error">'+r+"</td></tr>");else{var n="";if(l&&l.length){for(var s=l.length-1;0<=s;s--){var o=(l[s].from||"").replace("system.adapter.","").replace("system.","");n+='<tr class="'+(l[s].ts>f?"highlight":"")+'"> <td>'+l[s].val+"</td> <td>"+l[s].ack+"</td> <td>"+o+"</td> <td>"+C.formatDate(l[s].ts)+"</td> <td>"+C.formatDate(l[s].lc)+"</td></tr>\n",d&&(i+=l[s].val+";"+l[s].ack+";"+(o||"")+";"+(l[s].ts?new Date(l[s].ts).toISOString():"")+";"+(l[s].lc?new Date(l[s].lc).toISOString():"")+";\n")}f=l[l.length-1].ts}else n='<tr><td colspan="5" style="text-align: center">'+_("No data")+"</td></tr>";p.html(n)}!function e(){$.fn.colResizable&&(m.is(":visible")?(m.data("inited")||((g=new IobListHeader("grid-history-header",{list:m,colWidthOffset:1,prefix:"log-filter"})).add("text","val"),g.add("text","ack"),g.add("text","from"),g.add("text","ts"),g.add("text","lc")),m.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return g.syncHeader()}}),g.syncHeader()):setTimeout(function(){e()},200))}(),d&&(e=c,t=i,(a=document.createElement("a")).setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),a.setAttribute("download",e),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a))},0)})},this.loadHistoryChart=function(e){if(I||(I=this.$dialog.find("#tab-customs-chart .datepicker.date-from"),A=this.$dialog.find("#tab-customs-chart .datepicker.date-to")),e){for(var t=0,a=!1,i=!1,n=0;n<this.main.instances.length&&("flot"===this.main.objects[C.instances[n]].common.name&&this.main.objects[this.main.instances[n]].common.enabled?a="flot":!a&&"rickshaw"===this.main.objects[C.instances[n]].common.name&&this.main.objects[this.main.instances[n]].common.enabled?a="rickshaw":"web"===this.main.objects[this.main.instances[n]].common.name&&this.main.objects[this.main.instances[n]].common.enabled&&(t=this.main.objects[this.main.instances[n]].native.port,i=this.main.objects[this.main.instances[n]].native.secure),"flot"!==a||!t);n++);var s=this.$dialog.find("#iframe-history-chart"),o="http{isSecure}://{hostname}:{port}/{chart}/index.html?range=1440&zoom=true&axeX=lines&axeY=inside&hoverDetail=true&aggregate=onchange&chartType=step&live=30&instance={instance}&l%5B0%5D%5Bid%5D={id}&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=minmax&l%5B0%5D%5Bcolor%5D=%231868a8&l%5B0%5D%5Bthickness%5D=1&l%5B0%5D%5Bshadowsize%5D=1&l%5B0%5D%5Bsmoothing%5D=0&l%5B0%5D%5BafterComma%5D=0&l%5B0%5D%5BignoreNull%5D=false&aggregateType=step&aggregateSpan=300&relativeEnd=now&timeType=relative&noBorder=noborder&bg=rgba(0%2C0%2C0%2C0)&timeFormat=%25H%3A%25M&useComma={comma}&noedit=false&animation=0";o=(o=(o=(o=(o=(o=(o=o.replace("{isSecure}",i?"s":"")).replace("{hostname}",location.hostname)).replace("{port}",t)).replace("{chart}",a)).replace("{instance}",x.$dialog.find("#tab-customs-chart .select-instance").val())).replace("{id}",encodeURI(e))).replace("{comma}",x.main.systemConfig&&x.main.systemConfig.common&&x.main.systemConfig.isFloatComma),s.attr("src",o)}else this.$dialog.find("#iframe-history-chart").attr("src","")},this.showCustomsData=function(e){var t=this.$dialog.find("#tabs-customs"),a=0,i=!1;if(G("tab-customs-settings"),e){t.data("id",e);for(var n=0;n<C.instances.length&&("flot"===C.objects[C.instances[n]].common.name&&C.objects[C.instances[n]].common.enabled?i="flot":!i&&"rickshaw"===C.objects[C.instances[n]].common.name&&C.objects[C.instances[n]].common.enabled?i="rickshaw":"web"===C.objects[C.instances[n]].common.name&&C.objects[C.instances[n]].common.enabled&&(a=C.objects[C.instances[n]].native.port),"flot"!==i||!a);n++);x.loadHistoryTable(e),t.find(".tabs .tab-table").removeClass("disabled"),a&&i&&x.currentCustoms?t.find(".tabs .tab-chart").removeClass("disabled"):t.find(".tabs .tab-chart").addClass("disabled")}else t.find(".tabs .tab-table").addClass("disabled"),t.find(".tabs .tab-chart").addClass("disabled")},this.setCustoms=function(t,a){var e=t.pop();e?(this.$dialog.find("#tab-customs-settings .title").html(_("Adapter settings for %s states",t.length)),x.main.socket.emit("setObject",e,this.main.objects[e],function(e){e?x.main.showMessage(_(e),_("Error"),"error_outline"):setTimeout(function(){x.setCustoms(t,a)},50)})):a&&a()},this.resizeHistory=function(){var e=this.$dialog.find("#iframe-history-chart");if(e.attr("src")){var t=e.data("timeout");t&&clearTimeout(t),e.data("timeout",setTimeout(function(){x.$dialog.find("#iframe-history-chart").data("timeout",null),x.loadHistoryChart(x.$dialog.find("#tabs-customs").data("id"))},1e3))}},this.allStored=function(){return x.$dialog.find(".dialog-system-buttons .btn-save").hasClass("disabled")},this.init=function(e,t){if(!this.inited||t){var a=this.main.navigateGetParams();a&&(a=a.split(",")),a&&a.length||(a=this.ids,this.ids=void 0);var i=[];this.defaults={};for(var n=0,s="",o=[],r=0;r<this.main.instances.length;r++){var l=this.main.objects[this.main.instances[r]];if(l&&l.common&&("storage"===l.common.type||l.common.supportCustoms)){i.push(this.main.instances[r]);var d=this.main.instances[r].split(".");-1===o.indexOf(d[2])&&(o.push(d[2]),n++,R(d[2],function(e,t){e&&console.error(e),t&&(s+=t),--n||(x.$dialog.find("#customs-templates").html(s),x.initCustomsTabs(a,i))}))}}var c,u=[];if(a)for(var p=a.length-1;0<=p;p--)if(this.main.objects[a[p]]){var m=this.main.objects[a[p]].common.custom;if(m){var g=!1;for(var f in m)m.hasOwnProperty(f)&&(!1===m[f].enabled?delete m[f]:(1===a.length&&u.push(f),g=!0));g||delete this.main.objects[a[p]].common.custom}}else console.warn("Null object: "+a[p]),a.splice(p,1);S=this.$dialog.find("#tab-customs-table .select-instance"),E=this.$dialog.find("#tab-customs-chart .select-instance");var h=this.$dialog.find("#tab-customs-table .refresh"),b=this.$dialog.find("#tab-customs-table .download"),y=this.$dialog.find("#tab-customs-chart .refresh");if(a&&1===a.length){c=_("Storage of %s",a[0]),this.currentCustoms=u.length?a[0]:null;for(var M="",v=0;v<u.length;v++){var w=this.main.objects["system.adapter."+u[v]];w&&w.common&&(w.common.enabled||this.main.states["system.adapter."+u[v]+".alive"]&&this.main.states["system.adapter."+u[v]+".alive"].val)&&(M+='<option value="'+u[v]+'" '+(v?"":"selected")+" >"+u[v]+"</option>\n")}if(M){S.data("id",a[0]).html(M).show().off("change").on("change",function(){x.main.saveConfig("object-history-table",S.val()),x.loadHistoryTable($(this).data("id"))}).select(),E.data("id",a[0]).html(M).show().off("change").on("change",function(){x.main.saveConfig("object-history-chart",E.val()),x.loadHistoryChart($(this).data("id"))}).select(),void 0!==this.main.config["object-history-table"]&&S.val(this.main.config["object-history-table"]),void 0!==this.main.config["object-history-chart"]&&E.val(this.main.config["object-history-chart"]),h.data("id",a[0]).show().off("click").on("click",function(){x.$dialog.find("#grid-history-body").html(""),x.loadHistoryTable($(this).data("id"))}),y.data("id",a[0]).show().off("click").on("click",function(){x.loadHistoryChart($(this).data("id"))}),b.data("id",a[0]).show().off("click").on("click",function(){x.loadHistoryTable($(this).data("id"),!1,!0)});var j=new Date;j.setDate(j.getDate()-1);for(var N={today:_("Today"),clear:_("Clear"),done:_("Ok"),months:[_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")],monthsShort:[_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec")],weekdaysShort:[_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat")],weekdays:[_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday")],weekdaysAbbrev:["S","M","T","W","T","F","S"]},L=0;L<N.weekdaysAbbrev.length;L++)N.weekdaysAbbrev[L]=N.weekdaysShort[L][0];T||(T=this.$dialog.find("#tab-customs-table .datepicker.date-from"),k=this.$dialog.find("#tab-customs-table .datepicker.date-to"),D=this.$dialog.find("#tab-customs-table .timepicker.time-from"),z=this.$dialog.find("#tab-customs-table .timepicker.time-to"),I=this.$dialog.find("#tab-customs-chart .datepicker.date-from"),A=this.$dialog.find("#tab-customs-chart .datepicker.date-to")),T.datepicker({defaultDate:j,showDaysInNextAndPreviousMonths:!0,minYear:2014,maxYear:2032,i18n:N,setDefaultDate:!0,firstDay:1,onSelect:function(e){T.datepicker("setInputValue"),T.datepicker("close")}}),T.on("change",function(){P(1e3)}),D.timepicker({defaultTime:"00:00",twelveHour:!1,doneText:_("Ok"),clearText:_("Clear"),cancelText:_("Cancel"),autoClose:!0}),D.on("change",function(){P(1e3)}),z.timepicker({defaultTime:"now",twelveHour:!1,doneText:_("Ok"),clearText:_("Clear"),cancelText:_("Cancel"),autoClose:!0}),z.on("change",function(){P(1e3)}),k.datepicker({defaultDate:new Date,showDaysInNextAndPreviousMonths:!0,minYear:2014,maxYear:2032,i18n:N,setDefaultDate:!0,firstDay:1,onSelect:function(e){k.datepicker("setInputValue"),k.datepicker("close")}}),k.on("change",function(){P(1e3)}),I.datepicker({defaultDate:j,showDaysInNextAndPreviousMonths:!0,minYear:2014,maxYear:2032,i18n:N,setDefaultDate:!0,firstDay:1,onSelect:function(e){I.datepicker("setInputValue"),I.datepicker("close")}}),I.on("change",function(){x.loadHistoryChart(E.data("id"))}),A.datepicker({defaultDate:new Date,showDaysInNextAndPreviousMonths:!0,minYear:2014,maxYear:2032,i18n:N,setDefaultDate:!0,firstDay:1,onSelect:function(e){A.datepicker("setInputValue"),A.datepicker("close")}}),A.on("change",function(){x.loadHistoryChart(E.data("id"))})}else S.hide(),E.hide(),h.hide(),y.hide(),b.hide();this.currentCustoms&&x.main.subscribeStates(this.currentCustoms),this.$dialog.find("#tab-customs-table .title").html(_("Values of %s",a[0])),this.$dialog.find("#tab-customs-chart .title").html(_("Chart for %s",a[0]))}else a&&(S.hide(),E.hide(),h.hide(),y.hide(),b.hide(),c=_("Storage of %s states",a.length),this.currentCustoms=null);this.$dialog.find("#tab-customs-settings .title").html(c),this.$dialog.find("#tabs-customs").find(".tabs").mtabs({onShow:function(e){e&&G($(e).attr("id"))}}),this.$dialog.find("#customs-tabs").data("ids",a),x.$dialog.find(".dialog-system-buttons .btn-save").off("click").on("click",U),x.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),x.$dialog.find(".dialog-system-buttons .btn-save").hasClass("disabled")?(x.loadHistoryChart(),x.main.navigate()):x.main.confirmMessage(_("Are you sure? Changes are not saved."),_("Please confirm"),"error_outline",function(e){e&&(x.$dialog.find(".dialog-system-buttons .btn-save").addClass("disabled"),x.loadHistoryChart(),x.main.navigate())})})}},this.destroy=function(){this.inited&&(this.$dialog.find(".collapsible").collapsible("destroy"),this.inited=!1,this.loadHistoryChart(),this.currentCustoms&&x.main.unsubscribeStates(this.currentCustoms))},this}function EditObject(e){var l=this;function n(e,t,a,i){var n="";for(var s in t)if(t.hasOwnProperty(s)&&("common"!==a||"name"!==s&&"icon"!==s)){n+='<div class="row">\n<div class="col s11">\n',"state"===i&&"common"===a&&"type"===s?n+='<select class="object-tab-edit-string" data-attr="'+s+'"><option value="boolean" '+("boolean"===t[s]?"selected":"")+">"+_("boolean")+'</option><option value="string" '+("string"===t[s]?"selected":"")+">"+_("string")+'</option><option value="number" '+("number"===t[s]?"selected":"")+">"+_("number")+'</option><option value="array" '+("array"===t[s]?"selected":"")+">"+_("array")+'</option><option value="object" '+("object"===t[s]?"selected":"")+">"+_("object")+'</option><option value="mixed" '+("mixed"===t[s]?"selected":"")+">"+_("mixed")+"</option></select>":"string"==typeof t[s]?n+='<input type="text" class="object-tab-edit-string" data-attr="'+s+'" value="'+t[s]+'" />\n':"number"==typeof t[s]?n+='<input type="text" class="object-tab-edit-number" data-attr="'+s+'" value="'+t[s]+'" />\n':"boolean"==typeof t[s]?n+='<input type="checkbox" class="object-tab-edit-boolean filled-in" data-attr="'+s+'" '+(t[s]?"checked":"")+" />\n":n+='<textarea class="object-tab-edit-object" style="width: 100%" rows="3" data-attr="'+s+'">'+JSON.stringify(t[s],null,2)+"</textarea>\n";var o=s;"common"===a&&systemDictionary["common_"+s]&&systemDictionary["common_"+s][systemLang]&&(o=_("common_"+s)),"boolean"==typeof t[s]?n+="<span>"+o+"</span>\n":n+="<label>"+o+"</label>\n",n+='</div>\n<div class="col s1"><a class="btn-floating waves-effect waves-light red object-tab-field-delete" data-attr="'+s+'" data-part="'+a+'"><i class="material-icons">delete</i></a></div>\n',n+="</div>\n"}l.$dialog.find(e).html(n)}function a(e,t){var a=l.$dialog.find(e);a.find(".object-tab-edit-string").each(function(){t[$(this).data("attr")]=$(this).val()}),a.find(".object-tab-edit-number").each(function(){t[$(this).data("attr")]=parseFloat($(this).val())}),a.find(".object-tab-edit-boolean").each(function(){t[$(this).data("attr")]=$(this).prop("checked")});var i=null;if(a.find(".object-tab-edit-object").each(function(){try{t[$(this).data("attr")]=JSON.parse($(this).val())}catch(e){return i=$(this).data("attr"),!1}}),void 0!==t.write&&("false"!==t.write&&"0"!==t.write&&0!==t.write||(t.write=!1),"true"!==t.write&&"1"!==t.write&&1!==t.write||(t.write=!0)),void 0!==t.read&&("false"!==t.read&&"0"!==t.read&&0!==t.read||(t.read=!1),"true"!==t.read&&"1"!==t.read&&1!==t.read||(t.read=!0)),null===t.min&&delete t.min,void 0!==t.min){var n=parseFloat(t.min);n.toString()===t.min.toString()&&(t.min=n),"false"===t.min&&(t.min=!1),"true"===t.min&&(t.min=!0)}if(null===t.max&&delete t.max,void 0!==t.max){var s=parseFloat(t.max);s.toString()===t.max.toString()&&(t.max=s),"false"===t.max&&(t.max=!1),"true"===t.max&&(t.max=!0)}if(null===t.def&&delete t.def,void 0!==t.def){var o=parseFloat(t.def);o.toString()===t.def.toString()&&(t.def=o),"false"===t.def&&(t.def=!1),"true"===t.def&&(t.def=!0)}if(-1!==e.indexOf("common"))for(var r in t)t.hasOwnProperty(r)&&("true"===t[r]&&(t[r]=!0),"false"===t[r]&&(t[r]=!1),parseFloat(t[r]).toString()===t[r]&&(t[r]=parseFloat(t[r])));return i}function s(e,t,a){"boolean"==typeof t&&(a=t,t=3e3),l.main.showToast(l.$dialog,e,null,t,a)}this.$dialog=$("#dialog-editobject"),this.$dialogNewField=$("#dialog-new-field"),this.main=e,this.prepared=!1,this.inited=!1,this.$dialogSave=this.$dialog.find(".dialog-editobject-buttons .btn-save"),this.iconVal=null,this._prepare=function(){this.prepared||(this.prepared=!0,this.$dialogSave.on("click",function(){l.save()}),this.$dialog.find(".dialog-editobject-buttons .btn-cancel").on("click",function(){l.editor.setValue(""),l.$dialogSave.addClass("disabled"),l.main.navigate()}),this.$dialog.find(".btn-add-common").on("click",function(){l.$dialogNewField.find(".object-tab-new-icon").show(),l.$dialogNewField.modal("open");var e=l.$dialogNewField.find(".object-tab-new-name");e.data("type","common").focus(),e.hasClass("autocomplete")||(e.addClass("autocomplete"),e.mautocomplete({data:{type:null,desc:null,min:null,max:null,def:null,role:null,unit:null,read:null,write:null,states:null},minLength:0})),e.focus()}),this.$dialog.find(".btn-add-native").on("click",function(){l.$dialogNewField.find(".object-tab-new-icon").hide(),l.$dialogNewField.modal("open");var e=l.$dialogNewField.find(".object-tab-new-name");e.hasClass("autocomplete")&&(e.mautocomplete("destroy"),e.removeClass("autocomplete")),M.updateTextFields("#dialog-new-field"),e.data("type","native").focus()}),this.$dialogNewField.find(".object-tab-new-name").keypress(function(e){13===e.which&&l.$dialogNewField.find(".btn-add").trigger("click")}),this.editor||(this.editor=ace.edit("view-object-raw"),this.editor.getSession().setMode("ace/mode/json"),this.editor.$blockScrolling=!0,this.editor.getSession().on("change",function(){l.$dialogSave.removeClass("disabled")})),this.$dialogNewField.modal(),this.$dialog.find(".tabs").mtabs({onShow:function(e){if(e){var t=$(e).attr("id");if("object-tab-common"===t)s(_("Drop the icons here"));else if("object-tab-raw"===t){var a=l.saveFromTabs();if(!a)return!1;l.editor.setValue(JSON.stringify(a,null,2))}else if("object-tab-raw"===t){var i;try{i=JSON.parse(l.editor.getValue())}catch(e){return l.main.showMessage(e,_("Parse error"),"error_outline"),l.main.noSelect||l.$dialog.find(".tabs").mtabs("select","object-tab-raw"),!1}l.load(i)}return l.main.saveConfig("object-edit-active",t),!0}}}),this.$dialogNewField.find(".btn-add").on("click",function(e){e.preventDefault(),e.stopPropagation();var t=l.$dialogNewField.find(".object-tab-new-name"),a=t.data("type")||"common",i=t.val().trim(),n=l.saveFromTabs();i&&-1===i.indexOf(" ")?void 0===n[a][i]?(n[a][i]="",l.load(n),l.$dialogNewField.find(".object-tab-new-name").val(""),l.$dialogNewField.modal("close"),l.$dialogSave.removeClass("disabled")):l.main.showError(_("Field %s yet exists!",i)):l.main.showError(_("Invalid field name: %s",i))}),this.$dialogNewField.find(".btn-cancel").on("click",function(e){l.$dialogNewField.find(".object-tab-new-name").val("")}),this.$dialog.find(".edit-object-name").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find(".edit-object-type").on("change",function(){l.$dialogSave.removeClass("disabled")}),this.$dialog.find(".object-tab-rights input").on("change",function(){l.$dialogSave.removeClass("disabled")}),installFileUpload(this.$dialog.find("#object-tab-common"),5e4,function(e,t){if(e)s(e,!0);else{if(!t.match(/^data:image\//))return void s(_("Unsupported image format"),!0);l.$dialogSave.removeClass("disabled"),l.iconVal=t;var a=l.$dialog.find(".icon-editor");a.find(".icon").show().html('<img class="treetable-icon" />'),a.find(".icon .treetable-icon").attr("src",t)}}),this.$dialog.find(".icon-editor .icon-upload").off("click").on("click",function(){l.$dialog.find(".drop-file").trigger("click")}),this.$dialog.find(".icon-editor .icon-clear").off("click").on("click",function(){l.iconVal&&(l.iconVal=null,l.$dialog.find(".icon-editor").hide().appendTo(l.$dialog),l.$dialogSave.removeClass("disabled"))}))},this.init=function(){if(this._prepare(),!this.inited){this.inited=!0;var e=l.main.navigateGetParams(),t=!!(e||"").match(/,def$/);e=e.replace(/,def$/,"");var a=this.main.objects[e];if(a){void 0===this.main.config["object-edit-active"]||l.main.noSelect||this.$dialog.find(".tabs").mtabs("select",this.main.config["object-edit-active"]);for(var i,n="",s=0;s<this.main.tabs.users.list.length;s++)i=translateName(this.main.objects[this.main.tabs.users.list[s]].common.name),n+='<option value="'+this.main.tabs.users.list[s]+'">'+(i||this.main.tabs.users.list[s])+"</option>";for(this.$dialog.find(".object-tab-acl-owner").html(n),n="",s=0;s<this.main.tabs.users.groups.length;s++)i=translateName(this.main.objects[this.main.tabs.users.groups[s]].common.name),n+='<option value="'+this.main.tabs.users.groups[s]+'">'+(i||this.main.tabs.users.groups[s])+"</option>";this.$dialog.find(".object-tab-acl-group").html(n),this.load(a),t?this.$dialog.data("cb",function(a){"state"===a.type&&l.main.socket.emit("getState",a._id,function(e,t){t&&null!==t.val&&void 0!==t.val||l.main.socket.emit("setState",a._id,void 0===a.common.def?null:a.common.def,!0)})}):this.$dialog.data("cb",null),l.$dialogSave.addClass("disabled")}}},this.destroy=function(){this.inited&&(this.inited=!1)},this.load=function(e){if(e){e.common=e.common||{},e.native=e.native||{},e.acl=e.acl||{},this.$dialog.find(".title-id").text(e._id),this.$dialog.find(".edit-object-name").val(e.common?translateName(e.common.name):e._id),this.$dialog.find(".edit-object-type").val(e.type),this.$dialog.find(".object-tab-acl-owner").val(e.acl.owner||"system.user.admin"),this.$dialog.find(".object-tab-acl-group").val(e.acl.ownerGroup||"system.group.administrator"),this.$dialog.find(".icon-editor").hide().appendTo(this.$dialog),n(".object-tab-common-table",e.common||{},"common",e.type),n(".object-tab-native-table",e.native||{},"native",e.type),void 0!==e.common.icon?(this.iconVal=e.common.icon,this.$dialog.find(".object-tab-common-table").prepend(this.$dialog.find(".icon-editor").show()),this.$dialog.find(".icon-editor .icon").html(l.main.getIconFromObj(e))):this.iconVal=null,this.$dialog.find(".object-tab-field-delete").on("click",function(){var a=$(this).data("part"),i=$(this).data("attr");l.main.confirmMessage(_("Delete attribute"),_("Please confirm"),"error_outline",function(e){if(e){var t=l.saveFromTabs();delete t[a][i],l.load(t)}})}),e.acl=e.acl||{},void 0===e.acl.object&&(e.acl.object=1638),this.$dialog.find("#object-tab-acl-obj-owner-read").prop("checked",1024&e.acl.object),this.$dialog.find("#object-tab-acl-obj-owner-write").prop("checked",512&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-read").prop("checked",64&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-write").prop("checked",32&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-read").prop("checked",4&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-write").prop("checked",2&e.acl.object),"state"!==e.type?this.$dialog.find(".object-tab-acl-state").hide():(this.$dialog.find(".object-tab-acl-state").show(),void 0===e.acl.state&&(e.acl.state=1638),this.$dialog.find("#object-tab-acl-state-owner-read").prop("checked",1024&e.acl.state),this.$dialog.find("#object-tab-acl-state-owner-write").prop("checked",512&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-read").prop("checked",64&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-write").prop("checked",32&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-read").prop("checked",4&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-write").prop("checked",2&e.acl.state));var t=JSON.parse(JSON.stringify(e));if(this.editor.setValue(JSON.stringify(t,null,2)),t._id&&delete t._id,t.common&&delete t.common,t.type&&delete t.type,t.native&&delete t.native,t.acl&&delete t.acl,this.$dialog.find("#view-object-rest").val(JSON.stringify(t,null," ")),this.$dialog.find("select").select(),this.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),this.$dialog.find("input").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find("select").on("change",function(){l.$dialogSave.removeClass("disabled")}),this.$dialog.find("textarea").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),void 0!==e.common.color){var a=Date.now(),i=this.$dialog.find('.object-tab-edit-string[data-attr="color"]').parent();i.prepend('<i class="material-icons prefix tab-enums-dialog-new-color-icon">color_lens</i><a class="btn edit-color translate">'+_("Color")+"</a>"),i.colorpicker({component:".btn",color:i,container:!0}).colorpicker("setValue",e.common.color||"#fff").on("showPicker.colorpicker",function(){}).on("changeColor.colorpicker",function(e){100<Date.now()-a&&i.find("input").val(e.color.toHex()).trigger("change")})}}},this.saveFromTabs=function(){var e;try{e=(e=this.$dialog.find("#view-object-rest").val())?JSON.parse(e):{}}catch(t){return this.main.showMessage(_("Cannot parse."),_("Error in %s",t),"error_outline"),!1}e.common={},e.native={},e.acl={},e._id=this.$dialog.find(".title-id").text(),e.common.name=this.$dialog.find(".edit-object-name").val(),e.type=this.$dialog.find(".edit-object-type").val();var t=a(".object-tab-common-table",e.common);return t?(this.main.showMessage(_("Cannot parse."),_("Error in %s",t),"error_outline"),!1):(t=a(".object-tab-native-table",e.native))?(this.main.showMessage(_("Cannot parse."),_("Error in %s",t),"error_outline"),!1):(e.acl.object=0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-owner-read").prop("checked")?1024:0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-owner-write").prop("checked")?512:0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-group-read").prop("checked")?64:0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-group-write").prop("checked")?32:0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-every-read").prop("checked")?4:0,e.acl.object|=this.$dialog.find("#object-tab-acl-obj-every-write").prop("checked")?2:0,e.acl.owner=this.$dialog.find(".object-tab-acl-owner").val(),e.acl.ownerGroup=this.$dialog.find(".object-tab-acl-group").val(),"state"===e.type&&(e.acl.state=0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-owner-read").prop("checked")?1024:0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-owner-write").prop("checked")?512:0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-group-read").prop("checked")?64:0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-group-write").prop("checked")?32:0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-every-read").prop("checked")?4:0,e.acl.state|=this.$dialog.find("#object-tab-acl-state-every-write").prop("checked")?2:0),null!==this.iconVal&&void 0!==this.iconVal&&(e.common.icon=this.iconVal),e)},this.saveFromRaw=function(){var e;try{e=JSON.parse(this.editor.getValue())}catch(e){return this.main.showMessage(e,_("Parse error"),"error_outline"),l.main.noSelect||this.$dialog.find(".tabs").mtabs("select","object-tab-raw"),!1}return e},this.save=function(){if("object-tab-raw"===this.main.config["object-edit-active"]){var a=this.saveFromRaw();if(!a)return;this.main.socket.emit("setObject",a._id,a,function(e){if(e)l.main.showError(e);else{var t=l.$dialog.data("cb");t&&t(a),l.$dialogSave.addClass("disabled"),l.main.navigate()}})}else{var i=l.saveFromTabs();if(!i)return;this.main.socket.emit("getObject",i._id,function(e,t){if(e)return l.main.showError(e);t.common=i.common,t.native=i.native,t.acl=i.acl,l.main.socket.emit("setObject",i._id,t,function(e){if(e)l.main.showError(e);else{var t=l.$dialog.data("cb");t&&t(i),l.$dialogSave.addClass("disabled"),l.main.navigate()}})})}},this.allStored=function(){return l.$dialogSave.hasClass("disabled")}}function Enums(t){var m=this;this.main=t,this.list=[],this.$gridEnum=$("#tab-enums"),this.$gridList=this.$gridEnum.find(".tab-enums-list"),this.$grid=this.$gridEnum.find(".tab-enums-objects"),this.updateTimers=null,this.editMode=!1,this.isTiles=!1;var c=[],n={"enum.rooms":{_id:"enum.rooms",common:{icon:"home",name:{en:"Rooms",de:"Räume",ru:"Комнаты",pt:"Quartos",nl:"Kamers",fr:"Pièces",it:"Camere",es:"Habitaciones"},desc:{en:"List of the rooms",de:"Liste der Räumen",ru:"Список комнат",pt:"Lista dos quartos",nl:"Lijst met kamers",fr:"Liste des chambres",it:"Elenco delle stanze",es:"Lista de las habitaciones"},members:[],dontDelete:!0},type:"enum"},"enum.functions":{_id:"enum.functions",common:{icon:"lightbulb_outline",name:{en:"Functions",de:"Funktionen",ru:"функции",pt:"Funções",nl:"functies",fr:"Les fonctions",it:"funzioni",es:"Funciones"},desc:{en:"List of the functions",de:"Liste der Funktionen",ru:"Список функций",pt:"Lista das funções",nl:"Lijst met functies",fr:"Liste des fonctions",it:"Elenco delle funzioni",es:"Lista de las funciones"},members:[],dontDelete:!0},type:"enum"},"enum.favorites":{_id:"enum.favorites",common:{icon:"favorite_border",name:{en:"Favorites",de:"Favoriten",ru:"Избранные",pt:"Favoritos",nl:"favorieten",fr:"Favoris",it:"Preferiti",es:"Favoritos"},desc:{en:"List of favorites objects",de:"Liste der Favoritenobjekte",ru:"Список избранных объектов",pt:"Lista de objetos favoritos",nl:"Lijst met favorietenobjecten",fr:"Liste des objets favoris",it:"Elenco di oggetti preferiti",es:"Lista de objetos favoritos"},members:[]},type:"enum"}},s={"enum.rooms":{"enum.rooms.living_room":{_id:"enum.rooms.living_room",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wNDYgNDgwLjA0NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjA0NiA0ODAuMDQ2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PGc+PHBhdGggZD0iTTMyOC4wMzQsMzIwLjA0NmgtMjR2LTg4YzAtNC40MTgtMy41ODItOC04LThoLTI1NmMtNC40MTgsMC04LDMuNTgyLTgsOHY4OGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MTI4YzAsNC40MTgsMy41ODIsOCw4LDhoMjR2MTZoMTZ2LTE2aDI0MHYxNmgxNnYtMTZoMjRjNC40MTgsMCw4LTMuNTgyLDgtOHYtMTI4QzMzNi4wMzQsMzIzLjYyOCwzMzIuNDUyLDMyMC4wNDYsMzI4LjAzNCwzMjAuMDQ2eiBNODAuMDM0LDQ0OC4wNDZoLTY0di0xMTJoNjRWNDQ4LjA0NnogTTI0MC4wMzQsNDQ4LjA0NmgtMTQ0di02NGgxNDRWNDQ4LjA0NnogTTI0MC4wMzQsMzI4LjA0NnY0MGgtMTQ0di00MGMwLTQuNDE4LTMuNTgyLTgtOC04aC00MHYtODBoMjQwdjgwaC00MEMyNDMuNjE1LDMyMC4wNDYsMjQwLjAzNCwzMjMuNjI4LDI0MC4wMzQsMzI4LjA0NnogTTMyMC4wMzQsNDQ4LjA0NmgtNjR2LTExMmg2NFY0NDguMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTQ3OS45NTQsMTUxLjE2NmwtMTYtMTQ0Yy0wLjQ0Ny00LjA0MS0zLjg1NC03LjEwNC03LjkyLTcuMTJoLTExMmMtNC4wOTYtMC4wMjUtNy41NDksMy4wNDktOCw3LjEybC0xNiwxNDRjLTAuMjc2LDIuMjU4LDAuNDIyLDQuNTI4LDEuOTIsNi4yNGMxLjU1LDEuNzE4LDMuNzY3LDIuNjgsNi4wOCwyLjY0aDY0djI3MmgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MzJjMCw0LjQxOCwzLjU4Miw4LDgsOGg4MGM0LjQxOCwwLDgtMy41ODIsOC04di0zMmMwLTQuNDE4LTMuNTgyLTgtOC04aC0zMnYtMjcyaDY0YzIuMjg1LDAuMDE3LDQuNDY5LTAuOTQzLDYtMi42NEM0NzkuNTMyLDE1NS42OTQsNDgwLjIzLDE1My40MjUsNDc5Ljk1NCwxNTEuMTY2eiBNNDMyLjAzNCw0NDguMDQ2djE2aC02NHYtMTZINDMyLjAzNHogTTMzNi45OTQsMTQ0LjA0NmwxNC4yNC0xMjhoOTcuNmwxNC4yNCwxMjhIMzM2Ljk5NHoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGQ9Ik0yNzIuMDM0LDQ4LjA0NmgtNTIuNzJsLTQ1LjYtNDUuNjhjLTMuMTExLTMuMTM3LTguMTc3LTMuMTU4LTExLjMxNC0wLjA0NmMtMC4wMTYsMC4wMTUtMC4wMzEsMC4wMzEtMC4wNDYsMC4wNDZsLTQ1LjYsNDUuNjhoLTUyLjcyYy00LjQxOCwwLTgsMy41ODItOCw4djEyOGMwLDQuNDE4LDMuNTgyLDgsOCw4aDIwOGM0LjQxOCwwLDgtMy41ODIsOC04di0xMjhDMjgwLjAzNCw1MS42MjgsMjc2LjQ1Miw0OC4wNDYsMjcyLjAzNCw0OC4wNDZ6IE0xNjguMDM0LDE5LjMyNmwyOC43MiwyOC43MmgtNTcuNDRMMTY4LjAzNCwxOS4zMjZ6IE0yNjQuMDM0LDE3Ni4wNDZoLTE5MnYtMTEyaDE5MlYxNzYuMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTg4LjAzNCw4MC4wNDZ2ODBoMTYwdi04MEg4OC4wMzR6IE0yMzIuMDM0LDE0NC4wNDZoLTEyOHYtNDhoMTI4VjE0NC4wNDZ6Ii8+PC9nPjwvZz48L3N2Zz4=",name:{en:"Living room",de:"Wohnzimmer",ru:"Гостиная",pt:"Sala de estar",nl:"Woonkamer",fr:"Salon",it:"Soggiorno",es:"Sala"},members:[]},type:"enum"},"enum.rooms.sleeping_room":{_id:"enum.rooms.sleeping_room",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ2NCwyNjRWODhIMTZ2MTc2SDB2ODBoNDh2NDhoNjR2LTQ4aDI1NnY0OGg2NHYtNDhoNDh2LTgwSDQ2NHogTTMyLDEwNGg0MTZ2MTYwaC0xNnYtMjRjMC0yMi4wOTEtMTcuOTA5LTQwLTQwLTQwDQoJCWgtMTIuNDhjMi45MDgtNC44MzIsNC40NTYtMTAuMzYsNC40OC0xNmMwLTE3LjY3My0xNC4zMjctMzItMzItMzJoLTY0Yy0xNy42NzMsMC0zMiwxNC4zMjctMzIsMzINCgkJYzAuMDI0LDUuNjQsMS41NzIsMTEuMTY4LDQuNDgsMTZoLTQwLjk2YzIuOTA4LTQuODMyLDQuNDU2LTEwLjM2LDQuNDgtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NA0KCQljLTE3LjY3MywwLTMyLDE0LjMyNy0zMiwzMmMwLjAyNCw1LjY0LDEuNTcyLDExLjE2OCw0LjQ4LDE2SDg4Yy0yMi4wOTEsMC00MCwxNy45MDktNDAsNDB2MjRIMzJWMTA0eiBNMzkyLDIxNg0KCQljMTMuMjU1LDAsMjQsMTAuNzQ1LDI0LDI0djI0SDY0di0yNGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRIMzkyeiBNMTEyLDE4NGMwLTguODM3LDcuMTYzLTE2LDE2LTE2aDY0YzguODM3LDAsMTYsNy4xNjMsMTYsMTYNCgkJcy03LjE2MywxNi0xNiwxNmgtNjRDMTE5LjE2MywyMDAsMTEyLDE5Mi44MzcsMTEyLDE4NHogTTI3MiwxODRjMC04LjgzNyw3LjE2My0xNiwxNi0xNmg2NGM4LjgzNywwLDE2LDcuMTYzLDE2LDE2DQoJCXMtNy4xNjMsMTYtMTYsMTZoLTY0QzI3OS4xNjMsMjAwLDI3MiwxOTIuODM3LDI3MiwxODR6IE05NiwzNzZINjR2LTMyaDMyVjM3NnogTTQxNiwzNzZoLTMydi0zMmgzMlYzNzZ6IE00NjQsMzI4SDE2di00OGg0NDhWMzI4DQoJCXoiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9IjQ4IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDE2IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iODAiIHk9IjEyMCIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDgiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MTYiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQoNCjwvc3ZnPg0K",name:{en:"Sleeping room",de:"Schlafzimmer",ru:"Спальня",pt:"Quarto de dormir",nl:"Slaapkamer",fr:"Chambre à coucher",it:"Camera da letto",es:"Dormitorio",pl:"Sypialnia"},members:[]},type:"enum"},"enum.rooms.kitchen":{_id:"enum.rooms.kitchen",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTAsMjA4djQ4aDE2djIyNGg0NDhWMjU2aDE2di00OEgweiBNMjA4LDQ2NEgzMlYyNTZoMTc2VjQ2NHogTTI4OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE0zNjgsNDY0aC02NFYzMjBoNjRWNDY0eg0KCQkgTTQ0OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE00NDgsMzA0SDIyNHYtNDhoMjI0VjMwNHogTTQ2NCwyNDBIMTZ2LTE2aDQ0OFYyNDB6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDgsMzM2djExMmgxNDRWMzM2SDQ4eiBNMTc2LDQzMkg2NHYtODBoMTEyVjQzMnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik03MiwyNzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0Uzg1LjI1NSwyNzIsNzIsMjcyeiBNNzIsMzA0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCQlzMy41ODItOCw4LThzOCwzLjU4Miw4LDhTNzYuNDE4LDMwNCw3MiwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMTY4LDI3MmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMTgxLjI1NSwyNzIsMTY4LDI3MnogTTE2OCwzMDRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE3Mi40MTgsMzA0LDE2OCwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMDQiIHk9IjI3MiIgd2lkdGg9IjY0IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIyNTYiIHk9IjMzNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMzYiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MDAiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMjA4LDB2ODYuMDhsLTI0LTQ4VjBINDB2MzguMDhMMC44OCwxMTYuNGMtMS45ODgsMy45NDYtMC40MDEsOC43NTYsMy41NDQsMTAuNzQ0QzUuNTM0LDEyNy43MDMsNi43NTgsMTI3Ljk5Niw4LDEyOGg0NzINCgkJVjBIMjA4eiBNNTYsMTZoMTEydjE2SDU2VjE2eiBNMjAuOTYsMTEybDMyLTY0aDExOC4wOGwzMiw2NEgyMC45NnogTTMzNiwxMTJIMjI0VjE2aDExMlYxMTJ6IE00NjQsMTEySDM1MlYxNmgxMTJWMTEyeiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iMzA0IiB5PSI4MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzNjgiIHk9IjgwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9Ijk2IiB5PSIzNjgiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPC9zdmc+DQo=",name:{en:"Kitchen",de:"Küche",ru:"Кухня",pt:"Cozinha",nl:"Keuken",fr:"Cuisine",it:"Cucina",es:"Cocina",pl:"Kuchnia"},members:[]},type:"enum"},"enum.rooms.office":{_id:"enum.rooms.office",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0yMjQsMTIwdjExMmgyMjRWMTIwSDIyNHogTTQzMiwyMTZIMjQwdi04MGgxOTJWMjE2eiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0zMzYsMTUyYy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMzNDkuMjU1LDE1MiwzMzYsMTUyeiBNMzM2LDE4NGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzM0MC40MTgsMTg0LDMzNiwxODR6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTE3Niw4OFY0OGMwLTQuNDE4LTMuNTgyLTgtOC04aC04VjE2YzAtNC40MTgtMy41ODItOC04LThINDBjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MjRoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDh2NDBIMHYzODQNCgkJCWgyMDhWMjY0aDIwOHYyMDhoNjRWODhIMTc2eiBNNDgsMjRoOTZ2MTZINDhWMjR6IE0zMiw1NmgxMjh2MzJIMzJWNTZ6IE0xOTIsNDU2SDE2VjIwMGgxNzZWNDU2eiBNMTkyLDE4NEgxNnYtODBoMTc2VjE4NHoNCgkJCSBNNDY0LDQ1NmgtMzJWMjY0aDMyVjQ1NnogTTQ2NCwyNDhIMjA4VjEwNGgyNTZWMjQ4eiIvPg0KPC9nPg0KPGc+DQoJCTxyZWN0IHg9IjgwIiB5PSIxMzYiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0xNTIsMjE2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMxNjUuMjU1LDIxNiwxNTIsMjE2eiBNMTUyLDI0OGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE1Ni40MTgsMjQ4LDE1MiwyNDh6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==",name:{en:"Office",de:"Büro",ru:"офис",pt:"Escritório",nl:"Kantoor",fr:"Bureau",it:"Ufficio",es:"Oficina",pl:"Gabinet"},members:[]},type:"enum"},"enum.rooms.nursery":{_id:"enum.rooms.nursery",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQwLDQzMmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTNTMuMjU1LDQzMiw0MCw0MzJ6IE00MCw0NjRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzQ0LjQxOCw0NjQsNDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQ0MCw0MzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0UzQ1My4yNTUsNDMyLDQ0MCw0MzJ6IE00NDAsNDY0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFM0NDQuNDE4LDQ2NCw0NDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQxNiwxMTJ2NDhINjR2LTQ4SDE2djMyMGg0OHYtNDhoMzUydjQ4aDQ4VjExMkg0MTZ6IE00OCw0MTZIMzJWMTI4aDE2VjQxNnogTTY0LDIwOGgyNHY4MEg2NFYyMDh6IE02NCwzMDRoMjR2MzJINjRWMzA0DQoJCXogTTQxNiwzNjhINjR2LTE2aDM1MlYzNjh6IE0xMjAsMzA0djMyaC0xNnYtMzJIMTIweiBNMTA0LDI4OHYtODBoMTZ2ODBIMTA0eiBNMTUyLDMwNHYzMmgtMTZ2LTMySDE1MnogTTEzNiwyODh2LTgwaDE2djgwSDEzNnoNCgkJIE0xODQsMzA0djMyaC0xNnYtMzJIMTg0eiBNMTY4LDI4OHYtODBoMTZ2ODBIMTY4eiBNMjE2LDMwNHYzMmgtMTZ2LTMySDIxNnogTTIwMCwyODh2LTgwaDE2djgwSDIwMHogTTI0OCwzMDR2MzJoLTE2di0zMkgyNDh6DQoJCSBNMjMyLDI4OHYtODBoMTZ2ODBIMjMyeiBNMjgwLDMwNHYzMmgtMTZ2LTMySDI4MHogTTI2NCwyODh2LTgwaDE2djgwSDI2NHogTTMxMiwzMDR2MzJoLTE2di0zMkgzMTJ6IE0yOTYsMjg4di04MGgxNnY4MEgyOTZ6DQoJCSBNMzQ0LDMwNHYzMmgtMTZ2LTMySDM0NHogTTMyOCwyODh2LTgwaDE2djgwSDMyOHogTTM3NiwzMDR2MzJoLTE2di0zMkgzNzZ6IE0zNjAsMjg4di04MGgxNnY4MEgzNjB6IE00MTYsMzM2aC0yNHYtMzJoMjRWMzM2eg0KCQkgTTQxNiwyODhoLTI0di04MGgyNFYyODh6IE00MTYsMTkySDY0di0xNmgzNTJWMTkyeiBNNDQ4LDQxNmgtMTZWMTI4aDE2VjQxNnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yOTYsNTAuNzJjLTQuNTA5LDAuMDM0LTguOTE3LDEuMzM3LTEyLjcyLDMuNzZjLTEwLjMxMy03LjY4MS0yMi40OTUtMTIuNDYtMzUuMjgtMTMuODRWMGgtMTZ2NDAuNjQNCgkJYy0xMi43ODUsMS4zOC0yNC45NjcsNi4xNTktMzUuMjgsMTMuODRjLTMuODAzLTIuNDIzLTguMjExLTMuNzI2LTEyLjcyLTMuNzZjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNGMwLDEzLjI1NSwxMC43NDUsMjQsMjQsMjQNCgkJczI0LTEwLjc0NSwyNC0yNGMtMC4wMTUtMi43MjMtMC40NzUtNS40MjUtMS4zNi04YzE5Ljg1NS0xNC41NjUsNDYuODY1LTE0LjU2NSw2Ni43MiwwYy0wLjg4NSwyLjU3NS0xLjM0NSw1LjI3Ny0xLjM2LDgNCgkJYzAsMTMuMjU1LDEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRDMzIwLDYxLjQ2NSwzMDkuMjU1LDUwLjcyLDI5Niw1MC43MnogTTE4NCw4Mi43MmMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQljMC00LjQxOCwzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOEMxOTIsNzkuMTM4LDE4OC40MTgsODIuNzIsMTg0LDgyLjcyeiBNMjk2LDgyLjcyYy00LjQxOCwwLTgtMy41ODItOC04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJczgsMy41ODIsOCw4QzMwNCw3OS4xMzgsMzAwLjQxOCw4Mi43MiwyOTYsODIuNzJ6Ii8+DQo8L2c+DQoNCjwvc3ZnPg0K",name:{en:"Nursery",de:"Kinderzimmer",ru:"Детская",pt:"Berçário",nl:"Kwekerij",fr:"Garderie",it:"Asilo nido",es:"Guardería",pl:"Żłobek"},members:[]},type:"enum"},"enum.rooms.wc":{_id:"enum.rooms.wc",common:{icon:"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik00NTEsMzE3di0zMGMwLTI0LjgxMy0yMC4xODctNDUtNDUtNDVIMjI2Yy01LjI1OSwwLTEwLjMwNSwwLjkxNS0xNSwyLjU4Vjg3LjQyYzE3LjQ1OS02LjE5MiwzMC0yMi44NjUsMzAtNDIuNDIgICAgYzAtMjQuODEzLTIwLjE4Ny00NS00NS00NUg3NmMtOC4yODQsMC0xNSw2LjcxNi0xNSwxNWMwLDI3LjcxLDAsMjQ2LjM4NSwwLDI3MmMwLDE5LjU1NSwxMi41NDEsMzYuMjI4LDMwLDQyLjQyVjM3NyAgICBjMCwyNy41MTksMTAuODU1LDUzLjkyNywzMCw3My40ODJWNDk3YzAsOC4yODQsNi43MTYsMTUsMTUsMTVjMTcuMzMsMCwyNTQuODQ2LDAsMjcwLDBjOC4yODQsMCwxNS02LjcxNiwxNS0xNXMtNi43MTYtMTUtMTUtMTUgICAgaC00NXYtMTcuOTkxQzQxNS45ODgsNDM1Ljk0Myw0NTEsMzc5LjI4Myw0NTEsMzE3eiBNMjI2LDI3MmgxODBjOC4yNzEsMCwxNSw2LjcyOSwxNSwxNXYxNUgyMTF2LTE1ICAgIEMyMTEsMjc4LjcyOSwyMTcuNzI5LDI3MiwyMjYsMjcyeiBNOTEsMzBoMTA1YzguMjcxLDAsMTUsNi43MjksMTUsMTVzLTYuNzI5LDE1LTE1LDE1SDkxVjMweiBNMTA2LDMwMmMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNSAgICBWOTBoOTBjMCwxNy4zOSwwLDIwMC4yNzEsMCwyMTJIMTA2eiBNMzM5Ljk5NCw0NDAuNzczYy01LjQ2MywyLjM4Ny04Ljk5NCw3Ljc4My04Ljk5NCwxMy43NDVWNDgySDE1MXYtMzcuOTE3ICAgIGMwLTQuMjY3LTEuODE3LTguMzMyLTQuOTk2LTExLjE3N0MxMzAuMTEzLDQxOC42ODQsMTIxLDM5OC4zMDcsMTIxLDM3N3YtNDUuMWMzNC41MzUsMCwyOTYuNTQ1LDAsMjk5LjE2OCwwICAgIEM0MTQuODY0LDM3OS40OTMsMzg0LjU3NSw0MjEuMjk1LDMzOS45OTQsNDQwLjc3M3oiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K",name:{en:"WC",de:"Toilette",ru:"Туалет",pt:"Banheiro",nl:"WC",fr:"Toilettes",it:"Bagno",es:"Baño",pl:"Toaleta"},members:[]},type:"enum"},"enum.rooms.garage":{_id:"enum.rooms.kitchen",common:{icon:"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wMTMgNDgwLjAxMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjAxMyA0ODAuMDEzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI1NnB4Ij4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMzkwLjk5OSwzMTYuOTUybC0zMC4yOTYtMjQuMjMyYy0xLjExMy0wLjg4Ny0xLjk2OS0yLjA1NS0yLjQ4LTMuMzg0bC0xMS42OC01NC40ICAgIGMtMi40MzItMTEuMDItMTIuMTc5LTE4Ljg4My0yMy40NjQtMTguOTI4SDE1Ni44MDdjLTExLjI2OC0wLjA1Mi0yMS4wMzYsNy43ODgtMjMuNDI0LDE4LjhsLTEyLDUzLjk1MiAgICBjLTAuNDAzLDEuNzgzLTEuMzk5LDMuMzc2LTIuODI0LDQuNTJsLTI5LjYsMjMuNjhjLTUuNjg3LDQuNTUyLTguOTg0LDExLjQ1Mi04Ljk1MiwxOC43MzZ2ODAuMzEyICAgIGMwLjAyMSw2Ljc4OCwyLjkzLDEzLjI0Niw4LDE3Ljc2djMwLjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTc2djI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzIgICAgYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTMwLjI0YzUuMDctNC41MTQsNy45NzktMTAuOTcyLDgtMTcuNzZ2LTgwLjMxMkM0MDAuMDI0LDMyOC40LDM5Ni43MDcsMzIxLjQ5NiwzOTAuOTk5LDMxNi45NTJ6ICAgICBNMjE4LjE0MywyMzguMzI4bDAtMC4wMDhsNC4yMDgtNi4zMmgxMDAuNzI4YzMuNzcyLTAuMDAxLDcuMDMyLDIuNjMyLDcuODI0LDYuMzJsMTAuNzA0LDQ5LjY4OEgyMjQuNzAzICAgIGM1Ljg4OC0xMS4wOTgsMy44NzEtMjQuNzM2LTQuOTc2LTMzLjY1NkMyMTUuNDYxLDI1MC4wNjQsMjE0Ljc5OSwyNDMuMzY4LDIxOC4xNDMsMjM4LjMyOHogTTE4NC4wNzksMjM4LjMyOHYtMC4wMDhsNC4yMDgtNi4zMiAgICBoMTUuMTQ0Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMmgtMTUuMTYgICAgYzUuODgtMTEuMTAxLDMuODYxLTI0LjczNi00Ljk4NC0zMy42NTZDMTgxLjQxNCwyNTAuMDM3LDE4MC43NTMsMjQzLjM2MSwxODQuMDc5LDIzOC4zMjh6IE0xNDkuMDM5LDIzOC4yNjQgICAgYzAuNzkyLTMuNjU1LDQuMDI4LTYuMjYyLDcuNzY4LTYuMjU2aDEyLjU2Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMiAgICBoLTMzLjc2TDE0OS4wMzksMjM4LjI2NHogTTEzNi4wMDcsNDY0LjAwOGgtMzJ2LTI0aDMyVjQ2NC4wMDh6IE0zNzYuMDA3LDQ2NC4wMDhoLTMydi0yNGgzMlY0NjQuMDA4eiBNMzg0LjAwNyw0MTYuMDA4ICAgIGMwLDQuNDE4LTMuNTgyLDgtOCw4aC0yNzJjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LThoMjg4VjQxNi4wMDh6IE0zODQuMDA3LDM5Mi4wMDhoLTI4OHYtNTYuMzEyICAgIGMtMC4wMDYtMi40MzEsMS4xMDMtNC43MywzLjAwOC02LjI0bDI5LjYtMjMuNjhjMC42NDktMC41NTYsMS4yNjktMS4xNDYsMS44NTYtMS43NjhoMjE4LjkyOGMwLjQzMiwwLjQsMC44LDAuOCwxLjI5NiwxLjIgICAgbDMwLjMwNCwyNC4yNGMxLjksMS41MTcsMy4wMDcsMy44MTYsMy4wMDgsNi4yNDhWMzkyLjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xMzIuMDA3LDMyOC4wMDhjLTE1LjQ2NCwwLTI4LDEyLjUzNi0yOCwyOGMwLDE1LjQ2NCwxMi41MzYsMjgsMjgsMjhzMjgtMTIuNTM2LDI4LTI4ICAgIEMxNjAuMDA3LDM0MC41NDQsMTQ3LjQ3MSwzMjguMDA4LDEzMi4wMDcsMzI4LjAwOHogTTEzMi4wMDcsMzY4LjAwOGMtNi42MjcsMC0xMi01LjM3My0xMi0xMmMwLTYuNjI3LDUuMzczLTEyLDEyLTEyICAgIGM2LjYyNywwLDEyLDUuMzczLDEyLDEyQzE0NC4wMDcsMzYyLjYzNSwxMzguNjM0LDM2OC4wMDgsMTMyLjAwNywzNjguMDA4eiIgZmlsbD0iIzAwMDAwMCIvPgoJPC9nPgo8L2c+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTM0OC4wMDcsMzI4LjAwOGMtMTUuNDY0LDAtMjgsMTIuNTM2LTI4LDI4YzAsMTUuNDY0LDEyLjUzNiwyOCwyOCwyOGMxNS40NjQsMCwyOC0xMi41MzYsMjgtMjggICAgQzM3Ni4wMDcsMzQwLjU0NCwzNjMuNDcxLDMyOC4wMDgsMzQ4LjAwNywzMjguMDA4eiBNMzQ4LjAwNywzNjguMDA4Yy02LjYyNywwLTEyLTUuMzczLTEyLTEyYzAtNi42MjcsNS4zNzMtMTIsMTItMTIgICAgYzYuNjI3LDAsMTIsNS4zNzMsMTIsMTJDMzYwLjAwNywzNjIuNjM1LDM1NC42MzQsMzY4LjAwOCwzNDguMDA3LDM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMjg4LjAwNywzMjguMDA4aC05NmMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYyNGMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDk2YzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTI0ICAgIEMzMDQuMDA3LDMzNS4xNzEsMjk2Ljg0NCwzMjguMDA4LDI4OC4wMDcsMzI4LjAwOHogTTI4OC4wMDcsMzY4LjAwOGgtOTZ2LTI0aDk2VjM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNDc1Ljg3MSwxMjlsLTIzMi0xMjhjLTIuNDA1LTEuMzI3LTUuMzIzLTEuMzI3LTcuNzI4LDBsLTIzMiwxMjhjLTMuODcsMi4xMzEtNS4yODEsNi45OTYtMy4xNSwxMC44NjYgICAgYzEuNDA3LDIuNTU2LDQuMDk1LDQuMTQ0LDcuMDEzLDQuMTQyaDh2MzM2aDQ4di0yOTZoMzUydjI5Nmg0OHYtMzM2aDhjNC40MTgsMC4wMDMsOC4wMDMtMy41NzYsOC4wMDYtNy45OTUgICAgQzQ4MC4wMTUsMTMzLjA5NSw0NzguNDI3LDEzMC40MDcsNDc1Ljg3MSwxMjl6IE0yNDAuMDA3LDE3LjE1MmwyMDAuOTM2LDExMC44NTZIMzkuMDcxTDI0MC4wMDcsMTcuMTUyeiBNNDQ4LjAwNyw0NjQuMDA4aC0xNiAgICB2LTI5NmgtMzg0djI5NmgtMTZ2LTMyMGg0MTZWNDY0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xNjguMDA3LDc1LjA2NHY0NC45NDRoNjRWNDMuMDY0TDE2OC4wMDcsNzUuMDY0eiBNMjE2LjAwNywxMDQuMDA4aC0zMlY4NC45NTJsMzItMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0yNDguMDA3LDQzLjA2NHY3Ni45NDRoNjRWNzUuMDY0TDI0OC4wMDcsNDMuMDY0eiBNMjk2LjAwNywxMDQuMDA4aC0zMlY2OC45NTJsMzIsMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K",name:{en:"Garage",de:"Garage",ru:"Гараж",pt:"Garagem",nl:"Garage",fr:"Garage",it:"Box auto",es:"Garaje",pl:"Garaż"},members:[]},type:"enum"}},"enum.functions":{"enum.functions.light":{_id:"enum.functions.light",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==",name:{en:"Light",de:"Licht",ru:"Свет",pt:"Luz",nl:"Licht",fr:"Lumière",it:"Soggiorno",es:"Luz"},members:[]},type:"enum"},"enum.functions.blinds":{_id:"enum.functions.blinds",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0wLDB2NTEyaDUxMlYwSDB6IE00ODIsNDgySDMwVjMwaDQ1MlY0ODJ6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTYwLDYwdjM5MmgzOTJWNjBINjB6IE0yNDEsNDIySDkwVjI3MWgxNTFWNDIyeiBNMjQxLDI0MUg5MFY5MGgxNTFWMjQxeiBNNDIyLDQyMkgyNzFWMjcxaDE1MVY0MjJ6IE00MjIsMjQxSDI3MVY5MGgxNTENCgkJCVYyNDF6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==",name:{en:"Blinds",de:"Rollladen",ru:"Жалюзи",pt:"Cortinas",nl:"blinds",fr:"Stores",it:"blinds",es:"Persianas",pl:"Żaluzje"},members:[]},type:"enum"},"enum.functions.weather":{_id:"enum.functions.weather",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNjAgNjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYwIDYwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBkPSJNNTQuOTQ5LDI4LjI1MWMwLjAxOC0wLjA2OSwwLjAzOS0wLjEzNSwwLjA0Mi0wLjIwN0M1NC45OTIsMjguMDI5LDU1LDI4LjAxNiw1NSwyOEM1NSwxNC41NSw0NC4zMjMsMy41NTMsMzEsMy4wMjVWMQ0KCWMwLTAuNTUzLTAuNDQ4LTEtMS0xcy0xLDAuNDQ3LTEsMXYyLjAyNUMxNS42NzcsMy41NTMsNSwxNC41NSw1LDI4YzAsMC4wMTYsMC4wMDgsMC4wMjksMC4wMDksMC4wNDUNCgljMC4wMDMsMC4wNzEsMC4wMjMsMC4xMzcsMC4wNDIsMC4yMDdjMC4wMTYsMC4wNTksMC4wMjUsMC4xMTgsMC4wNSwwLjE3MmMwLjAyNSwwLjA1MywwLjA2NCwwLjA5NywwLjA5OCwwLjE0NQ0KCWMwLjA0MiwwLjA1OSwwLjA4MSwwLjExOCwwLjEzNSwwLjE2N2MwLjAxMSwwLjAxLDAuMDE2LDAuMDI1LDAuMDI4LDAuMDM1YzAuMDM2LDAuMDMsMC4wOCwwLjA0LDAuMTE4LDAuMDY0DQoJYzAuMDU5LDAuMDM3LDAuMTE1LDAuMDc0LDAuMTgyLDAuMDk4YzAuMDcsMC4wMjYsMC4xNDEsMC4wMzQsMC4yMTMsMC4wNDNDNS45MTgsMjguOTgsNS45NTYsMjksNiwyOQ0KCWMwLjAxNSwwLDAuMDI3LTAuMDA4LDAuMDQyLTAuMDA4YzAuMDc2LTAuMDAzLDAuMTQ3LTAuMDI0LDAuMjItMC4wNDRjMC4wNTQtMC4wMTUsMC4xMDktMC4wMjMsMC4xNTgtMC4wNDcNCgljMC4wNTctMC4wMjYsMC4xMDQtMC4wNjgsMC4xNTYtMC4xMDVjMC4wNTUtMC4wNCwwLjExMS0wLjA3NywwLjE1Ny0wLjEyN2MwLjAxMS0wLjAxMiwwLjAyNi0wLjAxNywwLjAzNy0wLjAzDQoJQzguMTgsMjYuOTM3LDEwLjAzOCwyNiwxMiwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTNjMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzgNCgljMC4wNCwwLjAzMywwLjA4OCwwLjA0NSwwLjEzLDAuMDcxYzAuMDUxLDAuMDMxLDAuMDk4LDAuMDYyLDAuMTUyLDAuMDgyYzAuMDgyLDAuMDMyLDAuMTY0LDAuMDQ1LDAuMjQ5LDAuMDU0DQoJQzE3LjkzLDI4Ljk4MSwxNy45NjQsMjksMTgsMjljMC4wMTYsMCwwLjAzMS0wLjAwNywwLjA0Ni0wLjAwOGMwLjA1MS0wLjAwMiwwLjA5OC0wLjAxNSwwLjE0OC0wLjAyNQ0KCWMwLjA2OS0wLjAxNCwwLjEzNS0wLjAzLDAuMi0wLjA1OWMwLjA1LTAuMDIyLDAuMDk1LTAuMDUsMC4xNDEtMC4wODFjMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1OA0KCWMwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU3LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzUtMC4wNjFDMjAuMTgsMjYuOTM3LDIyLjAzOCwyNiwyNCwyNmMxLjg2LDAsMy42MiwwLjg1LDUsMi4zODZWNTUNCgljMCwxLjY1NC0xLjM0NiwzLTMsM3MtMy0xLjM0Ni0zLTNjMC0wLjU1My0wLjQ0OC0xLTEtMXMtMSwwLjQ0Ny0xLDFjMCwyLjc1NywyLjI0Myw1LDUsNXM1LTIuMjQzLDUtNVYyOC4zODYNCglDMzIuMzgsMjYuODUsMzQuMTQsMjYsMzYsMjZjMS45NjIsMCwzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTMNCgljMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzhjMC4wNCwwLjAzMywwLjA4OCwwLjA0NCwwLjEzLDAuMDdjMC4wNTEsMC4wMzEsMC4wOTgsMC4wNjIsMC4xNTMsMC4wODMNCgljMC4wODEsMC4wMzEsMC4xNjMsMC4wNDUsMC4yNDksMC4wNTRDNDEuOTMsMjguOTgxLDQxLjk2NCwyOSw0MiwyOWMwLjAxNiwwLDAuMDMxLTAuMDA3LDAuMDQ2LTAuMDA4DQoJYzAuMDUxLTAuMDAyLDAuMDk5LTAuMDE1LDAuMTQ5LTAuMDI2YzAuMDY4LTAuMDE0LDAuMTM0LTAuMDMsMC4xOTktMC4wNThjMC4wNTEtMC4wMjIsMC4wOTYtMC4wNTEsMC4xNDItMC4wODENCgljMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1N2MwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU2LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzYtMC4wNjENCglDNDQuMTgsMjYuOTM3LDQ2LjAzOCwyNiw0OCwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMSwwLjAxMiwwLjAyNCwwLjAxNSwwLjAzNSwwLjAyN2MwLjA3LDAuMDc3LDAuMTU0LDAuMTM1LDAuMjQ1LDAuMTg4DQoJYzAuMDMxLDAuMDE4LDAuMDU1LDAuMDQ1LDAuMDg4LDAuMDU5QzUzLjcyMSwyOC45NjcsNTMuODU2LDI5LDU0LDI5aDBoMGMwLjEyMywwLDAuMjQ1LTAuMDI3LDAuMzYxLTAuMDczDQoJYzAuMDQ1LTAuMDE4LDAuMDgyLTAuMDQ3LDAuMTI0LTAuMDcxYzAuMDUxLTAuMDI5LDAuMTA2LTAuMDQ4LDAuMTUyLTAuMDg3YzAuMDEyLTAuMDEsMC4wMTctMC4wMjQsMC4wMjgtMC4wMzUNCgljMC4wNTQtMC4wNDksMC4wOTItMC4xMDcsMC4xMzUtMC4xNjdjMC4wMzQtMC4wNDgsMC4wNzMtMC4wOTMsMC4wOTgtMC4xNDVDNTQuOTI0LDI4LjM2OSw1NC45MzQsMjguMzEsNTQuOTQ5LDI4LjI1MXogTTQ4LDI0DQoJYy0yLjIxOCwwLTQuMzEyLDAuODk1LTYsMi41MzRDNDAuMzEyLDI0Ljg5NSwzOC4yMTgsMjQsMzYsMjRzLTQuMzEyLDAuODk1LTYsMi41MzRDMjguMzEyLDI0Ljg5NSwyNi4yMTgsMjQsMjQsMjQNCglzLTQuMzEyLDAuODk1LTYsMi41MzRDMTYuMzEyLDI0Ljg5NSwxNC4yMTgsMjQsMTIsMjRjLTEuNzUsMC0zLjQxOCwwLjU2Ni00Ljg3NSwxLjYwNUM4LjMyNywxNC4wNDQsMTguMTI3LDUsMzAsNQ0KCXMyMS42NzMsOS4wNDQsMjIuODc1LDIwLjYwNUM1MS40MTgsMjQuNTY2LDQ5Ljc1LDI0LDQ4LDI0eiIvPg0KPC9zdmc+DQo=",name:{en:"Weather",de:"Wetter",ru:"Погода",pt:"Clima",nl:"Weer",fr:"Météo",it:"Tempo metereologico",es:"Clima",pl:"Pogoda"},members:[]},type:"enum"},"enum.functions.heating":{_id:"enum.functions.heating",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0MC4zNzEsMTU5LjI5MWM4LjA1MSwwLDE1LjQwMy0zLjAzNSwyMC45ODMtOC4wMTZINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNWMwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC0zMy43NjMNCgkJYzAuNzY0LTIuNzE2LDEuMTgyLTUuNTc2LDEuMTgyLTguNTMzYzAtMi45NTctMC40MTgtNS44MTYtMS4xODItOC41MzJINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNQ0KCQljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNWgtNDMuMTQ2Yy01LjU4LTQuOTgxLTEyLjkzMi04LjAxNi0yMC45ODMtOC4wMTZjLTYuMTMzLDAtMTEuODU5LDEuNzY1LTE2LjcwNyw0LjgwNQ0KCQljLTEuMzQyLTExLjcxMS0xMS4zMDktMjAuODM3LTIzLjM3My0yMC44MzdoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJoLTE5LjUzDQoJCWMtMy4xMzktOS4zMDgtMTEuOTQ2LTE2LjAzMi0yMi4zLTE2LjAzMmgtMjQuMDQ4Yy0xMC4zNTQsMC0xOS4xNiw2LjcyNC0yMi4zLDE2LjAzMmgtMTkuNTMNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMyaC0yNC4wNDhjLTEwLjM1NCwwLTE5LjE2LDYuNzI0LTIyLjMsMTYuMDMyaC0xOS41Mw0KCQljLTMuMTM5LTkuMzA4LTExLjk0Ni0xNi4wMzItMjIuMy0xNi4wMzJoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJINjkuODgNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMySDIzLjUzMkMxMC41NTcsODAuMTYxLDAsOTAuNzE4LDAsMTAzLjY5M3YzMDQuNjEzYzAsMTIuOTc2LDEwLjU1NywyMy41MzIsMjMuNTMyLDIzLjUzMg0KCQlINDcuNThjMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzJoMTkuNTNjMy4xMzksOS4zMDgsMTEuOTQ2LDE2LjAzMiwyMi4zLDE2LjAzMmgyNC4wNDljMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzINCgkJaDE5LjUzYzMuMTM5LDkuMzA4LDExLjk0NiwxNi4wMzIsMjIuMywxNi4wMzJoMjQuMDQ4YzEwLjM1NCwwLDE5LjE2LTYuNzI0LDIyLjMtMTYuMDMyaDE5LjUzDQoJCWMzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyaDI0LjA0OGMxMC4zNTQsMCwxOS4xNi02LjcyNCwyMi4zLTE2LjAzMmgxOS41M2MzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyDQoJCWgyNC4wNDljMTIuOTc2LDAsMjMuNTMyLTEwLjU1NywyMy41MzItMjMuNTMydi0wLjUxNkg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N3YtMTcuMDY1DQoJCUg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N1YxNTQuNTg3QzQyOC42MzcsMTU3LjU2Niw0MzQuMzA2LDE1OS4yOTEsNDQwLjM3MSwxNTkuMjkxeg0KCQkgTTQ0MC4zNzEsMTExLjE5M2M5LjEyNSwwLDE2LjU0OCw3LjQyMywxNi41NDgsMTYuNTQ4cy03LjQyMywxNi41NDktMTYuNTQ4LDE2LjU0OXMtMTYuNTQ4LTcuNDI0LTE2LjU0OC0xNi41NDkNCgkJUzQzMS4yNDYsMTExLjE5Myw0NDAuMzcxLDExMS4xOTN6IE02My42MTMsMzM2LjY3NmMtNC4xNDIsMC03LjUsMy4zNTgtNy41LDcuNXY2NC4xM2MwLDQuNzA1LTMuODI4LDguNTMzLTguNTMyLDguNTMzSDIzLjUzMg0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMySDQ3LjU4YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWMzEyLjExDQoJCWMwLDQuMTQyLDMuMzU4LDcuNSw3LjUsNy41YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMTU5LjI5aDE3LjA2NHYxOTMuNDE5SDcxLjExM3YtOC41MzMNCgkJQzcxLjExMywzNDAuMDM0LDY3Ljc1NSwzMzYuNjc2LDYzLjYxMywzMzYuNjc2eiBNODguMTc3LDQwMC44MDZINzEuMTEzdi0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE04OC4xNzcsMTQ0LjI5SDcxLjExM3YtMzMuMDk3DQoJCWgxNy4wNjRWMTQ0LjI5eiBNMTQ0LjI5LDQwOC4zMDZjMC4wMDEsNC43MDUtMy44MjcsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OWMtNC43MDUsMC04LjUzMi0zLjgyOC04LjUzMi04LjUzMlYxMDMuNjkzDQoJCWMwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OWM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6IE0xNzYuMzU1LDQwMC44MDZoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NA0KCQlWNDAwLjgwNnogTTE3Ni4zNTUsMzUyLjcxaC0xNy4wNjRWMTU5LjI5MWgxNy4wNjRWMzUyLjcxeiBNMTc2LjM1NSwxNDQuMjkxaC0xNy4wNjR2LTMzLjA5N2gxNy4wNjRWMTQ0LjI5MXogTTIzMi40NjgsNDA4LjMwNg0KCQljMCw0LjcwNS0zLjgyOCw4LjUzMy04LjUzMiw4LjUzM2gtMjQuMDQ4Yy00LjcwNSwwLTguNTMyLTMuODI4LTguNTMyLTguNTMyVjEwMy42OTNjMC00LjcwNSwzLjgyOC04LjUzMiw4LjUzMi04LjUzMmgyNC4wNDgNCgkJYzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwNnogTTI2NC41MzIsNDAwLjgwNmgtMTcuMDY0di0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE0yNjQuNTMyLDM1Mi43MWgtMTcuMDY0VjE1OS4yOTENCgkJaDE3LjA2NFYzNTIuNzF6IE0yNjQuNTMyLDE0NC4yOTFoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NFYxNDQuMjkxeiBNMzIwLjY0NSw0MDguMzA2YzAsNC43MDUtMy44MjgsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OA0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OGM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6DQoJCSBNMzM1LjY0NSwxMTEuMTkzaDE3LjA2NHYzMy4wOTdoLTE3LjA2NFYxMTEuMTkzeiBNMzUyLjcwOSw0MDAuODA3aC0xNy4wNjRWMzY3LjcxaDE3LjA2NFY0MDAuODA3eiBNNDA4LjgyMyw0MDguMzA3DQoJCWMwLDQuNzA1LTMuODI4LDguNTMyLTguNTMyLDguNTMyaC0yNC4wNDljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTk5Ljg5YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjUNCgkJYy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djE1Mi44MmgtMTcuMDY0VjE1OS4yOTFoMTcuMDY0djguNTMzYzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtNjQuMTMNCgkJYzAtNC43MDUsMy44MjgtOC41MzIsOC41MzItOC41MzJoMjQuMDQ5YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwN3oiLz4NCjwvZz4NCjwvc3ZnPg0K",name:{en:"Heating",de:"Heizung",ru:"Отопление",pt:"Aquecimento",nl:"Verwarming",fr:"Chauffage",it:"Riscaldamento",es:"Calefacción",pl:"Ogrzewanie"},members:[]},type:"enum"},"enum.functions.backlight":{_id:"enum.functions.backlight",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTExLjk5MSA1MTEuOTkxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTEuOTkxIDUxMS45OTE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik05MS40OSwzMzYuNTcybC0yMS4zMzMsNDIuNjY3Yy0yLjYyNCw1LjI2OS0wLjQ5MSwxMS42NjksNC43NzksMTQuMzE1YzEuNTM2LDAuNzQ3LDMuMTU3LDEuMTA5LDQuNzU3LDEuMTA5DQoJCWMzLjkwNCwwLDcuNjU5LTIuMTc2LDkuNTM2LTUuODg4bDIxLjMzMy00Mi42NjdjMi42NDUtNS4yNjksMC41MTItMTEuNjY5LTQuNzU3LTE0LjMxNQ0KCQlDMTAwLjU1NywzMjkuMTY5LDk0LjE1NywzMzEuMzI0LDkxLjQ5LDMzNi41NzJ6Ii8+DQoJPHBhdGggZD0iTTUwNy41NTQsMTgzLjM1NmMtMi43NzMtMi4wMjctNi4zMzYtMi41MzktOS42LTEuNDkzbC00OS40MDgsMTYuNDY5Yy0xMy4wOTksNC4zNzMtMjEuODg4LDE2LjU3Ni0yMS44ODgsMzAuMzc5djM2Ljg4NQ0KCQljLTI0LjMyLTQuOTQ5LTQyLjY2Ny0yNi40OTYtNDIuNjY3LTUyLjI0NXYtODUuMzMzYzAtMzEuMjMyLTEyLjEzOS02MC43MTUtMzQuMzA0LTgzLjExNQ0KCQljLTIyLjMxNS0yMi4xMDEtNTEuNzk3LTM0LjI0LTgzLjAyOS0zNC4yNGMtNjQuNjgzLDAtMTE3LjMzMyw1Mi42NTEtMTE3LjMzMywxMTcuMzMzdjUzLjMzM2gtMzJjLTE3LjY0MywwLTMyLDE0LjM1Ny0zMiwzMg0KCQl2NDAuMTQ5TDEuMTIyLDQyMS45MDVjLTEuNjQzLDMuMzA3LTEuNDcyLDcuMjMyLDAuNDQ4LDEwLjM2OGMxLjk2MywzLjEzNiw1LjM5Nyw1LjA1Niw5LjA4OCw1LjA1Nmg3NS43NTUNCgkJYzUuMjI3LDM2LjA5NiwzNi4wNzUsNjQsNzMuNTc5LDY0czY4LjM1Mi0yNy45MDQsNzMuNTc5LTY0aDc1Ljc1NWMwLjE0OSwwLDAuMzIsMC4wMjEsMC40MjcsMA0KCQljNS44ODgsMCwxMC42NjctNC43NzksMTAuNjY3LTEwLjY2N2MwLTIuNzUyLTEuMDI0LTUuMjQ4LTIuNzMxLTcuMTI1bC04My4wMjktMTY2LjA1OXYtNDAuMTQ5YzAtMTcuNjQzLTE0LjM1Ny0zMi0zMi0zMmgtMzINCgkJdi01My4zMzNjMC01Mi45MjgsNDMuMDcyLTk2LDk2LTk2YzI1LjU1NywwLDQ5LjcyOCw5Ljk2Myw2Ny45NDcsMjcuOTg5YzE4LjA5MSwxOC4yODMsMjguMDUzLDQyLjQ1MywyOC4wNTMsNjguMDExdjg1LjMzMw0KCQljMCwzNy41MDQsMjcuOTA0LDY4LjM1Miw2NCw3My41Nzl2MzkuMDRjMCwxMy43ODEsOC43ODksMjYuMDA1LDIxLjg2NywzMC4zNTdsNDkuNDA4LDE2LjQ2OQ0KCQljMS4xMzEsMC4zNjMsMi4yNjEsMC41NTUsMy4zOTIsMC41NTVjMi4yMTksMCw0LjM5NS0wLjY4Myw2LjIyOS0yLjAyN2MyLjc5NS0xLjk4NCw0LjQzNy01LjIwNSw0LjQzNy04LjY0VjE5MS45OTYNCgkJQzUxMS45OTEsMTg4LjU2MSw1MTAuMzQ5LDE4NS4zNCw1MDcuNTU0LDE4My4zNTZ6IE0xNTkuOTkxLDQ3OS45OTZjLTI1Ljc0OSwwLTQ3LjMxNy0xOC4zNDctNTIuMjY3LTQyLjY2N2gxMDQuNTMzDQoJCUMyMDcuMzA5LDQ2MS42NDksMTg1Ljc0MSw0NzkuOTk2LDE1OS45OTEsNDc5Ljk5NnogTTI5Mi4wODcsNDE1Ljk5NmgtNjguMDk2aC0xMjhIMjcuOTE3bDc0LjY2Ny0xNDkuMzMzaDExNC44MzcNCgkJTDI5Mi4wODcsNDE1Ljk5NnogTTIwMi42NTgsMjAyLjY2MmM1Ljg2NywwLDEwLjY2Nyw0LjgsMTAuNjY3LDEwLjY2N3YzMkgxMDYuNjU4di0zMmMwLTUuODY3LDQuOC0xMC42NjcsMTAuNjY3LTEwLjY2N0gyMDIuNjU4eg0KCQkgTTQ5MC42NTgsMzQ3Ljg3OGwtMzUuMzcxLTExLjgxOWMtNC4zNzMtMS40MjktNy4yOTYtNS41MDQtNy4yOTYtMTAuMTEydi05Ny4yNTljMC00LjYwOCwyLjkyMy04LjY2MSw3LjI5Ni0xMC4xMTINCgkJbDM1LjM3MS0xMS43OTdWMzQ3Ljg3OHoiLz4NCjwvZz4NCjwvc3ZnPg0K",name:{en:"Backlight",de:"Hintergrundbeleuchtung",ru:"Подсветка",pt:"Luz de fundo",nl:"Backlight",fr:"Rétro-éclairage",it:"Controluce",es:"Iluminar desde el fondo",pl:"Podświetlenie"},members:[]},type:"enum"},"enum.functions.household":{_id:"enum.functions.household",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==",name:{en:"Household",de:"Haushalt",ru:"Домашнее хозяйство",pt:"Casa",nl:"Huishouden",fr:"Ménage",it:"Domestico",es:"Casa",pl:"Gospodarstwo domowe"},members:[]},type:"enum"},"enum.functions.audio":{_id:"enum.functions.audio",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDc3LjIxNiA0NzcuMjE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzcuMjE2IDQ3Ny4yMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik00NTMuODU4LDEwNS4xMTZ2LTkxLjZjMC00LjMtMi4xLTguNC01LjUtMTAuOWMtMy41LTIuNS04LTMuMy0xMi4xLTJsLTI3Mi45LDg2LjdjLTUuNiwxLjgtOS40LDctOS40LDEyLjl2OTEuN3YwLjF2MTc1LjMNCgkJYy0xNC4zLTkuOS0zMi42LTE1LjMtNTEuOC0xNS4zYy0yMC4zLDAtMzkuNiw2LjEtNTQuMywxNy4xYy0xNS44LDExLjktMjQuNSwyOC0yNC41LDQ1LjVzOC43LDMzLjYsMjQuNSw0NS41DQoJCWMxNC43LDExLDMzLjksMTcuMSw1NC4zLDE3LjFzMzkuNi02LjEsNTQuMy0xNy4xYzE1LjgtMTEuOSwyNC41LTI4LDI0LjUtNDUuNXYtMjEyLjhsMjQ1LjktNzguMnYxNTYuNg0KCQljLTE0LjMtOS45LTMyLjYtMTUuMy01MS44LTE1LjNjLTIwLjMsMC0zOS42LDYuMS01NC4zLDE3LjFjLTE1LjgsMTEuOS0yNC41LDI4LTI0LjUsNDUuNXM4LjcsMzMuNiwyNC41LDQ1LjUNCgkJYzE0LjcsMTEsMzMuOSwxNy4xLDU0LjMsMTcuMXMzOS42LTYuMSw1NC4zLTE3LjFjMTUuOC0xMS45LDI0LjUtMjgsMjQuNS00NS41di0yMjIuMw0KCQlDNDUzLjg1OCwxMDUuMTE2LDQ1My44NTgsMTA1LjExNiw0NTMuODU4LDEwNS4xMTZ6IE0xMDIuMTU4LDQ1MC4yMTZjLTI4LjEsMC01MS44LTE2LjMtNTEuOC0zNS42YzAtMTkuMywyMy43LTM1LjYsNTEuOC0zNS42DQoJCXM1MS44LDE2LjMsNTEuOCwzNS42QzE1My45NTgsNDM0LjAxNiwxMzAuMjU4LDQ1MC4yMTYsMTAyLjE1OCw0NTAuMjE2eiBNMTgwLjk1OCwxNzMuNDE2di02My40bDI0NS45LTc4LjF2NjMuNEwxODAuOTU4LDE3My40MTZ6DQoJCSBNMzc1LjE1OCwzNjMuMTE2Yy0yOC4xLDAtNTEuOC0xNi4zLTUxLjgtMzUuNmMwLTE5LjMsMjMuNy0zNS42LDUxLjgtMzUuNnM1MS44LDE2LjMsNTEuOCwzNS42DQoJCUM0MjYuODU4LDM0Ni44MTYsNDAzLjE1OCwzNjMuMTE2LDM3NS4xNTgsMzYzLjExNnoiLz4NCjwvZz4NCjwvc3ZnPg0K",name:{en:"Audio/Music",de:"Audio/Musik",ru:"Аудио/Музыка",pt:"Áudio/Música",nl:"Audio/Muziek",fr:"Audio/Musique",it:"Audio/Musica",es:"Audio/Música",pl:"Audio/Muzyka"},members:[]},type:"enum"},"enum.functions.security":{_id:"enum.functions.security",common:{icon:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTI1Niw0MC4wMWMtNS41MzgsMC05Ljk5LDQuNDYtOS45OSw5Ljk5YzAsNS4xNDcsMy44NzIsOS40Myw4Ljk5LDkuOTM4YzUuOTI1LDAuNTg4LDEwLjk5LTQuMDI3LDEwLjk5LTkuOTM4DQoJCUMyNjUuOTksNDQuNDYyLDI2MS41Myw0MC4wMSwyNTYsNDAuMDF6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDU2LDYwYy0yNy41NywwLTUwLTIyLjQzLTUwLTUwYzAtNS41MjItNC40NzgtMTAtMTAtMTBIMTE2Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwYzAsMjcuNTctMjIuNDMsNTAtNTAsNTANCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjE2My4xOWMwLDEyNy4xNzcsODIuODk1LDI0MS4xMzUsMjA3LjEyOCwyNzguMzg5YzAuOTM3LDAuMjgsMS45MDQsMC40MjEsMi44NzIsMC40MjENCgkJYzAuOTY4LDAsMS45MzctMC4xNDEsMi44NzMtMC40MjJDMzgwLjQxNSw0NzUuMTE5LDQ2NiwzNjMuMTQ5LDQ2NiwyMzMuMTlWNzBDNDY2LDY0LjQ3OCw0NjEuNTIyLDYwLDQ1Niw2MHogTTQ0NiwyMzMuMTkNCgkJYzAsMTE5LjQ0OC03Ni4yMjEsMjIyLjg5Mi0xOTAsMjU4LjM1M0MxNDMuMTI4LDQ1Ni4zNjUsNjYsMzUxLjk4NCw2NiwyMzMuMTlWNzkuMjg4Qzk2LjYxMSw3NC44OSwxMjAuODksNTAuNjExLDEyNS4yODgsMjANCgkJaDI2MS40MjRDMzkxLjExLDUwLjYxMSw0MTUuMzg5LDc0Ljg5LDQ0Niw3OS4yODhWMjMzLjE5eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQyMC4wMTIsOTIuNDljLTIwLjg1NC05LjEzMy0zNy4zNjktMjUuNjQ4LTQ2LjUwMi00Ni41MDJDMzcxLjkxNiw0Mi4zNSwzNjguMzIyLDQwLDM2NC4zNSw0MGgtNjguMzcNCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwczQuNDc4LDEwLDEwLDEwaDYyLjA0N2MxMC41NjUsMjAuNjgxLDI3LjI5MiwzNy40MDcsNDcuOTczLDQ3Ljk3M1YyMzMuMTkNCgkJYzAsOTcuODYzLTU4Ljc0OSwxODIuMzAzLTE1MCwyMTYuMTA0Yy05MS4yNTEtMzMuODAyLTE1MC0xMTguMjQxLTE1MC0yMTYuMTA0VjEwNy45NzNDMTI2LjY4MSw5Ny40MDcsMTQzLjQwNyw4MC42ODEsMTUzLjk3Myw2MA0KCQloNjIuMDQ3YzUuNTIyLDAsMTAtNC40NzgsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC02OC4zN2MtMy45NzIsMC03LjU2NiwyLjM1MS05LjE2LDUuOTg4DQoJCWMtOS4xMzMsMjAuODU0LTI1LjY0OCwzNy4zNjktNDYuNTAyLDQ2LjUwMkM4OC4zNTEsOTQuMDg0LDg2LDk3LjY3OSw4NiwxMDEuNjV2MTMxLjU0YzAsMTA3LjIxMyw2Ni4zMTEsMjAwLjY1MywxNjYuNjY0LDIzNi4xNjYNCgkJYzEuMDc5LDAuMzgyLDIuMjA3LDAuNTczLDMuMzM2LDAuNTczYzEuMTI5LDAsMi4yNTctMC4xOTEsMy4zMzYtMC41NzNDMzU5LjYwNSw0MzMuODczLDQyNiwzNDAuNDksNDI2LDIzMy4xOVYxMDEuNjUNCgkJQzQyNiw5Ny42NzgsNDIzLjY0OSw5NC4wODQsNDIwLjAxMiw5Mi40OXoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yNTYsMTQ2Yy00OS42MjYsMC05MCw0MC4zNzQtOTAsOTBjMCw0OS42MjYsNDAuMzc0LDkwLDkwLDkwYzQ5LjYyNiwwLDkwLTQwLjM3NCw5MC05MEMzNDYsMTg2LjM3NCwzMDUuNjI2LDE0NiwyNTYsMTQ2eg0KCQkgTTI1NiwzMDZjLTM4LjU5OCwwLTcwLTMxLjQwMi03MC03MGMwLTM4LjU5OCwzMS40MDItNzAsNzAtNzBjMzguNTk4LDAsNzAsMzEuNDAyLDcwLDcwQzMyNiwyNzQuNTk4LDI5NC41OTgsMzA2LDI1NiwzMDZ6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMzAzLjA3MSwyMDguOTI4Yy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBMMjQ2LDI1MS44NTdsLTEyLjkyOS0xMi45MjhjLTMuOTA2LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMsMA0KCQljLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMCwyMEMyNDAuODgyLDI3NS4wMjMsMjQzLjQ0LDI3NiwyNDYsMjc2czUuMTE4LTAuOTc3LDcuMDcxLTIuOTI5bDUwLTUwDQoJCUMzMDYuOTc2LDIxOS4xNjYsMzA2Ljk3NiwyMTIuODM0LDMwMy4wNzEsMjA4LjkyOHoiLz4NCjwvZz4NCg0KPC9zdmc+DQo=",name:{en:"Security",de:"Sicherheit",ru:"Безопасность",pt:"Segurança",nl:"Veiligheid",fr:"Sécurité",it:"Sicurezza",es:"Seguridad",pl:"Bezpieczeństwo"},members:[]},type:"enum"}}},o=function(){if(m.$grid&&m.$grid.selectId)return o=m.$grid.selectId.bind(m.$grid),m.$grid.selectId.apply(m.$grid,arguments)};function g(e,t,a,i){if(c.length){var n=c.shift();"delObject"===n.name?m.main.socket.emit(n.name,n.id,function(){setTimeout(function(){g(void 0,void 0,void 0,i)},0)}):m.main.socket.emit(n.name,n.id,n.obj,function(){setTimeout(function(){g(void 0,void 0,void 0,i)},0)})}else!function n(s,o,r,l){if(s!==o&&m.main.objects[o])b(_("Name yet exists!"),!0),m.init(!0),l&&l();else if(s===o)!r||void 0===r.name&&void 0===r.icon&&void 0===r.color||c.push({name:"extendObject",id:s,obj:{common:r}}),l&&l();else if(m.main.objects[s]&&m.main.objects[s].common&&m.main.objects[s].common.nondeletable)b(_('Change of enum\'s id "%s" is not allowed!',s),!0),m.init(!0),l&&l();else{for(var e=s.length+1,d=[],t=0;t<m.list.length;t++)m.list[t].substring(0,e)===s+"."&&d.push(m.list[t]);m.main.socket.emit("getObject",s,function(e,i){setTimeout(function(){if(i){i._id=o,i._rev&&delete i._rev,r&&void 0!==r.name&&(i.common.name=r.name),r&&void 0!==r.icon&&(i.common.icon=r.icon),r&&void 0!==r.color&&(i.common.color=r.color),c.push({name:"delObject",id:s}),c.push({name:"setObject",id:o,obj:i});for(var e=0,t=0;t<d.length;t++){var a=d[t].replace(s+".",o+".");e++,n(d[t],a,null,function(){!--e&&l&&l()})}!d.length&&l&&l()}},0)})}}(e,t,a,function(){c.length?g(void 0,void 0,void 0,i):i&&i()})}function f(e){var t,a="";if(e){var i=e.replace(/[.#\\\/&?]+/g,"-");if(s[e])for(t in s[e])s[e].hasOwnProperty(t)&&-1===m.list.indexOf(t)&&(a+='<li class="new-group-item" data-id="'+t+'" data-enum="'+e+'"><a>'+m.main.getIconFromObj(s[e][t])+h(s[e][t])+"</a></li>");a&&(a+='<li class="divider"></li>'),a+='<li class="new-group-item" data-enum="'+e+'"><a><i class="material-icons">control_point</i><span>'+_("custom group")+"</span></a></li>",m.$gridEnum.find("#btn-new-group-"+i).html(a),m.$gridEnum.find('.btn-new-group-btn[data-target="btn-new-group-'+i+'"]').dropdown({constrainWidth:!1}),m.$gridEnum.find("#btn-new-group-"+i).find(".new-group-item").off("click").on("click",function(){var e=$(this).data("id"),t=$(this).data("enum");if(e){var a=t.replace(/[.#\\\/&?]+/g,"-");m.main.saveConfig("enums-active","enum-"+a),m.main.socket.emit("setObject",e,s[t][e],function(e){e&&m.main.showError(e)})}else v(null,t)})}else{for(t in n)n.hasOwnProperty(t)&&-1===m.list.indexOf(t)&&(a+='<li class="new-enum-item" data-id="'+t+'"><a>'+m.main.getIconFromObj(n[t])+h(n[t])+"</a></li>");a&&(a+='<li class="divider"></li>'),a+='<li class="new-enum-item"><a><i class="material-icons">control_point</i><span>'+_("custom enum")+"</span></a></li>",m.$gridEnum.find("#btn-new-enum").html(a),m.$gridEnum.find(".btn-new-enum-btn").dropdown({constrainWidth:!1}),m.$gridEnum.find(".new-enum-item").off("click").on("click",function(){var e=$(this).data("id");if(e){var t=e.replace(/[.#\\\/&?]+/g,"-");m.main.saveConfig("enums-active","enum-"+t),m.main.socket.emit("setObject",e,n[e],function(e){e&&m.main.showError(e)})}else v(null)})}}function h(e,t){var a;(a=t?e[t]:e)&&a.common&&a.common.name?a=translateName(a.common.name):a=(a=t.split(".").pop())[0].toUpperCase()+a.substring(1).toLowerCase();return a}function r(e,t,a){var i,n,s,o=m.main.objects[e],r=e.replace(/[.#\\\/&?]+/g,"-"),l='<div class="row enum-buttons" data-id="'+e+'"> <div class="col s12 "> <a class="btn-floating waves-effect waves-light blue btn-small dropdown-trigger btn-new-group-btn" title="'+_("New enum")+'" data-target="btn-new-group-'+r+'"><i class="material-icons">library_add</i></a> <ul id="btn-new-group-'+r+'" class="dropdown-content" data-id="'+e+'"></ul> <a class="btn-floating waves-effect waves-light btn-small btn-edit-category" title="'+_("Edit category")+'" data-id="'+e+'"> <i class="material-icons">edit</i> </a> <a class="btn-floating waves-effect btn-small waves-light red lighten-2 btn-del-category '+(o&&o.common&&(o.common.dontDelete||o.common["object-non-deletable"])?"disabled":"")+'" title="'+_("Delete category")+'" data-id="'+e+'"> <i class="material-icons">delete</i> </a> <div class="input-field"><input type="text" class="filter-input autocomplete" placeholder="'+_("Filter")+'"><label></label>\n <a class="filter-clear btn-floating btn-very-small red lighten-3" title="'+_("clear")+'"><i class="material-icons">clear</i></a></div>\n </div></div>';l+='<div class="row enum-body"><div class="col s12 enum-collection" data-id="'+e+'"><ul class="collection">';for(var d=0;d<m.list.length;d++)if(m.list[d].substring(0,e.length+1)===e+"."){var c=m.main.objects[m.list[d]],u="";if(c&&c.common&&c.common.color&&(u="background: "+c.common.color+"; ",m.main.invertColor(c.common.color)&&(!0,u+="color: white;")),l+='<li class="collection-item avatar" data-id="'+m.list[d]+'" style="'+u+'">'+m.main.getIcon(m.list[d],null,null,"icon")+'<span class="title">'+h(m.main.objects,m.list[d])+"</span><p>"+m.list[d]+"</p><br>",c&&c.common&&c.common.members&&c.common.members.length)for(var p=0;p<c.common.members.length;p++)l+=(i=c.common.members[p],n=m.list[d],s=void 0,s="",s+='<div class="chip" title="'+i+'">'+m.main.getIcon(i)+'<span><span class="chip-name">'+h(m.main.objects,i)+'</span></span><i class="close material-icons" data-enum="'+n+'" data-id="'+i+'">close</i></div>');l+='<a class="edit-content" data-id="'+m.list[d]+'"><i class="material-icons">edit</i></a>',l+='<a class="delete-content '+(c&&c.common&&(c.common.dontDelete||c.common["object-non-deletable"])?"disabled":"")+'" data-id="'+m.list[d]+'"><i class="material-icons">delete</i></a>',l+="</li>"}l+="</ul></div></div>",t.html(l),f(e),a&&t.find(".enum-collection").scrollTop(a),function(a){for(var e=m.$gridList.find('.enum-buttons[data-id="'+a+'"] .filter-input'),t={},i=0;i<m.list.length;i++){var n=m.list[i];if(n.substring(0,a.length+1)===a+"."){var s=h(m.main.objects,n),o=null;m.main.objects[n]&&m.main.objects[n].common&&m.main.objects[n].common.icon&&(o=m.main.objects[n].common.icon),t[s]=o}}var r=m.$gridList.find('.enum-buttons[data-id="'+a+'"] .filter-clear');e.mautocomplete({data:t,minLength:0,limit:10}).on("change",function(){var i,n,e,t=$(this).val();i=a,n=t,e=m.$gridList.find('.enum-collection[data-id="'+i+'"] .collection-item'),n?(n=n.toLowerCase(),e.each(function(){var e=$(this),t=e.data("id"),a=h(m.main.objects,t);-1!==a.toLowerCase().indexOf(n)?e.show():-1!==t.substring(i.length).toLowerCase().indexOf(n)?e.show():e.hide()})):e.show(),$(this).val()?r.show():r.hide(),m.main.saveConfig("filter-"+a,t)}).on("keyup",function(){$(this).trigger("change")}),r.off("click").on("click",function(){e.val("").trigger("change")}),m.main.config["filter-"+a]?e.val(m.main.config["filter-"+a]).trigger("change"):r.hide()}(e)}function a(){var e=m.$gridList.find(".tree-table-body");m.$gridList.removeClass("tree-table-list").addClass("tree-table-tiles"),m.$gridList.find(".tree-table-buttons").remove(),m.$gridList.prepend('<div class="row tree-table-buttons">\n <a class="btn-floating btn-small translateT btn-switch-tiles" title="'+_("change view mode")+'"><i class="material-icons">view_list</i></a>\n <a class="btn-floating waves-effect waves-light btn-small blue dropdown-trigger btn-new-enum-btn translationT" title="'+_("New enum")+'" data-target="btn-new-enum"><i class="material-icons">note_add</i></a>\n <ul id="btn-new-enum" class="dropdown-content"></ul>\n <a class="btn-floating waves-effect waves-light blue btn-small btn-edit translateT" title="'+_("Edit")+'" id="tab-enums-list-edit">\n <i class="material-icons">queue_play_next</i>\n </a>\n </div>');var t='<div class="col s12 cron-main-tab">';t+='<ul class="tabs">';for(var a=0;a<m.list.length;a++)if(2===m.list[a].split(".").length){var i=h(m.main.objects,m.list[a]);t+='<li class="tab col"><a href="#enum-'+encodeURIComponent(m.list[a]).replace(/[.%]/g,"-")+'">'+m.main.getIcon(m.list[a])+'<span class="name">'+i+"</span></a></li>"}t+="</ul>",t+="</div>";for(var n=0;n<m.list.length;n++)2===m.list[n].split(".").length&&(t+='<div id="enum-'+encodeURIComponent(m.list[n]).replace(/[.%]/g,"-")+'" class="col s12 page" data-id="'+m.list[n]+'" data-type="second">',t+="</div>");var s={};e.find(".enum-collection").each(function(){s[$(this).data("id")]=$(this).scrollTop()});try{var o=m.$gridEnum.find(".tree-table-body .collection").find(".collection-item");try{o.droppable("instance")&&o.droppable("destroy")}catch(a){console.error(a)}}catch(a){}e.html(t),0<e.find(".tabs li").length&&(e.find(".tabs").mtabs({onShow:function(e){m.main.saveConfig("enums-active",$(e).attr("id"))}}),m.main.config["enums-active"]&&!m.main.noSelect&&e.find(".tabs").mtabs("select",m.main.config["enums-active"])),e.find(".page").each(function(){r($(this).data("id"),$(this),s[$(this).data("id")])}),e.find(".btn-new-category").on("click",function(){v(null,$(this).data("id"))}),e.find(".btn-edit-category").on("click",function(){v($(this).data("id"))}),e.find(".btn-del-category").on("click",function(){d($(this).data("id"))}),e.find(".edit-content").on("click",function(){v($(this).data("id"))}),e.find(".delete-content").on("click",function(){d($(this).data("id"))}),e.find(".close").on("click",function(){u($(this).data("id"),$(this).data("enum"))}),m.$gridList.find(".btn-edit").off("click").on("click",function(){w(!m.editMode)}),m.$gridList.find(".btn-switch-tiles").off("click").on("click",function(){m.isTiles=!1,m.main.saveConfig("enumIsTiles",m.isTiles),setTimeout(function(){l()},50)}),f(),y(m.$gridEnum.find(".tree-table-body .collection"))}function l(){try{var e=m.$gridEnum.find(".tree-table-main").find("tbody>tr.treetable-enum");e.droppable("instance")&&e.droppable("destroy")}catch(e){console.log(e)}m.$gridList.html("").removeClass("tree-table-tiles").addClass("tree-table-list"),m.$gridList.treeTable({objects:m.main.objects,root:"enum",columns:["title","name"],members:!0,colors:!0,icons:!0,widths:["calc(100% - 250px)","250px"],name:"enums",buttonsWidth:"40px",buttons:[{text:!1,icons:{primary:"ui-icon-trash"},click:function(t,e,a){m.main.objects[t]?"enum"===m.main.objects[t].type?e?m.main.confirmMessage(_("All sub-enums of %s will be deleted too?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):m.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):u(t,a):m.main.objects[a]&&"enum"===m.main.objects[a].type?u(t,a):b(_('Object "<b>%s</b>" does not exists. Update the page.',t))},width:26,height:20},{text:!1,icons:{primary:"ui-icon-pencil"},match:function(e){return m.main.objects[e]&&"enum"===m.main.objects[e].type},click:function(e,t,a){v(e)},width:26,height:20}],panelButtons:[{id:"tab-enums-btn-switch-tiles",title:_("change view mode"),icon:"view_module",click:function(){m.isTiles=!0,m.main.saveConfig("enumIsTiles",m.isTiles),setTimeout(function(){a()},50)}},{id:"tab-enums-list-new-enum",title:_("New enum"),icon:"note_add",click:function(){v(null)}},{id:"tab-enums-list-new-category",title:_("New category"),icon:"library_add",click:function(){v(null,m.enumEdit)}},{id:"tab-enums-list-edit",title:_("Edit"),icon:"edit",click:function(){w(!m.editMode)}}],onChange:function(e,t){if(e!==t){m.enumEdit=e;var a=m.main.objects[e];if(a&&"enum"===a.type)$("#tab-enums-list-new-enum").removeClass("disabled").attr("title",_("Create new enum, like %s","enum.newCategory")),2===e.split(".").length?m.$gridList.find("#tab-enums-list-new-category").removeClass("disabled").attr("title",_("Create new category, like %s",e+".newEnum")):m.$gridList.find("#tab-enums-list-new-category").addClass("disabled");else m.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),m.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}},onReady:p}),m.$gridList.find(".tree-table-buttons a").addClass("btn-small"),m.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),m.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}function d(t){if("enum"===m.main.objects[t].type){var e=function(e){for(var t=e.split("."),a=[],i=new RegExp("^"+e.replace(/\./g,"\\.")+"\\."),n=0;n<m.list.length;n++)m.list[n].split(".").length===t.length+1&&i.test(m.list[n])&&a.push(m.list[n]);return a}(t);e&&e.length?m.main.confirmMessage(_("All sub-enums of %s will be deleted too?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):m.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})})}}function u(i,e){m.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var a=t.common.members.indexOf(i);-1!==a?(t.common.members.splice(a,1),m.main.socket.emit("setObject",t._id,t,function(e){e?b(_("Error: %s",e),!0):b(_("Removed"))})):b(_("%s is not in the list"))}})}function i(a,e){m.main.socket.emit("getObject",e,function(e,t){t&&t.common&&(t.common.members=t.common.members||[],-1===t.common.members.indexOf(a)?(t.common.members.push(a),t.common.members.sort(),m.main.socket.emit("setObject",t._id,t,function(e){e?b(_("Error: %s",e),!0):b(_("%s added to %s",a,t._id))})):b(_("Is yet in the list")))})}function b(e,t,a){"boolean"==typeof t&&(a=t,t=3e3),m.main.showToast(m.$gridEnum.find(".tree-table-buttons"),e,null,t,a)}function p(e){m.editMode&&(e||(e=m.$gridEnum.find(".tree-table-main")),e.find("tbody>tr.treetable-enum").droppable({accept:".fancytree-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var a;$(this).data("tt-id");(a=$(this).data("timer"))&&clearTimeout(a),$(this).data("timer",setTimeout(function(){m.$gridList.treeTable("expand",$(this).data("tt-id"))},1e3))}},out:function(e,t){var a;$(this).removeClass("tab-accept-item"),(a=$(this).data("timer"))&&(clearTimeout(a),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("tt-id"))}}))}function y(e){if(m.editMode){var t=(e=e||m.$gridEnum.find(".tree-table-body .collection")).find(".collection-item");try{t.droppable("instance")&&t.droppable("destroy")}catch(e){console.error(e)}t.droppable({accept:".fancytree-type-draggable",over:function(e,t){$(this).addClass("tab-accept-item")},out:function(e,t){$(this).removeClass("tab-accept-item")},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("id"))}})}}function v(e,n){var i=!1,s=m.$gridEnum.find("#tab-enums-dialog-new"),o="",t="",a="",r="",l="",d="",c=!0;if(installFileUpload(s,5e4,function(e,t){if(e)b(e,!0);else{if(!t.match(/^data:image\//))return void b(_("Unsupported image format"),!0);s.find(".tab-enums-dialog-create").removeClass("disabled"),l=t,s.find(".tab-enums-dialog-new-icon").show().html('<img class="" />'),s.find(".tab-enums-dialog-new-icon img").attr("src",t),s.find(".tab-enums-dialog-new-icon-clear").show()}}),c=e?(m.main.objects[e]&&m.main.objects[e].common&&(t=translateName(m.main.objects[e].common.name),l=m.main.objects[e].common.icon,d=m.main.objects[e].common.color),a=o=e,s.find("#tab-enums-dialog-preserve-id").prop("checked",!0),!1):(s.find("#tab-enums-dialog-preserve-id").prop("checked",!1),!0),s.find(".tab-enums-dialog-new-title").text(_(n?"Create new category":a?"Rename":"Create new enum")),a){var u=a.split(".");u.length<=2&&(e=!0),a=u.pop(),n=u.join("."),r=a}s.find("#tab-enums-dialog-new-name").val(t).off("change").on("change",function(){var e=s.find("#tab-enums-dialog-new-id"),t=e.val(),a=$(this).val();a=a.replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").trim().toLowerCase(),!c||t&&i||(e.val(a),s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+(a||"#")),M.updateTextFields("#tab-enums-dialog-new")),e.val()&&!e.val().match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),e.removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),e.addClass("wrong"))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").val(a).off("change").on("change",function(){if(!s.find("#tab-enums-dialog-preserve-id").prop("checked")){i=!0;var e=$(this).val();s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+($(this).val()||"#")),M.updateTextFields("#tab-enums-dialog-new"),e&&!e.match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),$(this).removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),$(this).addClass("wrong"))}}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").prop("disabled",!c),s.find(".tab-enums-dialog-create").addClass("disabled").off("click").text(_(o?"Change":"Create")).on("click",function(){var e,t,a,i;o?(s.find("#tab-enums-dialog-preserve-id").prop("checked")?(e="object"==typeof m.main.objects[o].common.name?m.main.objects[o].common.name:{en:o.split(".").pop()})[systemLang]=s.find("#tab-enums-dialog-new-name").val():e=s.find("#tab-enums-dialog-new-name").val(),g(o,n+"."+s.find("#tab-enums-dialog-new-id").val(),{name:e,icon:l,color:d},function(e){e?b(_("Error: %s",e),!0):b(_("Updated"))})):(t=(n||"enum")+"."+s.find("#tab-enums-dialog-new-id").val(),a={name:s.find("#tab-enums-dialog-new-name").val(),icon:l,color:d},i=function(e){e?b(_("Error: %s",e),!0,5e3):b(_("Updated"))},m.main.objects[t]?b(_("Name yet exists!"),!0):m.main.socket.emit("setObject",t,{_id:t,common:{name:a.name,members:[],icon:a.icon,color:a.color},type:"enum"},i))}),s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+(a||"#")),l?(s.find(".tab-enums-dialog-new-icon").show().html(m.main.getIcon(o)),s.find(".tab-enums-dialog-new-icon-clear").show()):(s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-new-icon-clear").hide()),(d=d||!1)?s.find(".tab-enums-dialog-new-color").val(d):s.find(".tab-enums-dialog-new-color").val(),M.updateTextFields("#tab-enums-dialog-new"),m.main.showToast(s,_("Drop the icons here")),s.find(".tab-enums-dialog-new-upload").off("click").on("click",function(){s.find(".drop-file").trigger("click")}),s.find(".tab-enums-dialog-new-icon-clear").off("click").on("click",function(){l&&(l="",s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-icon-clear").hide())}),s.find(".tab-enums-dialog-new-color-clear").off("click").on("click",function(){d&&(s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-color-clear").hide(),s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:d,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",""),d="")});var p=Date.now();try{s.find(".tab-enums-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:d,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",d).on("showPicker.colorpicker",function(){var e=s.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100<Date.now()-p&&(d=e.color.toHex(),s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-icon-clear").show())}),d?s.find(".tab-enums-dialog-new-color-clear").show():s.find(".tab-enums-dialog-new-color-clear").hide(),s.find("#tab-enums-dialog-preserve-id").off("change").on("change",function(){$(this).prop("checked")?(s.find("#tab-enums-dialog-new-id").prop("disabled",!0).val(r),a=r,c=!1):(m.main.objects[e]&&m.main.objects[e].common&&(c=!m.main.objects[e].common["object-non-deletable"]&&!m.main.objects[e].common.dontDelete),c&&(a=(a=s.find("#tab-enums-dialog-new-name").val()).replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").trim().toLowerCase(),s.find("#tab-enums-dialog-new-id").prop("disabled",!1).val(a))),i=!1,s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+(a||"#"))}),s.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),s.modal().modal("open")}function w(e){m.editMode=e;var t=m.$gridEnum.find("#tab-enums-list-edit");if(m.editMode)t.removeClass("blue").addClass("red"),m.$gridEnum.addClass("tab-enums-edit"),m._initObjectTree(),b(_("You can drag&drop the devices, channels and states to enums")),m.isTiles?y():p();else{o("destroy");try{var a=m.$gridEnum.find(".collection-item");a.droppable("instance")&&a.droppable("destroy")}catch(e){console.error(e)}try{var i=m.$gridEnum.find("tbody>tr.treetable-enum");i.droppable("instance")&&i.droppable("destroy")}catch(e){console.error(e)}t.removeClass("red").addClass("blue"),m.$gridEnum.removeClass("tab-enums-edit")}}this.prepare=function(){this.isTiles=void 0===this.main.config.enumIsTiles||null===this.main.config.enumIsTiles||this.main.config.enumIsTiles},this._initObjectTree=function(){var e={objects:t.objects,noDialog:!0,draggable:["device","channel","state"],name:"enum-objects",expertModeRegEx:/^system\.|^yunkong2\.|^_|^[\w-]+$|^enum\.|^[\w-]+\.admin|^script\./,texts:{select:_("Select"),cancel:_("Cancel"),all:_("All"),id:_("ID"),ID:_("ID"),name:_("Name"),role:_("Role"),room:_("Room"),function:_("Function"),value:_("Value"),type:_("Type"),selectid:_("Select ID"),from:_("From"),lc:_("Last changed"),ts:_("Time stamp"),wait:_("Processing..."),ack:_("Acknowledged"),edit:_("Edit"),push:_("Trigger event"),ok:_("Ok"),with:_("With"),without:_("Without"),copyToClipboard:_("Copy to clipboard"),expertMode:_("Toggle expert mode"),refresh:_("Update"),sort:_("Sort alphabetically"),button:_("Settings"),noData:_("No data")},filter:{type:"state"},columns:["ID","name","type","role"]};o("init",e).selectId("show"),function(){var e=m.$gridEnum.find(".fancytree-container>tbody");try{e.sortable("instance")&&e.sortable("destroy")}catch(e){console.error(e)}m.$gridEnum.find(".fancytree-container>tbody").sortable({connectWith:"#tab-enums .tab-enums-list .tree-table-main.treetable",items:".fancytree-type-draggable",appendTo:m.$gridEnum,refreshPositions:!0,helper:function(e,t){return $('<div class="fancytree-drag-helper">'+t.find(".fancytree-title").text()+"</div>")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var a=t.item.prev();t.item.data("prev",a),m.$gridEnum.addClass("dragging")},stop:function(e,t){m.$gridEnum.removeClass("dragging")},update:function(e,t){var a=t.item.data("prev");a&&a.length?$(a).after(t.item):$(this).prepend(t.item)}}).disableSelection()}()},this._postInit=function(){void 0!==this.$gridList&&(this.main.objects["enum.rooms"]||(this.main.objects["enum.rooms"]={_id:"enum.rooms",common:{icon:"home",name:{en:"Rooms",de:"Räume",ru:"Комнаты",pt:"Quartos",nl:"Kamers",fr:"Pièces",it:"Camere",es:"Habitaciones",pl:"Pokoje"},desc:{en:"List of the rooms",de:"Liste der Räumen",ru:"Список комнат",pt:"Lista dos quartos",nl:"Lijst met kamers",fr:"Liste des chambres",it:"Elenco delle stanze",es:"Lista de las habitaciones",pl:"Lista pokoi"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},m.main.socket.emit("setObject","enum.rooms",this.main.objects["enum.rooms"]),this.list.unshift("enum.rooms")),this.main.objects["enum.functions"]||(this.main.objects["enum.functions"]={_id:"enum.functions",common:{icon:"lightbulb_outline",name:{en:"Functions",de:"Funktionen",ru:"функции",pt:"Funções",nl:"functies",fr:"Les fonctions",it:"funzioni",es:"Funciones",pl:"Funkcje"},desc:{en:"List of the functions",de:"Liste der Funktionen",ru:"Список функций",pt:"Lista das funções",nl:"Lijst met functies",fr:"Liste des fonctions",it:"Elenco delle funzioni",es:"Lista de las funciones",pl:"Lista funkcji"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},this.list.unshift("enum.functions"),m.main.socket.emit("setObject","enum.functions",this.main.objects["enum.functions"])),this.isTiles?a():l(),this.editMode?this._initObjectTree():o("destroy"))},this.init=function(e){this.inited&&!e||(this.main&&this.main.objectsLoaded?(this._postInit(),this.inited||(this.inited=!0,this.main.subscribeObjects("enum.*"))):setTimeout(function(){m.init(e)},250))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("enum.*")),w(!1),this.$gridList.treeTable("destroy")},this.objectChange=function(e,t,a){if(e.match(/^enum\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.updateTimers&&clearTimeout(this.updateTimers),this.updateTimers=setTimeout(function(){m.updateTimers=null,m._postInit()},200)}this.$grid&&o("object",e,t,a)}}function Events(m){var g=this;this.main=m,this.$tab=$("#tab-events");var e,f,h,t,b,y="yunkong2.net"===location.hostname||"yunkong2.pro"===location.hostname,M={count:0,start:0,limit:500},a=null,v={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null},w={done:!1,timer:null};this.prepare=function(){t=this.$tab.find("#event-outer"),h=this.$tab.find("#event-table"),b=this.$tab.find("#event-pause"),e=this.$tab.find("#events-table-tr"),(f=new IobListHeader(e,{list:t,colWidthOffset:1,prefix:"event-filter"})).doFilter=i,f.add("combobox","type"),f.add("edit","id","ID"),f.add("edit","val","value"),f.add("combobox","ack","ack",[{val:"",name:"all"},{val:"true",name:"ack"},{val:"false",name:"not ack"}]),f.add("combobox","from","from"),f.add("text","ts"),f.add("text","lc"),Object.defineProperty(f,"getValues",{value:function(){f.ID.selectedVal=f.ID.selectedVal.toLocaleLowerCase(),"true"===f.ack.selectedVal&&(f.ack.selectedVal=!0),"false"===f.ack.selectedVal&&(f.ack.selectedVal=!1)},enumerateble:!1}),b.on("click",function(){g.pause()}),this.$tab.find("#event-clear").off("click").on("click",function(){M.count=0,M.start=0,g.$tab.find("#event-table").html("")})},this.init=function(){y?g.$tab.find("#grid-events").html(_("You can't see events via cloud")+'<br><i class="large material-icons">cloud_off</i>').addClass("no-cloud-events"):f&&(this.inited||(!function e(){if(!$.fn.colResizable)return;t.is(":visible")?(t.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return f.syncHeader()}}),f.syncHeader()):setTimeout(function(){e()},200)}(),this.inited=!0,this.main.subscribeObjects("*"),this.main.subscribeStates("*")))};var j=!(this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("*"),this.main.unsubscribeStates("*"))});function N(){w.timer=null,$(window).trigger("resize.JColResizer")}function i(){a&&(clearTimeout(a),a=null),f.getValues&&f.getValues(),h&&h.find(".event-line").each(function(e){var t=!0,a=$(this);f.type.selectedVal&&!a.hasClass("event-type-"+f.type.selectedVal)?t=!1:f.from.selectedVal&&!a.hasClass("event-from-"+f.from.selectedVal)?t=!1:""===f.ack.selectedVal||a.hasClass("event-ack-"+f.ack.selectedVal)?f.ID.selectedVal&&-1===$(this).find("td.event-column-id").text().toLocaleLowerCase().indexOf(f.ID.selectedVal)?t=!1:""!==f.value.selectedVal&&-1===$(this).find("td.event-column-value").text().indexOf(f.value.selectedVal)&&(t=!1):t=!1,t?a.show():a.hide()})}this.add=function(e,t,a,i){if(!y){var n,s,o,r,l=i?"stateChange":a?"message":"objChange",d="";if(f&&(f.getValues&&f.getValues(),f.type.checkAddOption(l)),w.done||(w.timer||(w.timer=setTimeout(N,1e3)),20<M.count&&(w.done=!0)),!v.mode)if(M.count>=g.limit){M.start++;var c=document.getElementById("event_"+M.start);c&&(c.outerHTML="")}else M.count++;a||i?i&&(t?(t.from=t.from||"",t.from=t.from.replace("system.adapter.",""),t.from=t.from.replace("system.",""),f&&f.from.checkAddOption(t.from,function(e){return{val:e.replace(/\./g,"-"),name:e}}),d=t.from,void 0!==(n=JSON.stringify(t.val))&&30<n.length&&(n='<div title="'+n.replace(/"/g,"")+'">'+n.substring(0,30)+"...</div>"),s=t.ack?"true":"false",o=m.formatDate(t.ts),r=m.formatDate(t.lc)):(n="deleted",o=m.formatDate(new Date))):o=t?(void 0!==(n=JSON.stringify(t,"\n",2))&&30<n.length&&(n='<span title="'+n.replace(/"/g,"'")+'">'+n.substring(0,30)+"...</span>"),m.formatDate(t.ts)):(n="deleted",m.formatDate(new Date));var u=!0;f&&(f.type.selectedVal&&f.type.selectedVal!==l?u=!1:f.ID.selectedVal&&-1===e.toLocaleLowerCase().indexOf(f.ID.selectedVal)?u=!1:""!==f.value.selectedVal&&null!=n&&-1===n.indexOf(f.value.selectedVal)?u=!1:""!==f.ack.selectedVal&&f.ack.selectedVal!==s?u=!1:f.from.selectedVal&&f.from.selectedVal!==d&&(u=!1));var p='<tr id="event_'+(M.start+M.count)+'" class="event-line event-type-'+l+" event-from-"+d.replace(".","-")+" event-ack-"+s+'" style="'+(u?"":"display:none")+'">';p+="<td>"+l+"</td>",p+='<td class="event-column-id">'+e+"</td>",isNaN(n)?p+='<td class="event-column-value">'+(n||"")+"</td>":p+='<td class="event-column-value" style="text-align: right; padding-right: 5px;">'+(n||"")+"</td>",p+="<td>"+(s||"")+"</td>",p+="<td>"+(d||"")+"</td>",p+="<td>"+(o||"")+"</td>",p+="<td>"+(r||"")+"</td>",p+="</tr>",v.mode?(v.list.push(p),v.counter++,v.counter>M.limit&&(v.overflow||(b.addClass("red lighten3").attr("title",_("Message buffer overflow. Losing oldest")),v.overflow=!0),v.list.shift()),v.$counterSpan.html(v.counter)):h&&(h.prepend(p),j||"#tab-events"!==window.location.hash&&"#events"!==window.location.hash||(f&&f.syncHeader(),j=!0))}},this.pause=function(){if(v.mode){v.mode=!1;for(var e=0;e<v.list.length;e++){if(500<=M.count){M.start++;var t=document.getElementById("event_"+M.start);t&&(t.outerHTML="")}else M.count++;h.prepend(v.list[e])}v.overflow=!1,v.list=[],v.counter=0,b.removeClass("yellow btn-pause-button-active").html('<i class="material-icons">pause</i>')}else b.addClass("yellow btn-pause-button-active"),v.$counterSpan=b,v.$counterSpan.html("0"),v.counter=0,v.mode=!0}}function fileHandler(e){e.preventDefault();var t=e.dataTransfer?e.dataTransfer.files[0]:e.target.files[0],a=$(this).find(".drop-zone"),i=$(this).data("drop-zone-cb"),n=$(this).data("limit");if(t.size>(n||1e4))return i&&i(_("File is too big!")),a.hide(),!1;a.show();var s=new FileReader;s.onload=function(e){a.hide(),i&&i(null,e.target.result)},s.readAsDataURL(t)}function installFileUpload(e,t,a){if(void 0!==window.FileReader&&!e.data("installed")){e.data("installed",!0),e.prepend('<div class="drop-zone" style="display: none"><input type="file" class="drop-file" style="display: none" /></div>');var i=e.find(".drop-zone");e[0].ondragover=function(){return i.off("click"),i.show(),!1},i[0].ondragleave=function(){return i.hide(),!1},i[0].ondrop=fileHandler.bind(e[0])}e.data("drop-zone-cb",a),e.data("limit",t),e.find(".drop-file").on("change",fileHandler.bind(e[0]))}function Hosts(s){var r=this;function a(e){var t=$("#dialog-host-update");if(e){var a=e.path,i=(a=a.replace(/\\/g,"/")).split("/");i.pop(),i.pop(),"linux"===e.platform||"darwin"===e.platform||"freebsd"===e.platform||"lin"===e.platform?t.find("#dialog-host-update-instructions").val("cd "+i.join("/")+"\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start"):t.find("#dialog-host-update-instructions").val("cd "+i.join("\\")+"\nyunkong2 stop\nyunkong2 update\nyunkong2 upgrade self\nyunkong2 start")}else t.find("#dialog-host-update-instructions").val("cd /opt/yunkong2\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start");t.data("inited")||(t.data("inited",!0),t.modal()),t.modal("open")}function i(e){if(e=(e||"").toLowerCase().trim()){var t=!1;r.$tab.find(".hosts-host").each(function(){-1!==$(this).data("host-filter").toLowerCase().indexOf(e)?($(this).show(),t=!0):$(this).hide()}),t?r.$tab.find(".hosts-host-filtered-out").hide():r.$tab.find(".hosts-host-filtered-out").show()}else r.$tab.find(".hosts-host").show(),r.$tab.find(".hosts-host-filtered-out").hide()}function n(e){var t=r.main.objects[r.list[e].id],a=r.main.states[t._id+".alive"]&&r.main.states[t._id+".alive"].val&&"null"!==r.main.states[t._id+".alive"].val;t.common=t.common||{},t.native=t.native||{};var i='<tr class="hosts-host" data-host-id="'+t._id+'" data-host-filter="'+(t.common.title||"")+" "+(t.common.hostname||"")+" "+(t.common.name||"")+'">';i+='<td class="tab-hosts-header-led"><div class="hosts-led '+(a?"led-green":"led-red")+'" data-host-id="'+t._id+'"></div></td>',i+='<td class="hosts-icon">'+r.main.getHostIcon(t)+"</td>",i+='<td class="hosts-name" style="font-weight: bold">'+t.common.hostname+"</td>",i+='<td class="tab-hosts-header-type">'+t.common.type+"</td>";var n=t.common.titleLang||t.common.title;return"object"==typeof n&&(n=n[systemLang]||n.en),i+='<td class="tab-hosts-header-title">'+n+"</td>",i+='<td class="tab-hosts-header-os">'+(t.native.os?t.native.os.platform:_("unknown"))+"</td>",i+='<td class="tab-hosts-header-available"><span data-host-id="'+t._id+'" data-type="'+t.common.type+'" class="hosts-version-available"></span><button class="small-button host-update-submit" data-host-name="'+t.common.hostname+'" style="display: none; opacity: 0;" title="'+_("update")+'"><i class="material-icons">refresh</i></button><button class="small-button host-update-hint-submit" data-host-name="'+t.common.hostname+'" style="display: none;" title="'+_("update")+'"><i class="material-icons">refresh</i></button></td>',i+='<td class="hosts-version-installed tab-hosts-header-installed" data-host-id="'+t._id+'">'+t.common.installedVersion+"</td>",r.main.states[t._id+".inputCount"]?i+='<td class="tab-hosts-header-events" style="text-align: center"><span title="in" data-host-id="'+t._id+'" class="host-in">&#x21E5;'+r.main.states[t._id+".inputCount"].val+'</span> / <span title="out" data-host-id="'+t._id+'" class="host-out">&#x21A6;'+r.main.states[t._id+".outputCount"].val+"</span></td>":i+='<td class="tab-hosts-header-events" style="text-align: center"><span title="in" data-host-id="'+t._id+'" class="host-in"></span> / <span title="out" data-host-id="'+t._id+'" class="host-out"></span></td>',i+='<td class="tab-hosts-header-restart"><button class="small-button host-restart-submit" style="'+(a?"":"display: none")+'" data-host-id="'+t._id+'" title="'+_("restart")+'"><i class="material-icons">autorenew</i></button></td>',i+="</tr>"}function o(e){var t,a=r.main.objects[r.list[e].id],i=r.main.states[a._id+".alive"]&&r.main.states[a._id+".alive"].val&&"null"!==r.main.states[a._id+".alive"].val;a.common=a.common||{},a.native=a.native||{},a.common.color&&(t=r.main.invertColor(a.common.color));var n=' <div class="col s12 hosts-host" data-host-id="'+a._id+'" data-host-filter="'+(a.common.title||"")+" "+(a.common.hostname||"")+" "+(a.common.name||"")+'"> <div class="host z-depth-1 hoverable"> <div class="image center"> '+r.main.getHostIcon(a," ")+' <div class="hosts-led '+(i?"led-green":"led-red")+'" data-host-id="'+a._id+'"></div> </div> <div class="system" style="'+(a.common.color?"color: "+(t?"white":"black")+"; background: "+a.common.color:"")+'"> <span class="nameHost" title="name">'+a.common.hostname+'</span> <ul> <li class="tab-hosts-header-title"><span class="title-val">'+r.words.Type+':</span> <span class="type">'+a.common.type+'</span></li> <li><span class="title-val">'+r.words.Title+':</span> <span class="title">'+a.common.title+'</span></li> <li><span class="title-val">'+r.words.OS+':</span> <span class="os">'+(a.native.os?a.native.os.platform:_("unknown"))+'</span></li> <li><span class="title-val">'+r.words.Available+':</span> <span class="available hosts-version-available"></span></li> <li><span class="title-val">'+r.words.Installed+':</span> <span class="installed"> '+a.common.installedVersion+"</span></li>";return r.main.states[a._id+".inputCount"]?n+='<li class="tab-hosts-header-events"><span class="title-val">'+r.words.Events+':</span> <span title="in" data-host-id="'+a._id+'" class="host-in">&#x21E5;'+r.main.states[a._id+".inputCount"].val+'</span> / <span title="out" data-host-id="'+a._id+'" class="host-out">&#x21A6;'+r.main.states[a._id+".outputCount"].val+"</span></li>":n+='<li class="tab-hosts-header-events"><span class="title-val">'+r.words.Events+':</span> <span title="in" data-host-id="'+a._id+'" class="host-in"></span> / <span title="out" data-host-id="'+a._id+'" class="host-out"></span></li>',n+='</ul> </div> <div class="icon center"> <i class="material-icons host-edit" data-host-id="'+a._id+'">edit</i> <i class="material-icons host-restart-submit" data-host-name="'+a.common.hostname+'" title="'+_("restart")+'">autorenew</i>',a.common.hostname!==r.main.currentHost&&(n+=' <i class="material-icons host-delete" data-host-name="'+a.common.hostname+'" title="'+_("remove")+'">delete</i>'),n+=' <i class="material-icons host-update-hint-submit" data-host-name="'+a.common.hostname+'" style="display: none">refresh</i> <i class="material-icons host-update-submit" data-host-name="'+a.common.hostname+'" style="display: none; opacity: 0">refresh</i> </div> </div> </div>'}this.main=s,this.list=[],this.$tab=$("#tab-hosts"),this.$grid=this.$tab.find("#hosts"),this.$table=this.$tab.find("#grid-hosts"),this.inited=!1,this.isTiles=!0,this.words={},this.prepare=function(){this.isTiles=void 0===this.main.config.hostsIsTiles||null===this.main.config.hostsIsTiles||this.main.config.hostsIsTiles,"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find(".btn-switch-tiles").hide()),this.$tab.find(".btn-reload").attr("title",_("Update")).on("click",function(){r.init(!0)}),this.$tab.find(".btn-switch-tiles").off("click").on("click",function(){r.isTiles=!r.isTiles,r.isTiles?$(this).find("i").text("view_list"):$(this).find("i").text("view_module"),r.main.saveConfig("hostsIsTiles",r.isTiles),setTimeout(function(){r._postInit()},50)}),this.isTiles?this.$tab.find(".btn-switch-tiles").find("i").text("view_list"):this.$tab.find(".btn-switch-tiles").find("i").text("view_module"),this.$tab.find(".filter-clear").on("click",function(){r.$tab.find(".filter-input").val("").trigger("change")});var e=this.$tab.find(".filter-input");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),r.$tab.find(".filter-clear").show()):(r.$tab.find(".filter-clear").hide(),$(this).removeClass("input-not-empty")),r.main.saveConfig("hostsFilter",e),i(e)}).on("keyup",function(){r.filterTimeout&&clearTimeout(r.filterTimeout),r.filterTimeout=setTimeout(function(){r.$tab.find(".filter-input").trigger("change")},300)}),this.main.config.hostsFilter&&"{"!==this.main.config.hostsFilter[0]?(e.val(r.main.config.hostsFilter).addClass("input-not-empty"),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.words.Title=_("Title"),this.words.OS=_("OS"),this.words.Available=_("Available"),this.words.Installed=_("Installed"),this.words.Events=_("Events"),this.words.Title=_("Title"),r.words.Type=_("Type")},this.initButtons=function(e){var t=e?'[data-host-id="'+e+'"]':"";this.$tab.find(".host-update-submit"+t).off("click").on("click",function(){r.main.cmdExec($(this).attr("data-host-name"),"upgrade self",function(e){e||r.init(!0)})}),this.$tab.find(".host-restart-submit"+t).off("click").on("click",function(){r.main.waitForRestart=!0,r.main.cmdExec($(this).attr("data-host-name"),"_restart")}),this.$tab.find(".host-delete"+t).off("click").on("click",function(){r.main.cmdExec(r.main.currentHost,"host remove "+$(this).attr("data-host-name"))}),this.$tab.find(".host-edit"+t).off("click").on("click",function(){!function(t){var a=$("#tab-host-dialog-edit"),e="",i="",n="";installFileUpload(a,5e4,function(e,t){if(e)r.main.showToast(a,e);else{if(!t.match(/^data:image\//))return void r.main.showToast(a,_("Unsupported image format"));a.find(".tab-host-dialog-ok").removeClass("disabled"),i=t,a.find(".tab-host-dialog-edit-icon").show().html('<img class="" />'),a.find(".tab-host-dialog-edit-icon img").attr("src",t),a.find(".tab-host-dialog-edit-icon-clear").show()}}),r.main.objects[t]&&r.main.objects[t].common&&("object"==typeof(e=r.main.objects[t].common.title)&&(e=e[systemLang]||e.en),i=r.main.objects[t].common.icon,n=r.main.objects[t].common.color);a.find("#tab-host-dialog-edit-title").val(e).off("change").on("change",function(){a.find(".tab-host-dialog-ok").removeClass("disabled")}).off("keyup").on("keyup",function(){$(this).trigger("change")}),a.find(".tab-host-dialog-ok").addClass("disabled").off("click").on("click",function(){var e=JSON.parse(JSON.stringify(r.main.objects[t]));e.common.title=a.find("#tab-host-dialog-edit-title").val(),e.common.icon=i,e.common.color=n,JSON.stringify(e)!==JSON.stringify(r.main.objects[t])?r.main.socket.emit("setObject",e._id,e,function(e){r.main.showToast(a,_("Updated"))}):r.main.showToast(a,_("Nothing changed"))}),i?(a.find(".tab-host-dialog-edit-icon").show().html(r.main.getIcon(t)),a.find(".tab-host-dialog-edit-icon-clear").show()):(a.find(".tab-host-dialog-edit-icon").hide(),a.find(".tab-host-dialog-edit-icon-clear").hide());(n=n||!1)?a.find(".tab-host-dialog-edit-color").val(n):a.find(".tab-host-dialog-edit-color").val();M.updateTextFields("#tab-host-dialog-edit"),r.main.showToast(a,_("Drop the icons here")),a.find(".tab-host-dialog-edit-upload").off("click").on("click",function(){a.find(".drop-file").trigger("click")}),a.find(".tab-host-dialog-edit-icon-clear").off("click").on("click",function(){i&&(i="",a.find(".tab-host-dialog-edit-icon").hide(),a.find(".tab-host-dialog-ok").removeClass("disabled"),a.find(".tab-host-dialog-edit-icon-clear").hide())}),a.find(".tab-host-dialog-edit-color-clear").off("click").on("click",function(){n&&(a.find(".tab-host-dialog-ok").removeClass("disabled"),a.find(".tab-host-dialog-edit-color-clear").hide(),a.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:n,container:a.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",""),n="")});var s=Date.now();try{a.find(".tab-host-dialog-edit-colorpicker").colorpicker("destroy")}catch(e){}a.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:n,container:a.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",n).on("showPicker.colorpicker",function(){var e=a.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100<Date.now()-s&&(n=e.color.toHex(),a.find(".tab-host-dialog-ok").removeClass("disabled"),a.find(".tab-host-dialog-edit-icon-clear").show())}),n?a.find(".tab-host-dialog-edit-color-clear").show():a.find(".tab-host-dialog-edit-color-clear").hide();a.modal().modal("open")}($(this).attr("data-host-id"))}),this.$tab.find(".host-update-hint-submit"+t).off("click").on("click",function(){var t=setTimeout(function(){a(),t=null},1e3);r.main.socket.emit("sendToHost",$(this).attr("data-host-name"),"getLocationOnDisk",null,function(e){t&&clearTimeout(t),t=null,a(e)})})},this.updateCounter=function(e){if(void 0===e)this.main.tabs.adapters.getAdaptersInfo(this.main.currentHost,!1,!1,function(e,t){var a=0;if(t&&t.hosts){for(var i in t.hosts)if(t.hosts.hasOwnProperty(i)){var n=r.main.objects["system.host."+i];if(n&&n.common){var s=n.common.installedVersion,o=n.common&&e&&e[n.common.type]?e[n.common.type].version:"";s&&o&&!r.main.upToDate(o,s)&&(i="system.host."+i.trim().replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_"),r.main.states[i+".alive"]&&r.main.states[i+".alive"].val&&"null"!==r.main.states[i+".alive"].val&&a++)}}r.updateCounter(a)}});else if(e){var t=$("#updates-for-hosts");t.length?t.text(e):$('<span id="updates-for-hosts" title="'+_("updates")+'" class="new badge updates-for-hosts" data-badge-caption="">'+e+"</span>").appendTo('.admin-sidemenu-items[data-tab="tab-hosts"] a')}else $("#updates-for-hosts").remove()},this._postInit=function(){if(void 0!==r.$grid){this.isTiles?function(){for(var e="",t=0;t<r.list.length;t++)e+=o(t);r.$table.html(""),r.$tab.find(".hosts-table").hide(),r.$grid.html(e).show(),r.$grid.append('<div class="col s12 hosts-host-filtered-out"><div class="host z-depth-1 hoverable">'+_("Filtered out")+"</div></div>")}():function(){for(var e="",t=0;t<r.list.length;t++)e+=n(t);r.$grid.html("").hide(),r.$table.html(e),r.$tab.find(".hosts-table").show(),r.$table.append('<tr class="hosts-host-filtered-out"><td colspan="9">'+_("Filtered out")+"</td></tr>")}(),i(this.$tab.find(".filter-input").val());var s=setTimeout(function(){console.warn("Timeout for repository"),s=null,r.initButtons()},2e3),e=r.main.currentHost;if(!e)for(var t=0;t<r.list.length;t++)if(r.main.states[r.list[t].id+".alive"]&&r.main.states[r.list[t].id+".alive"].val){e=r.list[t].id;break}r.main.tabs.adapters.getAdaptersInfo(e,!0,!1,function(n,e){if(e&&e.hosts){for(var t in e.hosts)if(e.hosts.hasOwnProperty(t)){var a=r.main.objects["system.host."+t],i=e.hosts[t].version;i!==e.hosts[t].runningVersion&&(i+="("+_("Running: ")+e.hosts[t].runningVersion+")"),!i&&a.common&&a.common.installedVersion&&(i=a.common.installedVersion),t="system.host."+t.trim().replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_"),r.$tab.find('.hosts-version-installed[data-host-id="'+t+'"]').html(i)}r.$tab.find(".hosts-host").each(function(){var e=$(this).data("host-id"),t=r.main.objects[e],a=t.common.installedVersion,i=t.common&&n&&n[t.common.type]?n[t.common.type].version:"";a&&i&&(r.main.upToDate(i,a)||r.main.states[e+".alive"]&&r.main.states[e+".alive"].val&&"null"!==r.main.states[e+".alive"].val&&($(this).find(".host-update-submit").show(),$(this).find(".host-update-hint-submit").show(),$(this).find(".hosts-version-installed").addClass("updateReady"),$(this).find(".hosts-version-available").addClass("hosts-version-available-updatable"))),i&&$(this).find(".hosts-version-available").html(i)}),s&&(clearTimeout(s),s=null),r.initButtons()}})}},this.init=function(e){this.inited&&!e||(this.getHosts(function(){r._postInit()}),this.inited||(this.inited=!0,this.main.subscribeObjects("system.host.*"),this.main.subscribeStates("system.host.*")))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("system.host.*"),this.main.unsubscribeStates("system.host.*"))},this.addHost=function(e){var t=null;if(e.native.hardware&&e.native.hardware.networkInterfaces)for(var a in e.native.hardware.networkInterfaces)if(e.native.hardware.networkInterfaces.hasOwnProperty(a)){for(var i=0;i<e.native.hardware.networkInterfaces[a].length;i++)if(!e.native.hardware.networkInterfaces[a][i].internal){t=e.native.hardware.networkInterfaces[a][i].address;break}if(t)break}t?this.list.push({name:e.common.hostname,address:t,id:e._id}):this.list.push({name:e.common.hostname,address:"127.0.0.1",id:e._id})},this.getHosts=function(n){this.main.socket.emit("getForeignObjects","system.host.*","state",function(e,t){for(var a in t)t.hasOwnProperty(a)&&(r.main.objects[a]=t[a]);r.main.socket.emit("getForeignStates","system.host.*",function(e,t){for(var a in t)t.hasOwnProperty(a)&&(r.main.states[a]=t[a]);r.main.socket.emit("getForeignObjects","system.host.*","host",function(e,t){for(var a in r.list=[],t)if(t.hasOwnProperty(a)){var i=t[a];"host"===(r.main.objects[a]=i).type&&r.addHost(i)}s.initHostsList(),n&&n()})})})},this.objectChange=function(e,t,a){if(e.match(/^system\.host\.[-\w]+$/)){var i,n=!1;for(i=0;i<this.list.length;i++)if(this.list[i].id===e){n=!0;break}t?n||this.list.push({id:e,address:t.common.address?t.common.address[0]:"",name:t.common.name}):n&&this.list.splice(i,1),this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){r.updateTimer=null,r._postInit()},200)}},this.stateChange=function(e,t){e.match(/^system\.host\..+\.alive$/)?(e=e.substring(0,e.length-6),t&&t.val?this.$tab.find('.hosts-led[data-host-id="'+e+'"]').removeClass("led-red").addClass("led-green"):(this.$tab.find('.hosts-led[data-host-id="'+e+'"]').removeClass("led-green").addClass("led-red"),this.$tab.find('.host-update-submit[data-host-id="'+e+'"]').hide(),this.$tab.find('.host-update-hint-submit[data-host-id="'+e+'"]').hide(),this.$tab.find('.host-restart-submit[data-host-id="'+e+'"]').hide(),this.$tab.find('.hosts-version-available[data-host-id="'+e+'"]').removeClass("hosts-version-available-updatable"))):e.match(/^system\.host\..+\.outputCount$/)?(e=e.substring(0,e.length-12),this.$tab.find('.host-out[data-host-id="'+e+'"]').html('<span class="highlight">&#x21A6;'+t.val+"</span>")):e.match(/^system\.host\..+\.inputCount$/)&&(e=e.substring(0,e.length-11),this.$tab.find('.host-in[data-host-id="'+e+'"]').html('<span class="highlight">&#x21A6;'+t.val+"</span>"))}}function Instances(i){var h=this;function b(e,t,a,i,n){if("protocol"===a&&(a="secure"),"ip"===e)i=i.replace("%"+e+"%",location.hostname);else if("instance"===e)i=i.replace("%"+e+"%",n);else if(t){a.match(/^native_/)&&(a=a.substring(7));var s=t.native[a];"bind"!==e||s&&"0.0.0.0"!==s||(s=location.hostname),i="secure"===a?i.replace("%"+e+"%",s?"https":"http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",s):i.replace("%"+e+"%",s)}else i="secure"===a?i.replace("%"+e+"%","http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",""):i.replace("%"+e+"%","");return i}function o(e,t,a){var i,n,s,o=e.match(/%(\w+)%/g);if(o){for(n=o.length-1;0<=n;n--)s=(i=(i=o[n]).replace(/%/g,"")).split("_"),i.match(/^native_/)?(e=b(i,h.main.objects["system.adapter."+t+"."+a],i,e,a),o.splice(n,1)):1===s.length?(e=b(i,h.main.objects["system.adapter."+t+"."+a],s[0],e,a),o.splice(n,1)):s[0].match(/\.[0-9]+$/)&&(e=b(i,h.main.objects["system.adapter."+s[0]],s[1],e,a),o.splice(n,1));var r,l,d={},c=s[0];for(n=0;n<o.length;n++){if((i=(i=o[n]).replace(/%/g,"")).match(/^native_/)&&(i=i.substring(7)),s=i.split("_"),!r){r=[];for(var u=0;u<10;u++)h.main.objects["system.adapter."+c+"."+u]&&r.push(u)}for(var p=0;p<r.length;p++)d[c+"."+p]={instance:c+"."+p,link:b(i,h.main.objects["system.adapter."+c+"."+p],s[1],d[c+"."+p]?d[c+"."+p].link:e,p)}}if(r){l={};var m=0,g="";for(var f in d)d.hasOwnProperty(f)&&(l[d[f].instance]=d[f].link,g||(g=d[f].link),m++);m<2&&(e=g,l=null)}}return l||e}function f(e){var t=e.split("."),a=t[2],i=t[3],n=h.$tab.find('.instance-led[data-instance-id="'+e+'"]'),s=h.main.objects[e]&&h.main.objects[e].common||{},o="daemon"===s.mode?"green":"blue",r="";if(!s.enabled||s.webExtension&&h.main.objects[e].native.webInstance){if(o="daemon"===s.mode?"gray":"blue",r='<table style="border: 0">',r+='<tr style="border: 0"><td style="border: 0">'+_("Connected to host: ")+'</td><td style="border: 0">',h.main.states[e+".connected"]&&h.main.states[e+".connected"].val?r+='<span style="color: green">'+_("true")+"</span>":r+=_("false"),r+='</td></tr><tr style="border: 0">',r+='<td style="border: 0">'+_("Heartbeat: ")+'</td><td style="border: 0">',h.main.states[e+".alive"]&&h.main.states[e+".alive"].val?r+='<span style="color: green">'+_("true")+"</span>":r+=_("false"),r+="</td></tr>",h.main.states[a+"."+i+".info.connection"]||h.main.objects[a+"."+i+".info.connection"])r+='<tr style="border: 0"><td style="border: 0">'+_("Connected to %s: ",a)+"</td><td>",r+=(l=!!h.main.states[a+"."+i+".info.connection"]&&h.main.states[a+"."+i+".info.connection"].val)?!0===l?'<span style="color: green">'+_("true")+"</span>":'<span style="color: green">'+l+"</span>":_("false"),r+="</td></tr>";r+="</table>"}else{var l;if(r='<table style="border: 0">',r+='<tr style="border: 0"><td style="border: 0">'+_("Connected to host: ")+'</td><td style="border: 0">',h.main.states[e+".connected"]&&h.main.states[e+".connected"].val?r+='<span style="color: green">'+_("true")+"</span>":(r+="daemon"===s.mode?'<span style="color: red">'+_("false")+"</span>":_("false"),o="daemon"===s.mode?"red":"blue"),r+='</td></tr><tr style="border: 0"><td style="border: 0">'+_("Heartbeat: ")+'</td><td style="border: 0">',h.main.states[e+".alive"]&&h.main.states[e+".alive"].val?r+='<span style="color: green">'+_("true")+"</span>":(r+="daemon"===s.mode?'<span style="color: red">'+_("false")+"</span>":_("false"),o="daemon"===s.mode?"red":"blue"),r+="</td></tr>",h.main.states[a+"."+i+".info.connection"]||h.main.objects[a+"."+i+".info.connection"])r+='<tr style="border: 0"><td style="border: 0">'+_("Connected to %s: ",a)+"</td><td>",(l=!!h.main.states[a+"."+i+".info.connection"]&&h.main.states[a+"."+i+".info.connection"].val)?r+=!0===l?'<span style="color: green">'+_("true")+"</span>":'<span style="color: green">'+l+"</span>":(o="red"===o?"red":"orange",r+='<span style="color: red">'+_("false")+"</span>"),r+="</td></tr>";r+="</table>"}o="blue"===o?"":o,n.removeClass("led-red led-green led-orange led-blue").addClass("led-"+o).data("title",r),n.data("inited")||"gray"===o||(n.data("inited",!0),n.hover(function(){var e='<div class="instance-state-hover" style="left: '+Math.round($(this).position().left+$(this).width()+5)+'px;">'+$(this).data("title")+"</div>",t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),i<0&&(i=0),t.css({top:i}).on("click",function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}).on("click",function(){$(this).trigger("hover")}))}function r(){for(var e=h.main.states["system.host."+h.main.currentHost+".memRss"],t=1,a=e?e.val:0,i=0;i<h.list.length;i++){var n=h.main.objects[h.list[i]];if(n&&n.common&&(n.common.host===h.main.currentHost&&n.common.enabled&&"daemon"===n.common.mode)){var s=h.main.states[n._id+".memRss"];a+=s?s.val:0,t++}}a=Math.round(a);var o=h.$tab.find("#totalRam");a.toString()!==o.text()&&o.html('<span class="highlight">'+a+"</span>");var r=_("%s processes",t),l=h.$tab.find("#running_processes");r!==l.text()&&l.html('<span class="highlight">'+r+"</span>")}function l(){h.main.states["system.host."+h.main.currentHost+".memAvailable"]?h.memState="memAvailable":h.main.states["system.host."+h.main.currentHost+".freemem"]&&(h.memState="freemem");var e=h.main.states["system.host."+h.main.currentHost+"."+h.memState];if(e){h.totalmem=h.totalmem||h.main.objects["system.host."+h.main.currentHost].native.hardware.totalmem/1048576;var t=Math.round(e.val/h.totalmem*100),a=h.$tab.find("#freeMem"),i=tdp(e.val);i!==a.text()&&(a.html('<span class="highlight '+(t<10?"high-mem":"")+'">'+i+"</span>"),h.$tab.find("#freeMemPercent").html('<span class="highlight">'+t+"%</span>"))}else h.$tab.find(".free-mem-label").hide()}function d(){var e=h.main.states["system.host."+h.main.currentHost+".diskSize"],t=h.main.states["system.host."+h.main.currentHost+".diskFree"],a=h.main.states["system.host."+h.main.currentHost+".diskWarning"];if(t&&t.val&&e&&e.val){a=a?parseFloat(a.val):5;var i=h.$tab.find("#diskFree"),n=Math.round(t.val/e.val*1e3)/10;i.html('<span class="highlight '+(n<a?"system-warning":"")+'">'+n+"</span>"),i.parent().attr("title",_("Size: %s, Free: %s",h.main.formatBytes(1024*e.val*1024),h.main.formatBytes(1024*t.val*1024)))}else h.$tab.find(".tab-instances-info-disk").hide()}function y(e){var t,a=h.main.objects[e]&&h.main.objects[e].common||{};return t=a.enabled&&"daemon"===a.mode&&h.main.states[e+".memRss"]?(t=h.main.states[e+".memRss"].val,t=parseFloat(t)||0,a.memoryLimitMB&&a.memoryLimitMB<=t?'<span class="high-mem">'+t.toFixed(1)+" MB</span>":t.toFixed(1)+" MB"):""}function c(e,t,a,i){var n,s=h.main.objects[t]&&h.main.objects[t].common||{},o=t.split("."),r=o[2],l=o[3];if("tile"===a)n=i?"":'<div class="instance-adapter" data-instance-id="'+t+'">',n+=i?"":"</div>";else{n=i?"":'<tr class="instance-adapter" data-instance-id="'+t+'">';var d=s.localLinks||s.localLink||"",c=d?h.replaceInLink(d,r,l):"";d&&(d="object"==typeof c?'<a href="'+c.__first+'" target="_blank">':'<a href="'+c+'" target="_blank">'),n+='<td class="instance-state" style="text-align: center"><div class="instance-led" data-instance-id="'+t+'"></div></td>',n+="<td>"+(s.icon?d+'<img src="adapter/'+r+"/"+s.icon+'" class="instance-image" data-instance-id="'+t+'"/>':"")+(d?"</a>":"")+"</td>",n+='<td style="padding-left: 0.5em" data-instance-id="'+t+'" class="instance-name"><b>'+r+"."+l+"</b></td>";var u=s.onlyWWW||s.enabled;n+='<td style="text-align: left;" class="m"><button data-instance-id="'+t+'" class="instance-stop-run small-button '+(s.onlyWWW?"small-button-empty":"")+'" title="dynamic" ><i class="material-icons">pause</i></button><button data-instance-id="'+t+'" class="instance-settings small-button '+(s.noConfig?"small-button-empty":"")+'" title="'+_("config")+'"><i class="material-icons">build</i></button><button data-instance-id="'+t+'" class="instance-reload small-button '+(s.onlyWWW?"small-button-empty":"")+" "+(u?"":"disabled")+'" title="'+_("reload")+'"><i class="material-icons">refresh</i></button>',n+='<button data-instance-id="'+t+'" class="instance-del small-button" title="'+_("delete")+'"><i class="material-icons">delete</i></button>'+(c?'<button data-instance-id="'+t+'" class="instance-web small-button '+(c?"":"small-button-empty")+" "+(u?"":"disabled")+'" title="'+_("open web page")+'" data-link="'+("object"!=typeof c?c:"")+'"><i class="material-icons">input</i></button>':"")+"</td>";var p=s.titleLang||s.title;if("object"==typeof p&&(p=p[systemLang]||p.en),n+='<td title="'+(d?_("Click on icon"):"")+'" style="padding-left: 0.5em" data-name="title" data-value="'+(p||"")+'" class="instance-editable" data-instance-id="'+t+'">'+(p||"")+"</td>",1<h.main.tabs.hosts.list.length){if(!h.hostsText){h.hostsText="";for(var m=0;m<h.main.tabs.hosts.list.length;m++){var g=h.main.tabs.hosts.list[m]||"";h.hostsText+=(h.hostsText?";":"")+g.name}}n+='<td style="padding-left: 0.5em" data-name="host" data-value="'+(s.host||"")+'" class="instance-editable" data-instance-id="'+t+'" data-options="'+h.hostsText+'">'+(s.host||"")+"</td>"}n+='<td data-name="schedule" data-value="'+("schedule"===s.mode&&s.schedule||"")+'" style="text-align: center" class="'+("schedule"===s.mode?"instance-schedule":"")+'" data-instance-id="'+t+'">'+("schedule"===s.mode&&s.schedule||"")+"</td>",h.main.config.expertMode&&(n+='<td data-name="restartSchedule" data-value="'+(s.restartSchedule||"")+'" style="text-align: center" class="instance-schedule m" data-instance-id="'+t+'">'+(s.restartSchedule||"")+"</td>",n+='<td data-name="loglevel" data-value="'+(s.loglevel||"")+'" style="text-align: center" class="instance-editable" data-instance-id="'+t+'" data-options="silly:silly;debug:debug;info:info;warn:warn;error:error">'+(s.loglevel||"")+"</td>",n+='<td data-name="memoryLimitMB" data-value="'+(s.memoryLimitMB||"")+'" style="text-align: center" class="instance-editable" data-instance-id="'+t+'">'+(s.memoryLimitMB||"")+"</td>",u&&h.main.states[t+".inputCount"]&&h.main.states[t+".outputCount"]?n+='<td style="text-align: center"><span title="in" data-instance-id="'+t+'" class="instance-in">&#x21E5;'+h.main.states[t+".inputCount"].val+'</span> / <span title="out" data-instance-id="'+t+'" class="instance-out">&#x21A6;'+h.main.states[t+".outputCount"].val+"</span></td>":n+='<td style="text-align: center"><span title="in" data-instance-id="'+t+'" class="instance-in"></span> / <span title="out" data-instance-id="'+t+'" class="instance-out"></span></td>'),n+='<td class="memUsage" style="text-align: center" data-instance-id="'+t+'">'+y(t)+"</td>",n+=i?"":"</tr>"}i?h.$tab.find('.instance-adapter[data-instance-id="'+t+'"]').html(n):e.append(n),h.initButtons(t,c),f(t),h.$tab.find('.instance-editable[data-instance-id="'+t+'"]').on("click",M).addClass("select-id-quick-edit"),h.$tab.find('.instance-schedule[data-instance-id="'+t+'"]').each(function(){$(this).find("button").length||($(this).append('<button class="instance-schedule-button small-button" data-instance-id="'+t+'" data-name="'+$(this).data("name")+'" title="'+_("Set CRON schedule for restarts")+'"><i class="material-icons">schedule</i></button>'),$(this).find("button").on("click",function(){var a=$(this).data("name"),i=$(this).data("instance-id");!function(e,t){e=(e||"").replace(/"/g,"").replace(/'/g,"");try{setupCron(e,t)}catch(e){alert(_("Cannot parse value as cron"))}}(h.main.objects[i].common[a]||"",function(e){if(null!==e){var t={common:{}};t.common[a]=e,h.main.socket.emit("extendObject",i,t,function(e){e&&h.main.showError(e)})}})}))}),h.$tab.find('.instance-name[data-instance-id="'+t+'"]').on("click",function(){var e=h.$tab.find('.instance-settings[data-instance-id="'+$(this).data("instance-id")+'"]');e.hasClass("small-button-empty")||e.trigger("click")}).css("cursor","pointer")}function u(e){void 0===e&&(e=h.$tab.find(".instances-filter").val());var t=[];if(e)for(var a=new RegExp(e),i=0;i<h.list.length;i++){var n=h.main.objects[h.list[i]];if(n&&n.common){var s="hide",o=n.common.titleLang||n.common.title;"object"==typeof o&&(o=o[systemLang]||o.en),n.common.name&&a.test(n.common.name)?s="show":o&&a.test(o)?s="show":"true"===e?s=h.$grid.find('.instance-adapter[data-instance-id="'+h.list[i]+'"]').find("instance-led").hasClass("led-green")?"show":"hide":"false"===e&&(s=h.$grid.find('.instance-adapter[data-instance-id="'+h.list[i]+'"]').find("instance-led").hasClass("led-green")?"hide":"show"),"show"===s&&h.filterHost&&n.common.host!==h.main.currentHost&&(s="hide"),"hide"===s&&t.push(h.list[i]),h.$grid.find('.instance-adapter[data-instance-id="'+h.list[i]+'"]')[s]()}else h.$grid.find('.instance-adapter[data-instance-id="'+h.list[i]+'"]').hide()}else if(h.filterHost)for(var r=0;r<h.list.length;r++){var l=h.main.objects[h.list[r]];if(l&&l.common){var d="hide";l.common.host===h.main.currentHost&&(d="show"),h.$grid.find('.instance-adapter[data-instance-id="'+h.list[r]+'"]')[d]()}else h.$grid.find('.instance-adapter[data-instance-id="'+h.list[r]+'"]').hide()}else h.$grid.find(".instance-adapter").show();var c=!1;h.$grid.find(".instance-adapter").each(function(){if($(this).is(":visible"))return!(c=!0)}),c?h.$grid.find(".filtered-out").hide():h.$grid.find(".filtered-out").show()}function M(e){var t=$(this),i=t.data("instance-id"),n=t.data("name"),a=t.data("options"),s=t.data("value"),o=this.innerHTML,r=t.css("text-align");t.css("text-align","left"),t.off("click").removeClass("select-id-quick-edit").css("position","relative");var l,d="cursor: pointer; position: absolute;width: 16px; height: 16px; top: 2px; border-radius: 6px; z-index: 3; background-color: lightgray";if(a){var c=a.split(";");l='<select style="width: calc(100% - 50px); z-index: 2">';for(var u=0;u<c.length;u++){var p=c[u].split(":");l+='<option value="'+p[0]+'">'+(p[1]||p[0])+"</option>"}l+="</select>"}l=l||'<input style="width: 100%; z-index: 2" type="text"/>';var m=null;t.html(l+'<div class="ui-icon ui-icon-check select-id-quick-edit-ok" style="margin-top: 0.45em;'+d+';right: 22px"></div><div class="cancel ui-icon ui-icon-close select-id-quick-edit-cancel" style="margin-top: 0.45em;'+d+';right: 2px" title="'+_("cancel")+'" ></div>');var g=a?t.find("select"):t.find("input");t.find(".select-id-quick-edit-cancel").off("click").on("click",function(e){m&&clearTimeout(m),m=null,e.preventDefault(),e.stopPropagation(),t.html(o).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r)}),t.find(".select-id-quick-edit-ok").off("click").on("click",function(){t.trigger("blur")}),g.val(s),g.blur(function(){m&&clearTimeout(m),m=setTimeout(function(){m=null;var a=$(this).val();s=JSON.stringify(a)!==JSON.stringify(s)?(h.main.socket.emit("getObject",i,function(e,t){t?(t.common=t.common||{},t.common[n]=a,"title"===n&&t.common.titleLang&&delete t.common.titleLang,h.main.socket.emit("setObject",t._id,t,function(e){e&&h.main.showError(e)})):console.log("Object "+i+" does not exist: "+e)}),'<span style="color: pink">'+s+"</span>"):o,t.html(s).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r)}.bind(this),100)}).on("keyup",function(e){13===e.which&&$(this).trigger("blur"),27===e.which&&(void 0===s&&(s=""),t.html(s).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r))}),"object"==typeof e&&(e.preventDefault(),e.stopPropagation()),setTimeout(function(){g.focus()},100)}this.$tab=$("#tab-instances"),this.$grid=$("#grid-instances"),this.$gridHead=$("#grid-instances-head"),this.inited=!1,this.main=i,this.list=[],this.hostsText=null,this.filterHost=!1,this.memState="memAvailable",window.tdp||(window.tdp=function(e,t){return isNaN(e)?"":e.toFixed(t||0).replace(".",",").replace(/\B(?=(\d{3})+(?!\d))/g,".")}),this.replaceInLink=function(e,t,a){if("object"!=typeof e)return o(e,t,a);var i,n=JSON.parse(JSON.stringify(e));for(var s in n)n.hasOwnProperty(s)&&(n[s]=o(n[s],t,a),i||(i=n[s]));return n.__first=i,n},this.prepare=function(){var e=h.$tab.find(".instances-filter"),t=h.$tab.find(".instances-filter-clear");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),t.show()):($(this).removeClass("input-not-empty"),t.hide()),h.main.saveConfig("instancesFilter",e),u(e)}).on("keyup",function(){h.filterTimeout&&clearTimeout(h.filterTimeout),h.filterTimeout=setTimeout(function(){e.trigger("change")},300)}),h.main.config.instancesFilter&&"{"!==h.main.config.instancesFilter[0]?(e.addClass("input-not-empty").val(h.main.config.instancesFilter),t.show()):t.hide(),h.$tab.find(".btn-instances-expert-mode").on("click",function(){h.main.config.expertMode=!h.main.config.expertMode,h.main.saveConfig("expertMode",h.main.config.expertMode),h.updateExpertMode(),h.main.tabs.adapters.updateExpertMode()}),h.main.config.expertMode&&h.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"),h.$tab.find(".btn-instances-reload").on("click",function(){h.init(!0,!0)}),t.on("click",function(){e.val("").trigger("change")}),this.$tab.find(".btn-instances-host").off("click").on("click",function(){h.filterHost=!h.filterHost,h.filterHost?h.$tab.find(".btn-instances-host").addClass("red lighten-3"):h.$tab.find(".btn-instances-host").removeClass("red lighten-3"),h.main.saveConfig("instancesFilterHost",h.filterHost),setTimeout(function(){u()},50)}),this.filterHost=this.main.config.instancesFilterHost||!1,this.filterHost?this.$tab.find(".btn-instances-host").addClass("red lighten-3"):this.$tab.find(".btn-instances-host").removeClass("red lighten-3")},this.updateExpertMode=function(){h.init(!0),h.main.config.expertMode?h.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"):h.$tab.find(".btn-instances-expert-mode").removeClass("red lighten-3")},this.replaceLink=function(a,i,n,s){var o;(a=a.replace(/%/g,"")).match(/^native_/)&&(a=a.substring(7)),-1===a.indexOf("_")?o=[i+"."+n,a]:(o=a.split("_"))[0].match(/\.[0-9]+$/)||(o[0]+=".0"),"protocol"===o[1]&&(o[1]="secure"),"instance"!==a?this.main.socket.emit("getObject","system.adapter."+o[0],function(e,t){t&&setTimeout(function(){var e;(e=s?h.$tab.find("#"+s).data("src"):h.$tab.find("#a_"+i+"_"+n).attr("href"))&&(e="secure"===o[1]?e.replace("%"+a+"%",t.native[o[1]]?"https":"http"):-1===e.indexOf("%"+a+"%")?e.replace("%native_"+a+"%",t.native[o[1]]):e.replace("%"+a+"%",t.native[o[1]]),s?h.$tab.find("#"+s).data("src",e):h.$tab.find("#a_"+i+"_"+n).attr("href",e))},0)}):setTimeout(function(){var e;e=(e=s?h.$tab.find("#"+s).data("src"):h.$tab.find("#a_"+i+"_"+n).attr("href")).replace("%instance%",n),s?h.$tab.find("#"+s).data("src",e):h.$tab.find("#a_"+i+"_"+n).attr("href",e)},0)},this._replaceLink=function(a,i,n,s,o){var r;(i=i.replace(/%/g,"")).match(/^native_/)&&(i=i.substring(7)),-1===i.indexOf("_")?r=[n+"."+s,i]:(r=i.split("_"))[0].match(/\.[0-9]+$/)||(r[0]+=".0"),"protocol"===r[1]&&(r[1]="secure"),this.main.socket.emit("getObject","system.adapter."+r[0],function(e,t){a=t&&a?"secure"===r[1]?a.replace("%"+i+"%",t.native[r[1]]?"https":"http"):-1===a.indexOf("%"+i+"%")?a.replace("%native_"+i+"%",t.native[r[1]]):a.replace("%"+i+"%",t.native[r[1]]):(console.log("Cannot get link "+r[1]),a.replace("%"+i+"%","")),setTimeout(function(){o(a,n,s)},0)})},this._replaceLinks=function(e,t,a,i,n){if(!e)return n(e,t,a,i);var s=e.match(/%(\w+)%/g);return s?"%ip%"===s[0]?(e=e.replace("%ip%",location.hostname),void this._replaceLinks(e,t,a,i,n)):"%instance%"===s[0]?(e=e.replace("%instance%",a),void this._replaceLinks(e,t,a,i,n)):void this._replaceLink(e,s[0],t,a,function(e,t,a){this._replaceLinks(e,t,a,i,n)}.bind(this)):n(e,t,a,i)},this._postInit=function(e,t){if(this.main.currentHost&&void 0!==this.$grid&&(!this.$grid.data("inited")||e)){this.$grid.data("inited",!0),this.list.sort();for(var a=[],i=this.list.length-1;0<=i;i--)this.main.objects[this.list[i]]&&this.main.objects[this.list[i]].common&&!this.main.objects[this.list[i]].common.localLink&&!this.main.objects[this.list[i]].common.localLinks&&this.main.objects[this.list[i]].common.noConfig&&(a.push(this.list[i]),this.list.splice(i,1));for(this.list.sort(),a.sort(),i=0;i<a.length;i++)this.list.push(a[i]);o="<tr>",o+='<th style="width: calc(2em - 6px); border-right-color: transparent; overflow: visible"><span style="overflow:visible;" >'+_("instance")+"</span></th>",o+='<th style="width: calc(2em - 6px); border-left-color: transparent; border-right-color: transparent;"></th>',o+='<th style="width: '+(h.main.config.expertMode?10:12)+'em; border-left-color: transparent;"></th>',o+='<th style="width: 12.8em">'+_("actions")+"</th>",o+='<th style="text-align: left">'+_("title")+"</th>",1<h.main.tabs.hosts.list.length&&(o+='<th style="width: 10em">'+_("host")+"</th>"),o+='<th style="width: 8em">'+_("schedule_group")+"</th>",h.main.config.expertMode&&(o+='<th style="width: 8em">'+_("restart")+"</th>",o+='<th style="width: 8em">'+_("loglevel")+"</th>",o+='<th style="width: 8em">'+_("memlimit")+"</th>",o+='<th style="width: 8em">'+_("events")+"</th>"),o+='<th style="width: 8em">'+_("RAM usage")+"</th>",h.$gridHead.html(o),this.$grid.html("");for(var n=Date.now(),s=0;s<this.list.length;s++){this.main.objects[this.list[s]]&&c(this.$grid,this.list[s],this.main.config.instanceForm)}console.log(Date.now()-n),this.$grid.append('<tr class="filtered-out"><td></td><td></td><td colspan="20" style="padding-left: 1em">'+_("Filtered out")+"</td></tr>"),h.$tab.find("#currentHost").html(this.main.currentHost),1<h.main.tabs.hosts.list.length?this.$tab.find(".btn-instances-host").show():(this.$tab.find(".btn-instances-host").hide(),this.filterHost=!1),u(),r(),l(),d(),h.restoreScroll(),t&&h.main.showToast(h.$tab.find(".main-toolbar-table"),_("Updated"))}var o},this.getInstances=function(n){this.main.socket.emit("getForeignObjects","system.adapter.*","state",function(e,t){for(var a in t)t.hasOwnProperty(a)&&(h.main.objects[a]=t[a]);h.main.socket.emit("getForeignStates","*.info.connection",function(e,t){for(var a in t)t.hasOwnProperty(a)&&(h.main.states[a]=t[a]);h.main.socket.emit("getForeignStates","system.adapter.*",function(e,t){for(var a in t)t.hasOwnProperty(a)&&(h.main.states[a]=t[a]);h.main.socket.emit("getForeignObjects","system.adapter.*","instance",function(e,t){for(var a in h.main.instances.splice(0,h.main.instances.length),t)if(t.hasOwnProperty(a)){var i=t[a];"instance"===(h.main.objects[a]=i).type&&h.main.instances.push(a)}n&&n()})})})})},this.init=function(e,t){if(!this.inited||e)if(this.main.objectsLoaded){var a=0;a++,this.getInstances(function(){--a||h._postInit(e,t)}),a++,this.main.tabs.hosts.getHosts(function(){--a||h._postInit(e,t)}),this.inited||(this.inited=!0,this.main.subscribeObjects("system.adapter.*"),this.main.subscribeStates("system.adapter.*"),this.main.subscribeObjects("system.host.*"),this.main.subscribeStates("system.host.*"),this.main.subscribeStates("*.info.connection"))}else setTimeout(function(){h.init(e,t)},250)},this.saveScroll=function(){this.scrollTop=this.$tab.find(".grid-main-div").scrollTop()},this.restoreScroll=function(){this.scrollTop&&this.$tab.find(".grid-main-div").scrollTop(this.scrollTop)},this.destroy=function(){this.inited&&(this.saveScroll(),this.$grid.data("inited",!1),this.inited=!1,this.main.unsubscribeObjects("system.adapter.*"),this.main.unsubscribeStates("system.host.*"),this.main.unsubscribeObjects("system.host.*"),this.main.unsubscribeStates("system.adapter.*"),this.main.unsubscribeStates("*.info.connection"))},this.stateChange=function(e,t){if(this.main.states[e]=t,this.$grid){var a=e.split("."),i=a.pop();if(e=a.join("."),t){if("diskFree"===i||"diskWarning"===i)d();else if(i===h.memState)l();else if("memRss"===i){r();var n=h.$tab.find('.memUsage[data-instance-id="'+e+'"]'),s=y(e);n.length&&n.text()!==s&&n.html('<span class="highlight">'+s+"</span>")}else"outputCount"===i?h.$tab.find('.instance-out[data-instance-id="'+e+'"]').html('<span class="highlight">&#x21A6;'+t.val+"</span>"):"inputCount"===i&&h.$tab.find('.instance-in[data-instance-id="'+e+'"]').html('<span class="highlight">&#x21E5;'+t.val+"</span>");if(-1!==this.list.indexOf(e))return void("alive"!==i&&"connected"!==i||f(e));e="system.adapter."+a[0]+"."+a[1],-1!==this.list.indexOf(e)&&"connection"===i&&f(e)}}},this.objectChange=function(e,t,a){if(e.match(/^system\.adapter\.[-\w]+\.[0-9]+$/))if(t)-1===this.list.indexOf(e)?(this.list.push(e),this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200),t.common.noConfig||setTimeout(function(){-1===window.location.hash.indexOf("/config/")&&h.main.navigate({tab:"instances",dialog:"config",params:e})},2e3)):-1!==e.indexOf(".web.")?(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200)):this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').html(c(this.$grid,e,this.main.config.instanceForm,!0));else{var i=this.list.indexOf(e);-1!==i&&(this.list.splice(i,1),this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').remove())}else e.match(/^system\.host\.[-\w]+$/)&&(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200))},this.initButtons=function(e,t){e=e?'[data-instance-id="'+e+'"]':"";var a=h.$grid.find(".instance-edit"+e).off("click").on("click",function(){h.onEdit($(this).attr("data-instance-id"))});a.find(".ui-button-icon-primary").length||a.attr("title",_("edit")),(a=h.$grid.find(".instance-settings"+e).off("click").on("click",function(){h.main.navigate({tab:"instances",dialog:"config",params:$(this).data("instance-id")})})).each(function(){var e=$(this).attr("data-instance-id");i.objects[e]&&i.objects[e].common&&i.objects[e].common.noConfig&&$(this).addClass("disabled")}),a=h.$grid.find(".instance-reload"+e).off("click").on("click",function(){h.main.socket.emit("extendObject",$(this).attr("data-instance-id"),{},function(e){e&&h.main.showError(e)})}),a=h.$grid.find(".instance-del"+e).off("click").on("click",function(){var t=$(this).attr("data-instance-id");if(h.main.objects[t]&&h.main.objects[t].common&&h.main.objects[t].common.host){var e=t.replace(/^system\.adapter\./,"");h.main.confirmMessage(_("Are you sure you want to delete the instance <b>%s</b>?",e),null,"help",function(e){e&&h.main.cmdExec(h.main.objects[t].common.host,"del "+t.replace("system.adapter.",""),function(e){e||h.main.tabs.adapters.init(!0)})})}}),a=h.$grid.find(".instance-issue"+e).off("click").on("click",function(){h.main.navigate({tab:"instances",dialog:"issue",params:$(this).data("instance-id")})}),h.$grid.find(".instance-image"+e).each(function(){$(this).data("installed")||($(this).data("installed",!0),$(this).hover(function(){var e='<div class="icon-large" style="left: '+Math.round($(this).position().left+$(this).width()+5)+'px;"><img src="'+$(this).attr("src")+'"/></div>',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),i<0&&(i=0),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}))}),(a=h.$grid.find(".instance-stop-run"+e).off("click").on("click",function(){var e=$(this).attr("data-instance-id");$(this).addClass("disabled"),h.main.socket.emit("extendObject",e,{common:{enabled:!h.main.objects[e].common.enabled}},function(e){e&&h.main.showError(e)})})).find(".ui-button-icon-primary").length||a.each(function(){var e=$(this).attr("data-instance-id");h.main.objects[e].common.enabled?a.addClass("instance-running").attr("title",_("Activated. Click to stop.")).find("i").html("pause"):a.removeClass("instance-running").attr("title",_("Deactivated. Click to start.")).find("i").html("play_arrow")}),a=h.$grid.find(".instance-web"+e).off("click").on("click",function(){var e=$(this).data("link");if("object"==typeof e){var t="";for(var a in e)if(e.hasOwnProperty(a)&&"__first"!==a){var i=e[a].match(/^https?:\/\/[-.\w]+:(\d+)\/?/),n=e[a].match(/^https:\/\//);t+='<li data-link="'+e[a]+'" data-instance-id="'+$(this).data("instance-id")+'" class="instances-menu-link"><b>'+a+(i?" :"+i[1]:"")+(n?" - SSL":"")+"</b></li>"}t+='<li class="instances-menu-link">'+_("Close")+"</li>";var s=$("#instances-menu");s.data("inited")&&s.menu("destroy");var o=$(this).position();s.html(t),s.data("inited")||(s.data("inited",!0),s.mouseleave(function(){$(this).hide()})),s.menu().css({left:o.left,top:o.top}).show(),s.find(".instances-menu-link").off("click").on("click",function(){$(this).data("link")&&window.open($(this).data("link"),$(this).data("instance-id")),$("#instances-menu").hide()})}else window.open($(this).data("link"),$(this).data("instance-id"))}),"object"==typeof t&&a.data("link",t)},this.resize=function(e,t){}}function Intro(e){var T=this;function t(e){var t=Math.floor(e/86400);e%=86400;var a=Math.floor(e/3600);a<10&&(a="0"+a),e%=3600;var i=Math.floor(e/60);i<10&&(i="0"+i),e%=60,(e=Math.floor(e))<10&&(e="0"+e);var n="";return t&&(n+=t+" "+_("daysShortText")+" "),n+=a+":"+i+":"+e}this.$tab=$("#tab-intro"),this.$tiles=this.$tab.find(".tab-intro-cards"),this.main=e,this.inited=!1,this.$template=$("#intro-template");var c={Uptime:t,"System uptime":t,RAM:function(e){var t=Math.floor(e/1073741824*10)/10;e%=1073741824;var a=Math.floor(e/1048576*10)/10,i="";return i+=1<t?t+" GB ":a+" MB "},Speed:function(e){return e+" MHz"},"Disk size":T.main.formatBytes,"Disk free":T.main.formatBytes};function u(e){var t=$("<textarea>");$(this).append(t),t.val($(this).data("clippy")),t.trigger("select"),document.execCommand("copy"),t.remove(),e.preventDefault(),e.stopPropagation(),T.main.showToast(T.$tiles,_("copied"))}function C(e){var t,l=T.$template.clone();if(l.removeAttr("id"),l.addClass("card-system-info"),l.find(".btn-small").addClass("disabled"),l.find(".card-titles").text(e.name),l.find(".btn-card-enabled").data("host",e.id),!1===T.main.systemConfig.common.intro[e.id]){if(!T.$tab.hasClass("edit-active"))return null;l.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close")}T.main.objects[e.id]&&T.main.objects[e.id].common&&(t=T.main.objects[e.id].common.icon),l.find(".card-image-img").attr("src",t||"img/no-image.png"),l.find(".card-content-text").html('<div class="preloader-wrapper small active">\n <div class="spinner-layer spinner-green-only">\n <div class="circle-clipper left">\n <div class="circle"></div>\n </div><div class="gap-patch">\n <div class="circle"></div>\n </div><div class="circle-clipper right">\n <div class="circle"></div>\n </div>\n </div>\n </div>');var d=setTimeout(function(){d&&(d=null,l.find(".btn-small").addClass("disabled"),l.find(".card-content-text").html(_("offline")))},6e3);return c["Disk size"]=c["Disk size"]||T.main.formatBytes,c["Disk free"]=c["Disk size"]||T.main.formatBytes,T.main.socket.emit("sendToHost",e.id,"getHostInfo",null,function(e){clearTimeout(d),d=null,"permissionError"===e?console.error('May not read "getHostInfo"'):e?l.find(".btn-small").removeClass("disabled"):console.error('Cannot read "getHostInfo"');var t=T.main.states["system.host."+T.main.currentHost+".diskWarning"];t=t?parseFloat(t.val):5;var a=0<e["Disk size"]&&e["Disk free"]&&Math.round(e["Disk free"]/e["Disk size"]*100)<t,i='<div class="card-content-text">';if(e){for(var n in i+="<ul>",e)!e.hasOwnProperty(n)||"Platform"!==n&&"NPM"!==n&&"RAM"!==n&&"Node.js"!==n||(i+="<li><b>"+_(n)+": </b>",i+='<span class="system-info" data-attribute="'+n+'">'+(c[n]?c[n](e[n]):e[n]||" --")+"</span></li>");a&&(i+="<li><b>"+_("Disk free")+": </b>",i+='<span class="system-info system-warning" data-attribute="Disk free">'+(c["Disk free"]?c["Disk free"](e["Disk free"]):e["Disk free"]||" --")+"</span></li>",i+="<li><b>"+_("Disk size")+": </b>",i+='<span class="system-info" data-attribute="Disk size">'+(c["Disk size"]?c["Disk size"](e["Disk size"]):e["Disk size"]||" --")+"</span></li>"),i+="</ul>"}i+="</div>",l.find(".card-content-text").replaceWith($(i)),i='<div class="card-reveal"><h5>'+_("Info")+'</h5><a class="btn-info" title="'+_("Copy to clipboard")+'"><i class="material-icons">content_copy</i></a><span class="card-title grey-text text-darken-4"><i class="material-icons right">close</i></span>';var s=[];if(e){for(var o in i+="<ul>",e)if(e.hasOwnProperty(o)){i+="<li><b>"+_(o)+": </b>";var r=c[o]?c[o](e[o]):e[o];s.push(o+": "+r),i+="Disk free"===o&&a?'<span class="system-info system-warning" data-attribute="'+o+'">'+r+"</span></li>":'<span class="system-info" data-attribute="'+o+'">'+r+"</span></li>"}i+="</ul>"}i+="</div>",l.find(".card-reveal").replaceWith($(i)),T.$tab.hasClass("edit-active")?l.find(".btn-small").hide():l.find(".btn-info").data("clippy",s.join("\r\n")).on("click",u)}),l}function k(e,t,a,i,n,s,o){var r=T.$template.clone();r.removeAttr("id");var l=n.replace(/^https?:\/\//,""),d=l.indexOf("/");if(-1!==d&&(l=l.substring(0,d)),"admin"===e&&l===location.host)return null;if("web"===e)return null;if("vis-web-admin"!==e&&e.match(/^vis-/))return null;if(e.match(/^icons-/))return null;if(i&&i.noIntro)return null;r.find(".btn-card-enabled").data("instance",e+"."+t+(a&&a.name?"."+a.name:"")).data("web",s),o?r.on("click",function(){T.$tab.hasClass("edit-active")||window.open($(this).find(".url").attr("href"))}):r.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close"),r.find(".url").attr("href","object"==typeof n?n._first:n||"").text(l+(s?" ("+s+")":"")),r.find(".card-image-img").attr("src",i.icon?"adapter/"+e+"/"+i.icon:"img/no-image.png"),a&&a.color&&r.find(".card-image").css("background",a.color);var c=a&&a.name||i.titleLang||i.title;"object"==typeof c&&(c=c[systemLang]||c.en),r.find(".card-titles").text(c||e);var u=i.desc;return"object"==typeof u&&(u=u[systemLang]||u.en),r.find(".card-content-text").text(u||""),r}function a(e,i){!function(e,t){var a,i,n,s=JSON.parse(JSON.stringify(e)),o=[];s.sort(function(e,t){return e=T.main.objects[e]&&T.main.objects[e].common,t=(t=T.main.objects[t]&&T.main.objects[t].common)||{},void 0===(e=e||{}).order&&void 0===t.order?e.name.toLowerCase()>t.name.toLowerCase()?1:e.name.toLowerCase()<t.name.toLowerCase()?-1:0:void 0===e.order?-1:void 0===t.order?1:e.order>t.order?1:e.order<t.order?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:e.name.toLowerCase()<t.name.toLowerCase()?-1:0});var r=T.$tab.hasClass("edit-active"),l=[];for(a=0;a<s.length;a++){var d=T.main.objects[s[a]],c=d&&d.common;if(c&&(c.enabled||c.onlyWWW)&&(c.localLinks||c.localLink)){var u=c.localLinks||c.localLink||"",p=s[a].substring("system.adapter.".length).split("."),m=p[1];p=p[0];var g=u?T.main.tabs.instances.replaceInLink(u,p,m):"";n=null;var f=T.main.systemConfig.common.intro[p+"."+m];if("object"==typeof g){var h=!0;for(var b in g)if(g.hasOwnProperty(b)){if(i=!0,void 0!==f){if(h&&"object"!=typeof f){var y=f;f={},(T.main.systemConfig.common.intro[p+"."+m]=f)[b]=y}!1===f[b]&&(i=!1)}if(h=!1,!r&&!i)continue;-1===l.indexOf(g[b])&&((n=k(p,m,null,c,g[b],b,i))&&o.push(n),l.push(g[b]))}}else{if(i=!0,!r&&void 0!==f){if("object"==typeof f)for(var M in f)if(f.hasOwnProperty(M)){f=f[M],T.main.systemConfig.common.intro[p+"."+m]=f;break}!1===f&&(i=!1)}for(var v=c.welcomeScreen;v;){if(f=T.main.systemConfig.common.intro[p+"."+m+"."+v.name],!r&&void 0!==f){if("object"==typeof f)for(var w in f)if(f.hasOwnProperty(w)){f=f[w],T.main.systemConfig.common.intro[p+"."+m+"."+v.name]=f;break}!1===f&&(i=!1)}if(T.main.systemConfig.common.intro[p+"."+m+"."+v.name]=f,r||i){var j=g,N=j.match(/https?:\/\/[.\w\d-]+:\d+\/(.*)$/);N?j=j.replace(N[1],v.link):j+=v.link,j!==g&&-1===l.indexOf(j)&&((n=k(p,m,v,c,j,null,i))&&o.push(n),l.push(j))}v=v===c.welcomeScreenPro?c.welcomeScreen:null}if(!r&&!i)continue;-1===l.indexOf(g)&&((n=k(p,m,null,c,g,null,i))&&o.push(n),l.push(g))}}}for(var L=0;L<T.main.tabs.hosts.list.length;L++)(n=C(T.main.tabs.hosts.list[L]))&&o.push(n);t(null,o)}(e=e||T.main.instances,function(e,t){T.$tiles.html("");for(var a=0;a<t.length;a++)T.$tiles.append(t[a]);T.$tab.hasClass("edit-active")&&T.$tiles.find(".btn-card-enabled").on("click",function(){!$(this).hasClass("gray")?($(this).removeClass("blue").addClass("gray").find("i").text("close"),$(this).parent().addClass("card-disabled")):($(this).addClass("blue").removeClass("gray").find("i").text("check"),$(this).parent().removeClass("card-disabled"))}),i&&i()})}this.prepare=function(){this.$tab.find(".btn-edit").off("click").on("click",function(){T.$tab.addClass("edit-active"),a()}),this.$tab.find(".btn-edit-ok").off("click").on("click",function(){!function(a){var t=[];T.$tiles.find(".btn-card-enabled").each(function(){var e=$(this).data("instance");e?t.push({id:e,enabled:!$(this).hasClass("gray"),web:$(this).data("web")}):t.push({id:$(this).data("host"),enabled:!$(this).hasClass("gray")})});for(var e=T.main.systemConfig.common.intro,i=!0,n=0;n<t.length;n++){var s,o=t[n].id;if(t[n].web){if(void 0!==e[o]&&"object"!=typeof e[o]){var r=e[o];e[o]={},e[o][t[n].web]=r}s=!e[o]||void 0===e[o][t[n].web]||e[o][t[n].web]}else{if(void 0!==e[o]&&"object"==typeof e[o])for(var l in e[o])if(e[o].hasOwnProperty(l)){e[o]=e[o][l];break}s=void 0===e[o]||e[o]}t[n].enabled!==s&&(i=!0,t[n].web?(e[o]=e[o]||{},e[o][t[n].web]=t[n].enabled):e[o]=t[n].enabled)}i?T.main.socket.emit("getObject","system.config",function(e,t){t?(t.common.intro=T.main.systemConfig.common.intro,T.main.socket.emit("setObject",t._id,t,function(e){a&&a()})):a&&a()}):a&&a()}(function(){T.$tab.removeClass("edit-active"),a(),T.main.showToast(T.$tiles,_("Updated"))})}),this.$tab.find(".btn-edit-cancel").off("click").on("click",function(){T.$tab.removeClass("edit-active"),a()})},this.init=function(e){var i;this.inited&&!e||(this.main.objectsLoaded?(T.main.systemConfig.common.intro=T.main.systemConfig.common.intro||{},i=function(e,t){a(t,function(){T.restoreScroll()})},T.main.socket.emit("getObjectView","system","instance",{startkey:"system.adapter.",endkey:"system.adapter.香"},function(e,t){if(e)i&&i(e,[]);else if(0===t.rows.length)i&&i(e,[]);else{T.main.instances=[];for(var a=0;a<t.rows.length;a++)T.main.instances.push(t.rows[a].id),T.main.objects[t.rows[a].id]=t.rows[a].value;i&&i(e,T.main.instances)}}),this.inited||(this.inited=!0,this.main.subscribeObjects("system.adapter.*"),this.main.subscribeObjects("system.host.*"))):setTimeout(function(){T.init(e)},250))},this.saveScroll=function(){this.scrollTop=this.$tiles.scrollTop()},this.restoreScroll=function(){T.scrollTop&&T.$tiles.scrollTop(T.scrollTop)},this.destroy=function(){this.inited&&(this.saveScroll(),this.inited=!1,this.main.unsubscribeObjects("system.adapter.*"),this.main.unsubscribeObjects("system.host.*"))},this.objectChange=function(e){this.inited&&(e.match(/^system\.adapter\.[a-zA-Z0-9-_]+\.\d+$/)||e.match(/^system\.host\./))&&(this.updateTimeout&&(this.updateTimeout=clearTimeout(this.updateTimeout)),this.updateTimeout=setTimeout(function(){a()},1e3))}}function Issue(e){var n=this;this.$dialogIssue=$("#dialog-issue"),this.main=e,this.prepare=function(){},this.init=function(){if(!this.inited){this.inited=!0,showdown.setFlavor("github");var e=this.main.navigateGetParams(),t=e.replace(/^system\.adapter\./,""),a=this.main.objects[e];if(a&&a.common&&a.common.extIcon){var i=a.common.extIcon.split("/"),r=n.$dialogIssue.find("#result-issue");r.html('<div class="loader"><svg class="spinner" width="100%" height="100%" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">\n <circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>\n</svg></div>');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var a in r.empty(),e)if(e.hasOwnProperty(a)){if("remove"===a)break;var i=e[a];if(!i.hasOwnProperty("pull_request")){t=!0;var n=$("#issueTable").children().clone(!0,!0);n.find(".collapsible-header-title").text(i.title),n.find(".goto").attr("href",i.html_url),n.find(".user").text(i.user.login),n.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(n.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0<i.labels.length)for(var o in i.labels)if(i.labels.hasOwnProperty(o)){if("remove"===o)break;n.find(".category").append('<a class="btn-floating btn-small translateT" style="background:#'+i.labels[o].color+';" title="'+i.labels[o].name+'"><span>'+i.labels[o].name+"</span></a>")}r.append(n),0}}t||r.append($('<li><h3 class="title">'+_("No bug")+"</h3></li>"))}).done(n.$dialogIssue.find(".collapsible").collapsible())}n.$dialogIssue.data("name",t),n.$dialogIssue.find(".title").html(_("Known bugs for")+": "+t),n.$dialogIssue.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),n.$dialogIssue.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),n.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialogIssue.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Logs(t){var l=this;this.main=t,this.$tab=$("#tab-logs");var s,d,o,c,r={count:0,start:0,limit:2e3},u={host:"",severity:"",message:""},p={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null};this.prepare=function(){d=this.$tab.find("#log-outer"),s=this.$tab.find("#log-table"),o=this.$tab.find("#log-pause"),(c=new IobListHeader("log-outer-header",{list:d,colWidthOffset:1,prefix:"log-filter"})).doFilter=l.filter,c.add("combobox","from","host"),c.add("text","Time"),c.add("combobox","","severity",[{val:"",name:"debug"},{val:"silly",name:"silly"},{val:"info",name:"info"},{val:"warn",name:"warn"},{val:"error",name:"error"}]).$filter.attr("title",_("severity")),c.add("edit","Message","message"),this.$tab.find("#log-clear-on-disk").on("click",function(){l.main.confirmMessage(_("Log file will be deleted. Are you sure?"),null,null,function(e){e&&l.main.socket.emit("sendToHost",t.currentHost,"delLogs",null,function(e){e?l.main.showError(e):l.clear()})})}).addClass("ui-state-error"),this.$tab.find("#log-refresh").on("click",function(){l.clear()}),o.attr("title",_("Pause output")).on("click",function(){l.pause()}),p.$counterSpan=o.find("ui-button-text"),this.$tab.find("#log-clear").on("click",function(){l.clear(!1)}),$("#log-copy-text").on("click",function(){$(this).hide().html("")}),this.$tab.find("#log-copy").on("click",function(){var e='<span class="error">'+_("copy note")+"</span>";$("#log-copy-text").show().html(e+'<br><table style="width: 100%; font-size: 12px" id="log-copy-table">'+s.html()+"</table>");for(var t=l.$tab.find("#log-copy-table").find(".log-column-4"),a=0;a<t.length;a++){var i=$(t[a]);i.html(i.attr("title")),i.attr("title","")}})},this.init=function(e){if(!this.inited||e)if(this.main.currentHost){s.html("");var r=!this.inited;this.inited=!0,this.main.socket.emit("sendToHost",this.main.currentHost,"getLogs",200,function(o){setTimeout(function(){var e={message:"",severity:"debug",from:"",ts:""},t=o?o.pop():-1;-1!==t&&(t=parseInt(t),l.$tab.find("#log-size").html((_("Log size:")+" "+(t/1048576).toFixed(2)+" MB ").replace(/ /g,"&nbsp;")));for(var a=0,i=o.length;a<i;a++)if(o[a]){var n=o[a];if("-"===n[4]&&"-"===n[7]){n=n.replace(/(\[[0-9]+m)/g,""),e.ts=n.substring(0,23);var s=(n=n.substring(27)).indexOf(":");e.severity=n.substring(0,s),27===e.severity.charCodeAt(e.severity.length-1)&&(e.severity=e.severity.substring(0,e.severity.length-1)),27===e.severity.charCodeAt(0)&&(e.severity=e.severity.substring(1)),s=(n=n.substring(s+2)).indexOf(" "),e.from=n.substring(0,s),e.message=n.substring(s)}else e.message=n;l.add(e)}!function e(){$.fn.colResizable&&(d.is(":visible")?(d.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return c.syncHeader()}}),c&&c.syncHeader()):setTimeout(function(){e()},200))}(),u.host=c.host.val(),u.message=c.message.val(),u.severity=c.severity.val(),r&&l.main.subscribeLogs(!0),l.main.socket.emit("readLogs",function(e,t){if(t&&t.length){var a="";t.reverse();for(var i=0;i<t.length;i++){var n=t[i].split("/").pop().replace(/yunkong2\.?/,"").replace(".log","");n[0]<="9"&&(a+='<li><a data-value="'+t[i]+'">'+n+"</a></li>")}t.sort();for(var s=0;s<t.length;s++){var o=t[s].split("/").pop().replace(/yunkong2\.?/,"").replace(".log","");"9"<o[0]&&(a+='<li><a data-value="'+t[s]+'">'+o+"</a></li>")}l.$tab.find("#log-files-btn").show().dropdown(),l.$tab.find("#log-files").html(a).find("a").on("click",function(){var e=$(this).data("value");e&&($(this).val(""),window.open(e,"_blank").focus())})}else l.$tab.find("#log-files").hide(),l.$tab.find("#log-files-btn").hide()})},0)})}else setTimeout(function(){l.init(e)},100)},this.destroy=function(){this.inited&&(this.inited=!1,this.main.subscribeLogs(!1))},this.add=function(e){if(s){if(e.message.substring(0,e.from.length)===e.from&&(e.message=e.message.substring(e.from.length+1)),p.mode)return p.list.push(e),p.counter++,p.counter>r.limit&&(p.overflow||(o.addClass("ui-state-error").attr("title",_("Message buffer overflow. Losing oldest")),p.overflow=!0),p.list.shift()),void p.$counterSpan.html(tdp(p.counter));if(r.count>=r.limit){var t=document.getElementById("log-line-"+(r.start+1));t&&(t.outerHTML=""),r.start++}else r.count++;e.from&&c&&c.host.checkAddOption(e.from,function(e){return{val:e.replace(/\./g,"-"),name:e}});var a="",i=e.from?e.from.replace(/\./g,"-"):"";u.host&&u.host!==i&&(a="display: none"),!a&&u.severity&&("debug"===u.severity&&"silly"===e.severity?a="display: none":"info"!==u.severity||"debug"!==e.severity&&"silly"!==e.severity?"warn"===u.severity&&"warn"!==e.severity&&"error"!==e.severity?a="display: none":"error"===u.severity&&"error"!==e.severity&&(a="display: none"):a="display: none"),!a&&u.message&&-1===e.message.indexOf(u.message)&&(a="display: none"),"error"===e.severity&&(l.$tabLogs=l.$tabLogs||$('a[href="#tab-logs"]'),l.$tabLogs.addClass("errorLog"));var n='<tr id="log-line-'+(r.start+r.count)+'" class="log-line log-severity-'+e.severity+" "+(i?"log-from-"+i:"")+'" style="'+a+'">';n+='<td class="log-column-1">'+(e.from||"")+"</td>",n+='<td class="log-column-2">'+this.main.formatDate(e.ts)+"</td>",n+='<td class="log-column-3">'+e.severity+"</td>",n+='<td class="log-column-4" title="'+e.message.replace(/"/g,"'")+'">'+e.message.substring(0,200).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")+"</td></tr>",s.prepend(n)}},this.filter=function(){u.host=c.host.val(),u.message=c.message.val(),u.severity=c.severity.val(),"error"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide(),d.find(".log-severity-info").hide(),d.find(".log-severity-warn").hide()):("warn"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide(),d.find(".log-severity-info").hide()):("info"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide()):("silly"===u.severity?d.find(".log-severity-silly").show():d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").show()),d.find(".log-severity-info").show()),d.find(".log-severity-warn").show()),d.find(".log-severity-error").show(),(u.host||u.message)&&d.find(".log-line").each(function(){u.host&&!$(this).hasClass("log-from-"+u.host)?$(this).hide():u.message&&-1===$(this).html().indexOf(u.message)&&$(this).hide()})},this.clear=function(e){void 0===e&&(e=!0),s.html(""),r.count=0,r.start=0,l.$tabLogs=l.$tabLogs||$('a[href="#tab-logs"]'),l.$tabLogs.removeClass("errorLog"),e&&setTimeout(function(){l.init(e)},0)},this.pause=function(){if(p.mode){p.mode=!1;for(var e=0;e<p.list.length;e++)this.add(p.list[e]);p.overflow=!1,p.list=[],p.counter=0,o.removeClass("yellow btn-pause-button-active").html('<i class="material-icons">pause</i>')}else o.addClass("yellow btn-pause-button-active"),p.$counterSpan=o,p.$counterSpan.html("0"),p.counter=0,p.mode=!0}}function Issue(e){var n=this;this.$dialog=$("#dialog-issue"),this.main=e,this.prepare=function(){},this.init=function(){if(!this.inited){this.inited=!0,showdown.setFlavor("github");var e=this.main.navigateGetParams(),t=e.replace(/^system\.adapter\./,""),a=this.main.objects[e];if(a&&a.common&&a.common.extIcon){var i=a.common.extIcon.split("/"),r=$("#result-issue");r.html('<div class="loader"><svg class="spinner" width="100%" height="100%" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">\n <circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>\n</svg></div>');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var a in r.empty(),e)if(e.hasOwnProperty(a)){if("remove"===a)break;var i=e[a];if(!i.hasOwnProperty("pull_request")){t=!0;var n=$("#issueTable").children().clone(!0,!0);n.find(".collapsible-header-title").text(i.title),n.find(".goto").attr("href",i.html_url),n.find(".user").text(i.user.login),n.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(n.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0<i.labels.length)for(var o in i.labels)if(i.labels.hasOwnProperty(o)){if("remove"===o)break;n.find(".category").append('<a class="btn-floating btn-small translateT" style="background:#'+i.labels[o].color+';" title="'+i.labels[o].name+'"><span>'+i.labels[o].name+"</span></a>")}r.append(n),0}}t||r.append($('<li><h3 class="title">'+_("No bug")+"</h3></li>"))}).done(n.$dialog.find(".collapsible").collapsible())}n.$dialog.data("name",t),n.$dialog.find(".title").html(_("Known bugs for")+": "+t),n.$dialog.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),n.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),n.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialog.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Objects(e){var l=this;this.$grid=$("#grid-objects"),this.subscribes={},this.main=e;var o=function(){if(l.$grid&&l.$grid.selectId)return o=l.$grid.selectId.bind(l.$grid),l.$grid.selectId.apply(l.$grid,arguments)};function r(t,e,a){for(var i=l.main.tabs.enums.list,n=[],s=0;s<i.length;s++)i[s].substring(0,"enum.".length+e.length+1)==="enum."+e+"."&&n.push(i[s]);!function t(a,i,n,s){if(i&&i.length){var e=i.pop();if(l.main.objects[e]&&l.main.objects[e].common){var o=0;if(l.main.objects[e].common.members&&l.main.objects[e].common.members.length){var r=l.main.objects[e].common.members.indexOf(a);-1!==r&&-1===n.indexOf(e)&&(l.main.objects[e].common.members.splice(r,1),o++,l.main.socket.emit("setObject",e,l.main.objects[e],function(e){e&&l.main.showError(e),--o||setTimeout(function(){t(a,i,n,s)},0)}))}-1===n.indexOf(e)||l.main.objects[e].common.members&&-1!==l.main.objects[e].common.members.indexOf(a)||(l.main.objects[e].common.members=l.main.objects[e].common.members||[],l.main.objects[e].common.members.push(a),o++,l.main.socket.emit("setObject",e,l.main.objects[e],function(e){e&&l.main.showError(e),--o||setTimeout(function(){t(a,i,n,s)},0)}))}o||setTimeout(function(){t(a,i,n,s)},0)}else s&&s()}(t,n,a,function(e){e&&l.main.showError(e),o("object",t,l.main.objects[t])})}function n(e){console.log("Subscribe: "+e),l.main.subscribeStates(e),l.main.socket.emit("getForeignStates",e,function(e,t){if(t)for(var a in t)console.log("Update "+a),t.hasOwnProperty(a)&&(!t[a]&&l.main.states[a]?(l.main.states[a]={val:null},l.stateChange(a,l.main.states[a])):l.main.states[a]&&l.main.states[a].ts===t[a].ts||(l.main.states[a]=t[a],l.stateChange(a,t[a])));else e&&console.error("requestStates error: "+e)})}function a(){for(var e in l.subscribes){if(l.subscribes.hasOwnProperty(e))l.main.objects[e]&&"state"===l.main.objects[e].type?(l.main.unsubscribeStates(e),console.log("Unsubscribe: "+e)):(l.main.unsubscribeStates(e+".*"),console.log("Unsubscribe: "+e+".*"))}}function s(a,i){if(a)for(var e in a)if(a.hasOwnProperty(e)&&a[e]){var n=a[e];return a[e]=null,void l.main.socket.emit("setObject",e,n,function(e){e?l.main.showError(e):"state"===n.type?l.main.socket.emit("getState",n._id,function(e,t){t&&null!==t.val||l.main.socket.emit("setState",n._id,n.common&&void 0!==n.common.def?n.common.def:null,!0),setTimeout(s,0,a,i)}):setTimeout(s,0,a,i)})}i&&i()}this.prepare=function(){$(document).on("click",".jump",function(e){return l.main.navigate({dialog:"editobject",params:$(this).attr("data-jump-to")}),e.preventDefault(),!1}),$("#load_grid-objects").show();var o=$("#dialog-new-object");o.modal(),o.find(".btn-add").off("click").on("click",function(){var e=o.find("#object-tab-new-object-name").val(),t=e.trim(),a=o.find("#object-tab-new-object-parent").val();t=a?a+"."+t:t;var i,n=o.find("#object-tab-new-object-type").val(),s=o.find("#object-tab-new-state-type").val();(t=t.replace(FORBIDDEN_CHARS,"_"),l.main.objects[t])?l.main.showError(_('Object "%s" yet exists!',t)):("state"===n?(i={_id:t,type:"state",common:{name:e,role:"",type:s,read:!0,write:!0,desc:_("Manually created")},native:{}},"boolean"===s?i.common.def=!1:"switch"===s?(i.common.type="boolean",i.common.def=!1,i.common.states="false:no;true:yes"):"string"===s?i.common.def="":"number"===s?(i.common.min=0,i.common.max=100,i.common.def=0,i.common.unit="%"):"enum"===s&&(i.common.type="number",i.common.min=0,i.common.max=5,i.common.def=0,i.common.states="0:zero;1:one;2:two;3:three;4:four;5:five")):i="channel"===n?{_id:t,type:"channel",common:{name:e,role:"",icon:"",desc:_("Manually created")},native:{}}:{_id:t,type:"device",common:{name:e,role:"",icon:"",desc:_("Manually created")},native:{}},l.main.socket.emit("setObject",t,i,function(e){e?l.main.showError(e):setTimeout(function(){l.main.navigate({dialog:"editobject",params:t+",def"})},1e3)}))}),o.find("#object-tab-new-object-type").select(),o.find("#object-tab-new-state-type").select(),o.find("#object-tab-new-object-name").on("keyup",function(){$(this).trigger("change")}).on("change",function(){var e=o.find("#object-tab-new-object-parent").val(),t=o.find("#object-tab-new-object-name").val();t=e?e+"."+t:t,o.find(".title").html(_("Add new object: %s",t))}),o.find("#object-tab-new-object-type").on("change",function(){"state"===$(this).val()?o.find(".object-tabe-new-object-tr").show():o.find(".object-tab-new-object-tr").hide()})},this.stateChange=function(e,t){this.$grid&&o("state",e,t)},this.objectChange=function(e,t,a){this.$grid&&o("object",e,t,a)},this.reinit=function(){this.main.dialogs.customs.check(),this.$grid&&(o("option","useHistory",this.main.dialogs.customs.customEnabled),o("reinit"))},this.saveScroll=function(){this.scrollTop=this.$grid.find(".grid-main-wh-div").scrollTop()},this.restoreScroll=function(){this.scrollTop&&this.$grid.find(".grid-main-wh-div").scrollTop(this.scrollTop)},this.init=function(e){if(!this.inited||e){if(e&&(a(),this.subscribes={}),void 0!==this.$grid){null===this.main.dialogs.customs.customEnabled&&this.main.dialogs.customs.check();var t={objects:this.main.objects,states:this.main.states,noDialog:!0,stats:!0,name:"admin-objects",useValues:["ID","name","value.from","value.q","value.ts","value.lc","value.val","button"],useHistory:this.main.dialogs.customs.customEnabled,showButtonsForNotExistingObjects:!0,expertModeRegEx:/^system\.|^yunkong2\.|^_|^[\w-]+$|^enum\.|^[\w-]+\.admin|^script\./,texts:{select:_("Select"),cancel:_("Cancel"),all:_("All"),id:_("ID"),ID:_("ID"),name:_("Name"),role:_("Role"),room:_("Room"),function:_("Function"),value:_("Value"),type:_("Type"),selectid:_("Select ID"),from:_("From"),lc:_("Last changed"),ts:_("Time stamp"),wait:_("Processing..."),ack:_("Acknowledged"),expand:_("Expand all nodes"),collapse:_("Collapse all nodes"),refresh:_("Rebuild tree"),edit:_("Edit"),push:_("Trigger event"),ok:_("Ok"),with:_("With"),without:_("Without"),copyToClipboard:_("Copy to clipboard"),expertMode:_("Toggle expert mode"),sort:_("Sort alphabetically"),button:_("Settings"),editDialog:_("Edit in dialog"),noData:_("No data"),Objects:_("Objects"),States:_("States"),toggleValues:_("Toggle states view"),user:_("User")},columns:["ID","name","type","role","room","function","value","button"],expandedCallback:function(e,t,a){a&&function(e){"string"==typeof e&&(e=[e]);for(var t=0;t<e.length;t++){if(console.log("Expanded: "+e[t]),l.subscribes[e[t]])return l.subscribes[e[t]]++;for(var a in l.subscribes)if(l.subscribes.hasOwnProperty(a)&&e[t].substring(0,a.length)+"."==a+".")return l.subscribes[a]++;l.subscribes[e[t]]=1;var i=l.main.objects[e[t]];i&&"state"===i.type?n(e[t]):n(e[t]+".*")}}(e)},collapsedCallback:function(e,t,a){!function(e){if(console.log("Collapsed: "+e),l.subscribes[e]){if(l.subscribes[e]--,!l.subscribes[e]){var t=l.main.objects[e];t&&"state"===t.type?(console.log("Unsubscribe: "+e),l.main.unsubscribeStates(e)):(console.log("Unsubscribe: "+e+".*"),l.main.unsubscribeStates(e+".*")),delete l.subscribes[e]}}else for(var a in l.subscribes)if(l.subscribes.hasOwnProperty(a)&&a.substring(0,e.length)+"."==e+"."&&(l.subscribes[a]--,!l.subscribes[a])){var i=l.main.objects[a];i&&"state"===i.type?(l.main.unsubscribeStates(a),console.log("Unsubscribe: "+a)):(l.main.unsubscribeStates(a+".*"),console.log("Unsubscribe: "+a+".*")),delete l.subscribes[a]}}(e)},buttons:[{text:!1,icons:{primary:"ui-icon-pencil"},"material-icon":"edit",click:function(e){l.main.navigate({dialog:"editobject",params:e})},match:function(e){l.main.objects[e]||(this[0].outerHTML='<div class="td-button-placeholder"></div>')},width:26,height:20},{text:!1,icons:{primary:"ui-icon-trash"},"material-icon":"delete",click:function(e){e&&l.main.delObject(l.$grid,e,function(e){e&&l.main.showError(e)})},match:function(e){l.main.objects[e]&&l.main.objects[e].common&&l.main.objects[e].common.dontDelete&&this.hide()},width:26,height:20},{text:!1,icons:{primary:"ui-icon-gear"},"material-icon":"build",click:function(e){l.main.dialogs.customs.ids=null,l.main.navigate({dialog:"customs",params:e})},width:26,height:20,match:function(e){if(l.main.objects[e]&&l.main.dialogs.customs.customEnabled&&!e.match(/\.messagebox$/)&&"state"===l.main.objects[e].type){var t=!1;if(l.main.objects[e]&&l.main.objects[e].common&&l.main.objects[e].common.custom){var a=l.main.objects[e].common.custom;for(var i in void 0!==a.enabled&&(a=l.main.objects[e].common.custom=a.enabled?{"history.0":a}:{}),a)if(a.hasOwnProperty(i)){t=!0;break}}t?this.addClass("custom-enabled").removeClass("custom-disabled"):(delete l.main.objects[e].common.custom,this.addClass("custom-disabled").removeClass("custom-enabled"))}else this.hide()}}],panelButtons:[{text:!1,icons:{primary:"ui-icon-plus"},"material-icon":"add",title:_("Add new child object to selected parent"),click:function(){var e=o("getActual")||"",t=$("#dialog-new-object");t.find("#object-tab-new-object-parent").val(e),t.find("#object-tab-new-object-name").val(_("newObject")),l.main.objects[e]&&"device"===l.main.objects[e].type?t.find("#object-tab-new-object-type").val("channel"):(l.main.objects[e]&&l.main.objects[e].type,t.find("#object-tab-new-object-type").val("state")),t.modal("open"),t.find("h6").html(_("Add new object: %s",(e?e+".":"")+_("newObject"))),t.find("#object-tab-new-object-name").focus()}},{text:!1,id:"add_object_tree","material-icon":"file_upload",icons:{primary:"ui-icon-arrowthickstop-1-n"},title:_("Add Objecttree from JSON File"),click:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity",0),e.addEventListener("change",function(e){!function(e){var t=e.target.files[0];if(t){var a=new FileReader;a.onload=function(e){var t=e.target.result,a=JSON.parse(t),i=Object.keys(a).length,n=a._id;void 0===n&&1<i?s(a,function(){l.main.showToast(l.$grid.find(".main-toolbar-table"),_("%s object(s) processed",Object.keys(a).length))}):l.main.socket.emit("setObject",a._id,a,function(e){e?l.main.showError(e):("state"===a.type&&l.main.socket.emit("setState",a._id,void 0===a.common.def?null:a.common.def,!0),l.main.showToast(l.$grid.find(".main-toolbar-table"),_("%s was imported",a._id)))})},a.readAsText(t)}else alert("Failed to open JSON File")}(e)},!1),e.click()}},{text:!1,id:"save_object_tree",icons:{primary:"ui-icon-arrowthickstop-1-s"},"material-icon":"file_download",title:_("Save Objecttree as JSON File"),click:function(){var e,t,a,i=o("getActual")||"",n={};$.map(l.main.objects,function(e,t){t.search(i)||(n[t]=e)}),void 0!==n?(e=i+".json",t=n,(a=document.createElement("a")).setAttribute("href","data:application/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(t,null,2))),a.setAttribute("download",e),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)):alert(_("Save of objects-tree is not possible"))}}],quickEdit:["name","value","role","function","room","value.val"],quickEditCallback:function(a,i,n,e,t){if("room"===i)r(a,"rooms",n);else if("function"===i)r(a,"functions",n);else if("value"===i){if(l.main.objects[a]&&l.main.objects[a].common&&l.main.objects[a].common.type)switch(l.main.objects[a].common.type){case"number":var s=parseFloat(n);isNaN(s)&&(s="false"===n?0:~~n),n=s;break;case"boolean":"true"===n&&(n=!0),"false"===n&&(n=!1);break;case"string":n=n.toString();break;default:"true"===n&&(n=!0),"false"===n&&(n=!1),parseFloat(n).toString()===n.toString().replace(/[.,]0*$/,"")&&(n=parseFloat(n))}t=t||!1,l.main.socket.emit("setState",a,{val:n,ack:t},function(e){if(e)return l.main.showError(e)})}else l.main.socket.emit("getObject",a,function(e,t){if(e)return l.main.showError(e);t||(t={type:"meta",common:{typ:"meta.user",role:""},native:{},_id:a}),t.common[i]=n,l.main.socket.emit("setObject",t._id,t,function(e){e&&l.main.showError(e)})})}};this.main.dialogs.customs.customEnabled?t.customButtonFilter={icons:{primary:"ui-icon-gear"},"material-icon":"build",text:!1,callback:function(){for(var e=o("getFilteredIds"),t=[],a=0;a<e.length;a++)l.main.objects[e[a]]&&"state"===l.main.objects[e[a]].type&&t.push(e[a]);t&&t.length?t.length<10?(l.main.dialogs.customs.ids=null,l.main.navigate({dialog:"customs",params:t.join(",")})):(l.main.dialogs.customs.ids=t,l.main.navigate({dialog:"customs"})):l.main.showMessage(_("No states selected!"),"","info_outline")}}:t.customButtonFilter=null,o("init",t).selectId("show",null,null,function(){l.restoreScroll()})}this.inited||(this.inited=!0,this.main.subscribeObjects("*"),function(){for(var e in l.subscribes)l.subscribes.hasOwnProperty(e)&&(l.main.objects[e]&&"state"===l.main.objects[e].type?n(e):n(e+".*"))}())}},this.destroy=function(){this.inited&&(this.saveScroll(),l.main.unsubscribeObjects("*"),this.inited=!1,a())}}function Readme(e){var o=this;function r(e,t){var a=(new showdown.Converter).makeHtml(e);return(a=(a=(a=(a=a.replace(/id="/g,'id="mdid-')).replace(/src="(?!http)/g,'class="responsive-img" src="'+t)).replace(/href="#/g,'href="" class="goto-link" data-goto="#mdid-')).replace(/href="(\S*).md/g,function(e){return'href="" class="md-link" data-url="'+o.mainUrl+e.replace('href="',"")})).replace(/href="http/g,'target="_blank" href="http')}function l(e){for(var t=e.length-1;0<=t&&!e[t];)t--;return t!==e.length-1&&e.splice(t),e}this.$dialog=$("#dialog-readme"),this.$divReadme=this.$dialog.find(".result-readme"),this.$divChangeLog=this.$dialog.find(".result-changelog"),this.$divLicense=this.$dialog.find(".result-license"),this.$divLogo=this.$dialog.find(".result-logo"),this.$tabs=this.$dialog.find(".tabs"),this.mainUrl="",this.main=e,this.prepare=function(){},this.init=function(){if(!this.inited){this.inited=!0,this.$tabs.data("inited")||(this.$tabs.data("inited",!0),this.$tabs.mtabs()),showdown.setFlavor("github");var e=this.main.navigateGetParams(),t=o.main.tabs.adapters.$tab.find('.adapter-readme-submit[data-adapter-name="'+e+'"]').data("adapter-url");if(t||(t=localStorage.getItem("original-md-url")),t){localStorage.setItem("original-md-url",t);var a=(t=t.replace("https://github.com","https://raw.githubusercontent.com").replace("blob/","")).split("/");o.mainUrl="https://raw.githubusercontent.com/"+a[3]+"/"+a[4]+"/master/",o.$dialog.find(".title").html(e),o.$divReadme.empty(),o.fillDiv(t)}o.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),localStorage.removeItem("original-md-url"),o.main.navigate()})}},this.fillDiv=function(i){$.get(i,function(e){var t=i.replace("https://raw.githubusercontent.com","https://github.com").replace("/master/","/blob/master/");o.$dialog.find(".dialog-system-buttons .btn-open-org").attr("href",t);var a=function(e,t){var a={logo:"",readme:[],changeLog:[],license:[]},i=e.trim().split(/\r\n|\n/);i[2].match(/^#\sio/)&&i.splice(2,1),i[1].match(/^#\sio/)&&i.splice(1,1),i[0].match(/!\[[-_\w\d]*]\([-._\w\d\/]+\.png\)/)&&(a.logo=t+i[0].match(/\((.+)\)/)[1],i.splice(0,1));for(var n="readme",s=0;s<i.length;)i[s].match(/^====/)||(i[s].match(/^###?\s+Changelog/)?n="changeLog":i[s].match(/^###?\s+License/)?n="license":(a[n].length||i[s])&&a[n].push(i[s])),s++;return a.logo?o.$divLogo.html('<img src="'+a.logo+'" />').show():o.$divLogo.html("").hide(),l(a.readme),l(a.changeLog),l(a.license),a.readme.length?a.readme=r(a.readme.join("\n"),t):a.readme="",a.changeLog.length?a.changeLog=r(a.changeLog.join("\n"),t):delete a.changeLog,a.license.length?(a.license[0]="## "+a.license[0],a.license=r(a.license.join("\n"),t)):delete a.license,a}(e,i.substring(0,i.lastIndexOf("/")+1));o.$divReadme.html(a.readme),a.changeLog?(o.$divChangeLog.html(a.changeLog),o.$tabs.find(".tab-changelog").show()):(o.$divChangeLog.html(""),o.$tabs.find(".tab-changelog").hide()),a.license?(o.$divLicense.html(a.license),o.$tabs.find(".tab-license").show()):(o.$divLicense.html(""),o.$tabs.find(".tab-license").hide())}).done(function(){o.$divReadme.on("click",".md-link",function(e){e.stopPropagation(),e.preventDefault(),o.fillDiv($(this).data("url"))}),o.$divReadme.on("click",".goto-link",function(e){e.stopPropagation(),e.preventDefault();var t=$($(this).data("goto"));t.length&&o.$divReadme.animate({scrollTop:o.$divReadme.scrollTop()-o.$divReadme.offset().top+t.offset().top},2e3)})})},this.destroy=function(){this.inited&&(localStorage.removeItem("original-md-url"),this.inited=!1)}}function initMap(){gMain.dialogs.system.mapLoaded=!0,gMain.dialogs.system.updateMap(!0)}function System(s){var n,o,r,l,d=this;this.$dialog=$("#dialog-system"),this.main=s,this.systemRepos=null,this.systemCerts=null;var c=!(this.mapLoaded=!1);function u(e,t){if(t.length<700&&(-1!==t.indexOf("/")||-1!==t.indexOf("\\")))return t;if(t.length<"-----BEGIN CERTIFICATE-----==-----END CERTIFICATE-----".length)return g(_('Invalid certificate "%s". To short.',e),!0),"";var a=[];if("-----BEGIN RSA PRIVATE KEY-----"===t.substring(0,"-----BEGIN RSA PRIVATE KEY-----".length)){if("-----END RSA PRIVATE KEY-----"!==t.substring(t.length-"-----END RSA PRIVATE KEY-----".length))return g(_('Certificate "%s" must end with "-----END RSA PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN RSA PRIVATE KEY-----".length)).substring(0,t.length-"-----END RSA PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)a.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN RSA PRIVATE KEY-----\r\n"+a.join("\r\n")+"\r\n-----END RSA PRIVATE KEY-----\r\n"}if("-----BEGIN PRIVATE KEY-----"===t.substring(0,"-----BEGIN PRIVATE KEY-----".length)){if("-----END PRIVATE KEY-----"!==t.substring(t.length-"-----END PRIVATE KEY-----".length))return g(_('Certificate "%s" must end with "-----BEGIN PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN PRIVATE KEY-----".length)).substring(0,t.length-"-----END PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)a.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN PRIVATE KEY-----\r\n"+a.join("\r\n")+"\r\n-----END PRIVATE KEY-----\r\n"}if("-----BEGIN CERTIFICATE-----"!==t.substring(0,"-----BEGIN CERTIFICATE-----".length))return g(_('Certificate "%s" must start with "-----BEGIN CERTIFICATE-----".',e),!0),"";if("-----END CERTIFICATE-----"!==t.substring(t.length-"-----END CERTIFICATE-----".length))return g(_('Certificate "%s" must end with "-----END CERTIFICATE-----".',e),!0),"";for(var i=t.split("-----END CERTIFICATE-----"),n=i.length-1;0<=n;n--)if(i[n].replace(/[\r\n|\r|\n]+/,"").trim()){for(t=(t=(t=i[n]).substring("-----BEGIN CERTIFICATE-----".length)).replace(/\s/g,""),a=[];t.length;)a.push(t.substring(0,64)),t=t.substring(64);i[n]="-----BEGIN CERTIFICATE-----\r\n"+a.join("\r\n")+"\r\n-----END CERTIFICATE-----\r\n"}else i.splice(n,1);return i.join("")}function p(e,t){for(var a,i=table2values("tab-system-certs"),n=[],s=0;s<i.length;s++)n.push(i[s].name);for(var o=e||_("New"),r=1;(a=-1!==n.indexOf(o+r))&&r++,a;);i.push({name:o+r,certificate:t||""}),values2table("tab-system-certs",i)}function m(){if(d.systemRepos&&d.systemRepos.native.repositories){var e=[];for(var t in d.systemRepos.native.repositories)if(d.systemRepos.native.repositories.hasOwnProperty(t)){var a=d.systemRepos.native.repositories[t];e.push({name:t,link:"object"==typeof a?a.link:a})}if(values2table("tab-system-repo",e,{onChange:function(e){d.$dialog.find(".btn-save").removeClass("disabled"),e&&"name"!==e||function(){var e=d.$dialog.find("#system_activeRepo"),t=e.val(),a=!1;e.html("");for(var i=table2values("tab-system-repo"),n=0;n<i.length;n++)e.append('<option value="'+i[n].name+'">'+i[n].name+"</option>"),t===i[n].name&&(a=!0);a&&e.val(t);e.select()}()}}),d.systemRepos.nonEdit&&d.systemRepos.nonEdit.native&&d.systemRepos.nonEdit.native.repositories){var i=d.$dialog.find("#grid-repos");i.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find(".btn-floating").each(function(){$(this).addClass("disabled")}),d.$dialog.find("#tab-system-repo .table-button-add").addClass("disabled")}}else d.$dialog.find("#tab-system-repo").html(_("permissionError"))}function g(e,t,a){d.main.showToast(d.$dialog.find("#tab-system-certs"),e,null,a,t)}function f(){var a=d.main.systemConfig.common,i=!1,n=!1;!function(){d.main.systemConfig.common.defaultNewAcl=d.main.systemConfig.common.defaultNewAcl||{};var e=d.main.systemConfig.common.defaultNewAcl,t=JSON.stringify(e);e.object=0,e.object|=d.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked")?1024:0,e.object|=d.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked")?512:0,e.object|=d.$dialog.find("#tab-system-acl-obj-group-read").prop("checked")?64:0,e.object|=d.$dialog.find("#tab-system-acl-obj-group-write").prop("checked")?32:0,e.object|=d.$dialog.find("#tab-system-acl-obj-every-read").prop("checked")?4:0,e.object|=d.$dialog.find("#tab-system-acl-obj-every-write").prop("checked")?2:0,e.owner=d.$dialog.find("#tab-system-acl-owner").val(),e.ownerGroup=d.$dialog.find("#tab-system-acl-group").val(),e.state=0,e.state|=d.$dialog.find("#tab-system-acl-state-owner-read").prop("checked")?1024:0,e.state|=d.$dialog.find("#tab-system-acl-state-owner-write").prop("checked")?512:0,e.state|=d.$dialog.find("#tab-system-acl-state-group-read").prop("checked")?64:0,e.state|=d.$dialog.find("#tab-system-acl-state-group-write").prop("checked")?32:0,e.state|=d.$dialog.find("#tab-system-acl-state-every-read").prop("checked")?4:0,e.state|=d.$dialog.find("#tab-system-acl-state-every-write").prop("checked")?2:0,e.file=0,e.file|=d.$dialog.find("#tab-system-acl-file-owner-read").prop("checked")?1024:0,e.file|=d.$dialog.find("#tab-system-acl-file-owner-write").prop("checked")?512:0,e.file|=d.$dialog.find("#tab-system-acl-file-group-read").prop("checked")?64:0,e.file|=d.$dialog.find("#tab-system-acl-file-group-write").prop("checked")?32:0,e.file|=d.$dialog.find("#tab-system-acl-file-every-read").prop("checked")?4:0,e.file|=d.$dialog.find("#tab-system-acl-file-every-write").prop("checked")?2:0,JSON.stringify(e)}(),d.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?a[t]=e.prop("checked"):("language"===t&&a.language!==e.val()&&(i=!0),"activeRepo"===t&&a.activeRepo!==e.val()&&(n=!0),a[t]=e.val(),"isFloatComma"===t&&(a[t]="true"===a[t]||!0===a[t])))});var e={};if(d.systemRepos){for(var t in d.systemRepos.native.repositories)d.systemRepos.native.repositories.hasOwnProperty(t)&&"object"==typeof d.systemRepos.native.repositories[t]&&d.systemRepos.native.repositories[t].json&&(e[d.systemRepos.native.repositories[t].link]=d.systemRepos.native.repositories[t].json);d.systemRepos.native.repositories={}}var s=table2values("tab-system-repo");if(d.systemRepos){for(var o=null,r=0;r<s.length;r++)d.systemRepos.native.repositories[s[r].name]={link:s[r].link,json:null},e[s[r].link]&&(d.systemRepos.native.repositories[s[r].name].json=e[s[r].link]),o||(o=s[r].name);o?d.systemRepos.native.repositories[a.activeRepo]||(n=!0,a.activeRepo=o):a.activeRepo&&(n=!0,a.activeRepo="")}if(a.diag=d.$dialog.find("#diagMode").val(),d.systemCerts){d.systemCerts.native.certificates={},s=table2values("tab-system-certs");for(var l=0;l<s.length;l++)d.systemCerts.native.certificates[s[l].name]=u(s[l].name,s[l].certificate);d.$dialog.find(".system-le-settings.value").each(function(){var e=$(this),t=e.data("name");"checkbox"===e.attr("type")?d.systemCerts.native.letsEncrypt[t]=e.prop("checked"):d.systemCerts.native.letsEncrypt[t]=e.val()})}d.$dialog.find(".btn-save").addClass("disabled"),d.main.socket.emit("extendObject","system.config",{common:a},function(e){e?d.main.showError(e):d.main.socket.emit("extendObject","system.repositories",d.systemRepos,function(){d.main.socket.emit("extendObject","system.certificates",d.systemCerts,function(){i?window.location.reload():(d.main.navigate(),n&&setTimeout(function(){d.main.tabs.adapters.init(!0)},0))})})})}function h(e){"tab-system-main"===e&&d.updateMap(),("tab-system-letsencrypt"===e||"tab-system-main"===e||"tab-system-acl"===e)&&window.M&&window.M.toast?(M.updateTextFields("#"+e),d.$dialog.find("optgroup").each(function(){if(!$(this).data("lang")){var e=$(this).attr("label");$(this).data("lang",e),$(this).attr("label",_(e))}}),d.$dialog.find("select").select()):"tab-system-certs"===e&&g(_("Drop the files here"))}this.updateMap=function(e){if(c){if("undefined"==typeof ol)return setTimeout(d.updateMap,200);var t=ol.proj.fromLonLat([parseFloat(r),parseFloat(l)]);d.OSM||(d.OSM={},d.OSM.markerSource=new ol.source.Vector,d.OSM.markerStyle=new ol.style.Style({image:new ol.style.Icon({anchor:[.5,49],anchorXUnits:"fraction",anchorYUnits:"pixels",opacity:.75,src:"img/pin.png"})}),d.OSM.oMap=new ol.Map({target:"map",layers:[new ol.layer.Tile({source:new ol.source.OSM}),new ol.layer.Vector({source:d.OSM.markerSource,style:d.OSM.markerStyle})],view:new ol.View({center:t,zoom:17})}),d.OSM.marker=new ol.Feature({geometry:new ol.geom.Point(t),name:_("Your home")}),d.OSM.markerSource.addFeature(d.OSM.marker),d.OSM.oMap.on("singleclick",function(e){var t=ol.proj.toLonLat(e.coordinate);r=t[0],d.$dialog.find("#system_longitude").val(t[0]),l=t[1],d.$dialog.find("#system_latitude").val(t[1]).trigger("change")}));var a=d.OSM.oMap.getView().getZoom();d.OSM.marker.setGeometry(new ol.geom.Point(t)),d.OSM.oMap.setView(new ol.View({center:t,zoom:a}))}else{if(!this.mapLoaded)return;if(!e)return clearTimeout(n),void(n=setTimeout(function(){d.updateMap(!0)},1e3));if(n&&(clearTimeout(n),n=null),l||r){var i=new google.maps.Map(d.$dialog.find(".map")[0],{zoom:14,center:{lat:parseFloat(l),lng:parseFloat(r)}});new google.maps.Marker({position:{lat:parseFloat(l),lng:parseFloat(r)},map:i,title:_("Your home")})}}},this.init=function(){var n;this.inited||(this.inited=!0,n=function(e){if(e)return console.error(e),void g(e,!0);var t=d.$dialog.find("#system_activeRepo");if(t.html(""),d.systemRepos&&d.systemRepos.native.repositories)for(var a in d.systemRepos.native.repositories)t.append('<option value="'+a+'">'+a+"</option>");else d.$dialog.find("#tab-system-repo").html(_("permissionError"));d.$dialog.find("#diagMode").val(d.main.systemConfig.common.diag).on("change",function(){d.main.socket.emit("sendToHost",d.main.currentHost,"getDiagData",$(this).val(),function(e){d.$dialog.find("#diagSample").html(JSON.stringify(e,null,2))})}).trigger("change");var i=d.$dialog.find("#system_defaultHistory");i.html('<option value=""></option>');for(var n=0;n<d.main.instances.length;n++)"storage"===s.objects[s.instances[n]].common.type&&i.append('<option value="'+d.main.instances[n].substring("system.adapter.".length)+'">'+s.instances[n].substring("system.adapter.".length)+"</option>");r=d.main.systemConfig.common.longitude,l=d.main.systemConfig.common.latitude,o||(o=!0,c?(d.mapLoaded=!0,$.ajax({url:"lib/js/ol.js",dataType:"script",cache:!0}).done(function(){setTimeout(d.updateMap,500)}),$.ajax({url:"lib/css/ol.css",success:function(e){$("head").append("<style>"+e+"</style>")}})):$.ajax({url:"https://maps.googleapis.com/maps/api/js?key=AIzaSyCIrBRZfZAE_0C1OplAUy7OXhiWLoZc3eY&signed_in=true&callback=initMap",dataType:"script",cache:!0})),d.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?e.prop("checked",d.main.systemConfig.common[t]):"isFloatComma"===t?e.val(d.main.systemConfig.common[t]?"true":"false"):e.val(d.main.systemConfig.common[t]),d.main.systemConfig.nonEdit&&d.main.systemConfig.nonEdit.common&&void 0!==d.main.systemConfig.nonEdit.common[t]&&(e.addClass("disabled"),e.prop("disabled",!0)))}),d.$dialog.find("#system_latitude").off("change").on("change",function(){l=$(this).val(),d.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),d.$dialog.find("#system_longitude").off("change").on("change",function(){r=$(this).val(),d.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),d.systemCerts.native.letsEncrypt||(d.systemCerts.native.letsEncrypt={path:"letsencrypt"}),d.$dialog.find(".system-le-settings.value").each(function(){var e=$(this),t=e.data("name");d.systemCerts&&d.systemCerts.native.letsEncrypt&&("checkbox"===e.attr("type")?e.prop("checked",d.systemCerts.native.letsEncrypt[t]):e.val(d.systemCerts.native.letsEncrypt[t])),d.systemCerts.nonEdit&&d.systemCerts.nonEdit.native&&d.systemCerts.nonEdit.native.letsEncrypt&&void 0!==d.systemCerts.nonEdit.native.letsEncrypt[t]&&(e.addClass("disabled"),e.prop("disabled",!0))}),d.$dialog.find("#tabs-system").find(".tabs").mtabs({onShow:function(e){e&&h($(e).attr("id"))}}),d.$dialog.find(".dialog-system-buttons .btn-save").off("click").on("click",f),d.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(){d.main.navigate()}),m(),function(){d.main.systemConfig.common.defaultNewAcl=d.main.systemConfig.common.defaultNewAcl||{};for(var e,t=d.main.systemConfig.common.defaultNewAcl,a="",i=0;i<d.main.tabs.users.list.length;i++)e=translateName(d.main.objects[d.main.tabs.users.list[i]].common.name),a+='<option value="'+d.main.tabs.users.list[i]+'">'+(e||d.main.tabs.users.list[i])+"</option>";for(d.$dialog.find("#tab-system-acl-owner").html(a).val(t.owner||"system.user.admin"),a="",i=0;i<d.main.tabs.users.groups.length;i++)e=translateName(d.main.objects[d.main.tabs.users.groups[i]].common.name),a+='<option value="'+d.main.tabs.users.groups[i]+'">'+(e||d.main.tabs.users.groups[i])+"</option>";d.$dialog.find("#tab-system-acl-group").html(a).val(t.ownerGroup||"system.group.administrator"),void 0===t.object&&(t.object=1636),d.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked",1024&t.object),d.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked",512&t.object),d.$dialog.find("#tab-system-acl-obj-group-read").prop("checked",64&t.object),d.$dialog.find("#tab-system-acl-obj-group-write").prop("checked",32&t.object),d.$dialog.find("#tab-system-acl-obj-every-read").prop("checked",4&t.object),d.$dialog.find("#tab-system-acl-obj-every-write").prop("checked",2&t.object),void 0===t.state&&(t.state=1636),d.$dialog.find("#tab-system-acl-state-owner-read").prop("checked",1024&t.state),d.$dialog.find("#tab-system-acl-state-owner-write").prop("checked",512&t.state),d.$dialog.find("#tab-system-acl-state-group-read").prop("checked",64&t.state),d.$dialog.find("#tab-system-acl-state-group-write").prop("checked",32&t.state),d.$dialog.find("#tab-system-acl-state-every-read").prop("checked",4&t.state),d.$dialog.find("#tab-system-acl-state-every-write").prop("checked",2&t.state),void 0===t.file&&(t.file=1636),d.$dialog.find("#tab-system-acl-file-owner-read").prop("checked",1024&t.file),d.$dialog.find("#tab-system-acl-file-owner-write").prop("checked",512&t.file),d.$dialog.find("#tab-system-acl-file-group-read").prop("checked",64&t.file),d.$dialog.find("#tab-system-acl-file-group-write").prop("checked",32&t.file),d.$dialog.find("#tab-system-acl-file-every-read").prop("checked",4&t.file),d.$dialog.find("#tab-system-acl-file-every-write").prop("checked",2&t.file),d.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}(),function(){var e,t=d.$dialog.find("#tab-system-certs");if(d.systemCerts&&d.systemCerts.native.certificates){var a=[];for(var i in d.systemCerts.native.certificates)d.systemCerts.native.certificates.hasOwnProperty(i)&&a.push({name:i,certificate:(e=d.systemCerts.native.certificates[i],e.replace(/(?:\\[rn]|[\r\n]+)+/g,""))});if(values2table("tab-system-certs",a,{onChange:function(e){d.$dialog.find(".btn-save").removeClass("disabled")}}),d.systemCerts.nonEdit&&d.systemCerts.nonEdit.native&&d.systemCerts.nonEdit.native.certificates){var n=d.$dialog.find("#grid-certs");n.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),n.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),n.find(".btn-floating").each(function(){$(this).addClass("disabled")})}}else t.html(_("permissionError"));installFileUpload(t,1e4,function(e,t){if(e)g(e,!0);else{try{t=atob(t.split(",")[1])}catch(e){return void g(_("Cannot read file!"),!0)}if(-1!==(t=t.replace(/(\r\n|\n|\r)/gm,"")).indexOf("BEGIN RSA PRIVATE KEY"))p("private",t);else if(-1!==t.indexOf("BEGIN PRIVATE KEY"))p("private",t);else if(-1!==t.indexOf("BEGIN CERTIFICATE")){for(var a=t.split("-----END CERTIFICATE-----"),i=0,n=0;n<a.length;n++)a[n].replace(/[\r\n]+|\n|\r/,"").trim()&&i++;p(1<i?"chained":"public",t)}else g(_("Unknown file format!"),!0)}})}(),d.$dialog.find(".value").on("change",function(){d.$dialog.find(".btn-save").removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),d.$dialog.find(".btn-save").addClass("disabled"),h("tab-system-main")},d.main.socket.emit("getObject","system.repositories",function(i,e){d.systemRepos=e,d.main.socket.emit("getObject","system.certificates",function(a,e){d.systemCerts=e,d.main.socket.emit("getObject","system.config",function(e,t){d.main.systemConfig=t,n(i||a||e)})})}))},this.destroy=function(){this.inited&&(this.inited=!1)},this.allStored=function(){return d.$dialog.find(".btn-save").hasClass("disabled")},this.prepare=function(){d.main.systemConfig.error?$("#button-system").hide():$("#button-system").off("click").on("click",function(){d.main.navigate({dialog:"system"})})}}function Users(e){var m=this;function l(t,a,i){var e;a=a||[];for(var n=0;n<m.groups.length;n++){var s,o=m.main.objects[m.groups[n]]&&m.main.objects[m.groups[n]].common&&m.main.objects[m.groups[n]].common.members;if(-1===a.indexOf(m.groups[n])&&o&&-1!==(s=o.indexOf(t)))return o.splice(s,1),e={common:{members:o}},void m.main.socket.emit("extendObject",m.groups[n],e,function(e){e?(u(e,!0,5e3),i&&i(e)):setTimeout(function(){l(t,a,i)},0)});if(-1!==a.indexOf(m.groups[n])&&(!o||-1===o.indexOf(t)))return(o=o||[]).push(t),e={common:{members:m.main.objects[m.groups[n]].common.members=o}},void m.main.socket.emit("extendObject",m.groups[n],e,function(e){e?(u(e,!0,5e3),i&&i(e)):setTimeout(function(){l(t,a,i)},0)})}i&&i()}function g(e,t,a){"boolean"==typeof t&&(a=t,t=3e3),m.main.showToast(m.$grid,e,null,t,a)}function u(e,t,a){"boolean"==typeof t&&(a=t,t=3e3),m.main.showToast(m.$grid.find("#tab-users-dialog-new"),e,null,t,a)}function f(e){return e?e[0].toUpperCase()+e.substring(1).toLowerCase():e}function h(e){m.main.objects[e]&&"user"===m.main.objects[e].type?m.main.objects[e].common&&m.main.objects[e].common.dontDelete?g(_("Object may not be deleted"),!0):function t(a,i){for(var e=0;e<m.groups.length;e++){var n=m.main.objects[m.groups[e]];if(n&&n.common&&n.common.members&&-1!==n.common.members.indexOf(a))return n.common.members.splice(n.common.members.indexOf(a),1),void m.main.socket.emit("extendObject",m.groups[e],{common:{members:n.common.members}},function(e){e?g(_("Cannot modify groups: %s",e),!0):setTimeout(function(){t(a,i)},0)})}i&&i()}(e,function(){m.main.socket.emit("delObject",e,function(e){e?g(_("User may not be deleted: %s",e),!0):g(_("User deleted"))})}):g(_("Invalid object: %s",e),!0)}function r(e,s,o){var r=m.$grid.find("#tab-users-dialog-new-password").val(),t=m.$grid.find("#tab-users-dialog-new-password-repeat").val();if("__pass_not_set__"!==r&&r!==t)return e.stopPropagation(),void u(_("Password and confirmation are not equal!"),!0);if(!r)return e.stopPropagation(),void u(_("Password cannot be empty!"),!0);if("system.user.admin"===s&&"admin"!==o.id)return e.stopPropagation(),void u(_('Cannot change name of "%s"',"admin"),!0);if(!o.id)return e.stopPropagation(),void u(_("ID may not be empty"),!0);if(s)if("system.user."+o.id!==s){if(m.main.objects["system.user."+o.id])return e.stopPropagation(),void u(_("User yet exists"),!0);m.main.socket.emit("getObject",s,function(e,t){if(e)g(_("Cannot change user: ")+e,!0);else{var a=o.id,i="system.user."+a;t.common.name=o.name,t.common.color=o.color,t.common.icon=o.icon,t.common.desc=o.desc,delete o.id;var n=function(e){for(var t=[],a=0;a<m.groups.length;a++)-1===t.indexOf(m.groups[a])&&m.main.objects[m.groups[a]].common.members&&-1!==m.main.objects[m.groups[a]].common.members.indexOf(e)&&t.push(m.groups[a]);return t}(s);m.main.socket.emit("delObject",s,function(e){e?g(_("Cannot rename user: ")+e,!0):l(s,[],function(){m.main.socket.emit("setObject",i,t,function(e){e?g(_("Cannot change group: ")+e,!0):l(i,n,function(){"__pass_not_set__"!==r?m.main.socket.emit("changePassword",a,r,function(e){e?g(_("Cannot set password: ")+_(e),!0):g(_("Updated"))}):g(_("Updated"))})})})})}})}else delete o.id,"__pass_not_set__"!==r?m.main.socket.emit("changePassword",s.replace("system.user.",""),r,function(e){e?g(_("Cannot set password: ")+_(e),!0):m.main.socket.emit("extendObject",s,{common:o},function(e,t){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))})}):m.main.socket.emit("extendObject",s,{common:o},function(e,t){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))});else{if(m.main.objects["system.user."+o.id])return e.stopPropagation(),void u(_("User yet exists"),!0);var a=o.id,i={_id:"system.user."+a,common:o,type:"user",native:{}};o.enabled=!0,delete o.id,m.main.socket.emit("setObject",i._id,i,function(e){e?g(_("Cannot add user: ")+e,!0):"__pass_not_set__"!==r?m.main.socket.emit("changePassword",a,r,function(e){e?g(_("Cannot set password: ")+_(e),!0):g(_("Created"))}):g(_("Created"))})}}function p(e,a){if("system.group.administrator"===e)for(var t in a={},m.aclGroups)if(m.aclGroups.hasOwnProperty(t)){a[t]={};for(var i=0;i<m.aclGroups[t].length;i++)a[t][m.aclGroups[t][i]]=!0}m.$grid.find(".edit-group-permissions").prop("disabled","system.group.administrator"===e).each(function(){var e=$(this).data("type"),t=$(this).data("operation");$(this).prop("checked",!!a[e]&&a[e][t])})}function b(e){var t=m.$grid.find("#tab-users-dialog-new-id"),a=t.val();a&&!a.match(/[.\s]/)?(e.find(".tab-dialog-create").removeClass("disabled"),t.removeClass("wrong")):(e.find(".tab-dialog-create").addClass("disabled"),t.addClass("wrong"))}function y(e){var i,n=!1,l=m.$grid.find("#tab-users-dialog-new"),d={name:"",icon:"",color:"",desc:"",id:"",acl:{}},s=!0===e?"system.group":"system.user",c="",o=!0===e;if(installFileUpload(l,5e4,function(e,t){if(e)g(e,!0);else{if(!t.match(/^data:image\//))return void g(_("Unsupported image format"),!0);b(l),d.icon=t,l.find(".tab-dialog-new-icon").show().html('<img class="treetable-icon" />'),l.find(".tab-dialog-new-icon .treetable-icon").attr("src",t),l.find(".tab-dialog-new-icon-clear").show()}}),"string"==typeof e&&(m.main.objects[e]&&m.main.objects[e].common&&(d.name=m.main.objects[e].common.name,d.icon=m.main.objects[e].common.icon,d.color=m.main.objects[e].common.color,d.desc=m.main.objects[e].common.desc,(o="group"===m.main.objects[e].type)&&(d.acl=m.main.objects[e].common.acl)),c=e,d.id=e),l.find(".tab-dialog-new-title").text(!0===e?_("Create new group"):d.id?_("Change"):_("Create new user")),d.id){var t=d.id.split(".");d.id=t.pop(),s=t.join(".")}l.find("#tab-users-dialog-new-name").val(translateName(d.name)).off("change").on("change",function(){var e=m.$grid.find("#tab-users-dialog-new-id"),t=e.val(),a=$(this).val();a=a.trim().replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").toLowerCase(),t&&n||!(o&&"administrator"!==t&&"user"!==t||!o&&"admin"!==t)||(e.val(a),i=a,l.find("#tab-users-dialog-new-preview").val(s+"."+(a||"#")),M.updateTextFields("#tab-users-dialog-new")),b(l)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.find("#tab-users-dialog-new-desc").val(d.desc).off("change").on("change",function(){b(l)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),i=d.id,l.find("#tab-users-dialog-new-id").val(d.id).off("change").on("change",function(){var e=$(this).val();i!==e&&(n=!0,i=e,l.find("#tab-users-dialog-new-preview").val(s+"."+(e||"#")),M.updateTextFields("#tab-users-dialog-new"),b(l))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.find(".tab-dialog-create").addClass("disabled").off("click").text(_(c?"Change":"Create")).on("click",function(e){var a;d.name=l.find("#tab-users-dialog-new-name").val(),d.id=l.find("#tab-users-dialog-new-id").val(),d.desc=l.find("#tab-users-dialog-new-desc").val(),o?(a=d.acl,m.$grid.find(".edit-group-permissions").each(function(){var e=$(this).data("type"),t=$(this).data("operation");a[e]=a[e]||{},a[e][t]=$(this).prop("checked")}),function(i,n,s){if("system.group.administrator"===n&&"administrator"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"administrator"),!0);if("system.group.user"===n&&"user"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"user"),!0);if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);if(n)if("system.group."+s.id!==n){if(m.main.objects["system.group."+s.id])return i.stopPropagation(),u(_("ID yet exists"),!0);m.main.socket.emit("getObject",n,function(e,t){if(e)g(_("Cannot change group: ")+e,!0);else{var a=s.id;t.common.name=s.name,t.common.color=s.color,t.common.icon=s.icon,t.common.desc=s.desc,delete s.id,m.main.socket.emit("delObject",n,function(e){e?(g(_("Cannot rename group: ")+e,!0),i.stopPropagation()):m.main.socket.emit("setObject",a,t,function(e){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))})})}})}else delete s.id,m.main.socket.emit("extendObject",n,{common:s},function(e,t){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))});else{if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);m.main.socket.emit("addGroup",s.id,s.desc,null,function(e,t){e?g(_("Cannot create group: ")+e,!0):m.main.socket.emit("extendObject",t._id,{common:s},function(e){e?g(_("Cannot add group: ")+e,!0):g(_("Created"))})})}}(e,c,d)):(delete d.acl,r(e,c,d))}),l.find("#tab-users-dialog-new-preview").val(s+"."+(d.id||"#")),d.icon?(l.find(".tab-dialog-new-icon").show().html(m.main.getIcon(c)),l.find(".tab-dialog-new-icon-clear").show()):(l.find(".tab-dialog-new-icon").hide(),l.find(".tab-dialog-new-icon-clear").hide()),d.color=d.color||!1,d.color?l.find(".tab-dialog-new-color").val(d.color):l.find(".tab-dialog-new-color").val(),u(_("Drop the icons here")),l.find(".tab-dialog-new-upload").off("click").on("click",function(){l.find(".drop-file").trigger("click")}),l.find(".tab-dialog-new-icon-clear").off("click").on("click",function(){d.icon&&(d.icon="",l.find(".tab-dialog-new-icon").hide(),l.find(".tab-dialog-new-icon-clear").hide(),b(l))}),l.find(".tab-dialog-new-color-clear").off("click").on("click",function(){d.color&&(b(l),l.find(".tab-dialog-new-color-clear").hide(),l.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:d.color,container:l.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",""),d.color="")});var a=Date.now();try{l.find(".tab-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}l.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:d.color,container:l.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",d.color).on("showPicker.colorpicker",function(){var e=l.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100<Date.now()-a&&(d.color=e.color.toHex(),b(l),l.find(".tab-users-dialog-new-icon-clear").show())}),l.find("#tab-users-dialog-new-password").off("change").on("change",function(){b(l)}),l.find("#tab-users-dialog-new-password-repeat").off("change").on("change",function(){b(l)}),d.color?l.find(".tab-dialog-new-color-clear").show():l.find(".tab-dialog-new-color-clear").hide(),o?(l.find(".tab-users-dialog-new-password").hide(),"system.group.administrator"===c||"system.group.user"===c?l.find("#tab-users-dialog-new-id").prop("disabled",!0):l.find("#tab-users-dialog-new-id").prop("disabled",!1)):(l.find(".tab-users-dialog-new-password").show(),c?(l.find("#tab-users-dialog-new-password").val("__pass_not_set__"),l.find("#tab-users-dialog-new-password-repeat").val("__pass_not_set__")):(l.find("#tab-users-dialog-new-password").val(""),l.find("#tab-users-dialog-new-password-repeat").val("")),"system.user.admin"===c?l.find("#tab-users-dialog-new-id").prop("disabled",!0):l.find("#tab-users-dialog-new-id").prop("disabled",!1)),o?(m.aclGroups?(p(c,d.acl),M.updateTextFields("#tab-users-dialog-new")):m.main.socket.emit("listPermissions",function(e){m.aclGroups={};var t=[];for(var a in e)e.hasOwnProperty(a)&&e[a]&&e[a].type&&(m.aclGroups[e[a].type]=m.aclGroups[e[a].type]||[],-1===m.aclGroups[e[a].type].indexOf(e[a].operation)&&m.aclGroups[e[a].type].push(e[a].operation),-1===t.indexOf(e[a].operation)&&t.push(e[a].operation));var i="<table><tr>";for(var n in i+="</tr>",m.aclGroups)if(m.aclGroups.hasOwnProperty(n)){i+='<tr class="group-titles"><td colspan="'+t.length+'">'+_(n+" permissions")+"</td></tr>",i+='<tr class="group-sub-titles">';for(var s=0;s<t.length;s++)-1!==m.aclGroups[n].indexOf(t[s])?i+="<td>"+t[s]+"</td>":i+="<td></td>";i+="</tr>",i+="<tr>";for(var o=0;o<t.length;o++)if(-1!==m.aclGroups[n].indexOf(t[o])){var r="acl_"+n+"_"+o;i+='<td><input id="'+r+'" data-type="'+n+'" data-operation="'+t[o]+'" class="edit-group-permissions filled-in" type="checkbox" checked="checked" /><span for="'+r+'"></span></td>'}else i+="<td></td>";i+="</tr>"}i+="</table>",l.find("#tab-users-dialog-new-rights").html(i),l.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),l.find('input[type="checkbox"]').off("change").on("change",function(){b(l)}),p(c,d.acl),M.updateTextFields("#tab-users-dialog-new")}),l.find("ul.tabs .tab-dialog-new-tabs").show()):(l.find("ul.tabs .tab-dialog-new-tabs").each(function(){$(this).find('a[href="#tab-users-dialog-new-rights"]').length&&$(this).hide()}),M.updateTextFields("#tab-users-dialog-new")),l.find("ul.tabs").mtabs(),m.main.noSelect||l.find("ul.tabs").mtabs("select","tab-users-dialog-new-main"),l.modal().modal("open")}function t(){m.list.sort(),m.groups.sort();var e="";e+='<ul class="collection">';for(var t=function(e,t){for(var a={},i=0;i<t.length;i++)if(e[t[i]]&&e[t[i]].common&&e[t[i]].common.members)for(var n=e[t[i]].common.members,s=0;s<n.length;s++)a[n[s]]=a[n[s]]||[],a[n[s]].push({id:t[i],name:e[t[i]].common.name||id.replace("system.group.","")});return a}(m.main.objects,m.groups),a=0;a<m.list.length;a++){var i,n;n=m.main.objects[m.list[a]]&&m.main.objects[m.list[a]].common?m.main.objects[m.list[a]].common:{},"system.user.admin"===m.list[a]&&(n.enabled=!0),i=n.name?translateName(n.name):f(m.list[a].replace(/^system\.user\./));var s="";if(t[m.list[a]])for(var o=t[m.list[a]],r=0;r<o.length;r++){var l=o[r].id,d=translateName(o[r].name);s+='<div class="chip">'+m.main.getIcon(l)+d+'<i class="close material-icons tab-users-remove-group" data-group="'+l+'" data-user="'+m.list[a]+'">close</i></div>'}var c="",u=!1;n.color&&(c="background: "+n.color+"; ",m.main.invertColor(n.color)&&(u=!0,c+="color: white;"));var p=n.desc;"object"==typeof p&&(p=p[systemLang]||p.en),e+='<li class="collection-item avatar users-type-draggable '+(u?"inverted":"")+'" data-tt-id="'+m.list[a]+'" style="'+c+'">',e+=" "+(m.main.getIcon(m.list[a],null,null,"icon")||'<img class="icon" src="img/account_circle.png"/>'),e+='<span class="title">'+i+"</span>",e+="<p>"+m.list[a]+((p?" ("+p+")":"")||"")+"</p>",e+=' <a class="secondary-content '+(n.dontDelete?"disabled":"tab-users-enabled-user")+'" data-user="'+m.list[a]+'"><i class="material-icons">'+(n.enabled?"check_box":"check_box_outline_blank")+"</i></a>",e+=' <a class="edit-content" data-user="'+m.list[a]+'"><i class="material-icons">edit</i></a>',e+=' <a class="delete-content'+(n.dontDelete?" disabled":"")+'" data-user="'+m.list[a]+'"><i class="material-icons">delete</i></a><br>',e+=s||"",e+="</li>"}e+="</ul>",m.$gridUsers.html(e),m.$grid.find("#tab-users-btn-new-user").on("click",function(){y(!1)}),m.$gridUsers.find(".tab-users-enabled-user").on("click",function(){var e=$(this).data("user");if("system.user.admin"===e)return g(_("Cannot disable admin!"),!0),!1;var t=$(this),a=m.main.objects[e]&&m.main.objects[e].common&&m.main.objects[e].common.enabled;a=!a,m.main.socket.emit("extendObject",e,{common:{enabled:a}},function(e){e?g(_("Cannot modify user!")+e,!0):(g(_("Updated")),t.find("i").text(a?"check_box":"check_box_outline_blank"))})}),m.$gridUsers.find(".delete-content").off("click").on("click",function(){var t=$(this).data("user");$(this).hasClass("disabled")||(m.main.objects[t]&&"user"===m.main.objects[t].type?m.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&h(t)}):g(_('Object "<b>%s</b>" does not exists. Update the page.',t),!0))}),m.$gridUsers.find(".edit-content").on("click",function(){y($(this).data("user"))}),m.$gridUsers.find(".tab-users-remove-group").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");m.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var a=t.common.members.indexOf(i);-1!==a?(t.common.members.splice(a,1),m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("Removed"))})):g(_("%s is not in the list"),!0)}})})}function a(){var e="";e+='<ul class="collection">';for(var t=0;t<m.groups.length;t++){var a,i;a=(i=m.main.objects[m.groups[t]]&&m.main.objects[m.groups[t]].common?m.main.objects[m.groups[t]].common:{}).name?translateName(i.name):f(m.groups[t].replace(/^system\.group\./));var n="";if(i.members&&i.members.length)for(var s=i.members,o=0;o<s.length;o++){var r,l=s[o];r=m.main.objects[l]&&m.main.objects[l].common&&m.main.objects[l].common.name?translateName(m.main.objects[l].common.name):f(l.replace(/^system\.user\./)),n+='<div class="chip">'+m.main.getIcon(l)+r+'<i class="close material-icons tab-users-remove-user" data-group="'+m.groups[t]+'" data-user="'+l+'">close</i></div>'}var d="",c=!1;i.color&&(d="background: "+i.color+"; ",m.main.invertColor(i.color)&&(c=!0,d+="color: white;"));var u=i.desc;"object"==typeof u&&(u=u[systemLang]||u.en),e+='<li class="collection-item avatar '+(c?"inverted":"")+'" data-tt-id="'+m.groups[t]+'" style="'+d+'">',e+=" "+(m.main.getIcon(m.groups[t],null,null,"icon")||'<img class="icon" src="img/group.png"/>'),e+=' <span class="title">'+a+"</span>",e+=" <p>"+m.groups[t]+((u?" ("+u+")":"")||"")+"</p>",e+=' <a class="edit-content" data-group="'+m.groups[t]+'"><i class="material-icons">edit</i></a>',e+=' <a class="delete-content'+(i.dontDelete?" disabled":"")+'" data-group="'+m.groups[t]+'"><i class="material-icons">delete</i></a><br>',e+=n||"",e+="</li>"}e+="</ul>",m.$gridGroups.html(e),m.$grid.find("#tab-users-btn-new-group").on("click",function(){y(!0)}),m.$gridGroups.find(".delete-content").on("click",function(){var a=$(this).data("group");$(this).hasClass("disabled")||(m.main.objects[a]&&"group"===m.main.objects[a].type?m.main.confirmMessage(_("Are you sure to delete %s?",a),null,"help",function(e){var t;e&&(t=a,m.main.objects[t]&&"group"===m.main.objects[t].type?m.main.objects[t].common&&m.main.objects[t].common.dontDelete?g(_("Object may not be deleted"),!0):m.main.socket.emit("delObject",t,function(e){e?g(_("Group may not be deleted: %s",e),!0):g(_("Group deleted"))}):g(_("Invalid object: %s",t),!0))}):g(_('Object "<b>%s</b>" does not exists. Update the page.',a),!0))}),m.$gridGroups.find(".edit-content").on("click",function(){y($(this).data("group"))}),m.$gridGroups.find(".tab-users-remove-user").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");m.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var a=t.common.members.indexOf(i);if(-1!==a){if(t.common.members.splice(a,1),!t._id)return void console.error("INVLAID ID");m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("Removed"))})}else g(_("%s is not in the list"),!0)}})})}this.groups=[],this.list=[],this.$grid=$("#tab-users"),this.$gridUsers=this.$grid.find(".tab-users-list-users .tab-users-body"),this.$gridGroups=this.$grid.find(".tab-users-list-groups .tab-users-body"),this.main=e,this.aclGroups=null,this.prepare=function(){},this._postInit=function(){var e;t(),m.$gridUsers.find("ul").sortable({connectWith:"#tab-users .tab-users-list-groups .treetable",items:".users-type-draggable",appendTo:m.$gridUsers,refreshPositions:!0,helper:function(e,t){return $('<div class="users-drag-helper">'+t.find(".treetable-icon-empty+span").text()+"</div>")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var a=t.item.prev();t.item.data("prev",a),m.$grid.addClass("dragging")},stop:function(e,t){m.$grid.removeClass("dragging")},update:function(e,t){var a=t.item.data("prev");a&&a.length?$(a).after(t.item):$(this).prepend(t.item)}}).disableSelection(),a(),(e=m.$gridGroups.find("ul>li")).droppable("instance")&&e.droppable("destroy"),e.droppable({accept:".users-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var a,i=$(this).data("tt-id");(a=$(this).data("timer"))&&clearTimeout(a),$(this).data("timer",setTimeout(function(){m.$gridGroups.treeTable("expand",i)},1e3))}},out:function(e,t){var a;$(this).removeClass("tab-accept-item"),(a=$(this).data("timer"))&&(clearTimeout(a),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item");var a=t.draggable.data("tt-id"),i=$(this).data("tt-id");m.main.socket.emit("getObject",i,function(e,t){t&&t.common&&(t.common.members=t.common.members||[],-1===t.common.members.indexOf(a)?(t.common.members.push(a),t.common.members.sort(),m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("%s added to %s",a,t._id))})):g(_("Is yet in the list")))})}})},this.init=function(e){this.inited&&!e||(void 0!==this.$gridUsers&&this._postInit(),this.inited||(g(_("You can drag&drop users to groups"),5e3),this.inited=!0,this.main.subscribeObjects("system.user.*"),this.main.subscribeObjects("system.group.*")))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("system.user.*"),this.main.unsubscribeObjects("system.group.*"))},this.objectChange=function(e,t,a){if(e.match(/^system\.user\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){m.timer=null,m._postInit()},200)}else if(e.match(/^system\.group\./)){if(t)-1===this.groups.indexOf(e)&&this.groups.push(e);else{var n=this.groups.indexOf(e);-1!==n&&this.groups.splice(n,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){m.timer=null,m._postInit()},200)}}}!function(C){C(document).ready(function(){var e=location.pathname+"socket.io";location.pathname.match(/^\/admin\//)&&(e="/socket.io");var s,y={},v={objects:{},states:{},currentHost:"",currentTab:null,currentDialog:null,currentUser:"",subscribesStates:{},subscribesObjects:{},subscribesLogs:0,socket:io.connect("/",{path:e}),systemConfig:null,instances:null,objectsLoaded:!1,waitForRestart:!1,tabs:null,dialogs:{},selectId:null,config:{},ignoreJSupdate:!1,addEventMessage:function(e,t,a,i){m.events.add(e,t,a,i)},saveConfig:function(e,t){e&&(v.config[e]=t),"undefined"!=typeof storage&&storage.set("adminConfig",JSON.stringify(v.config))},saveTabs:function(){this.socket.emit("setObject","system.config",this.systemConfig,function(e){e&&this.showError(e)})},upToDate:function(e,t){return e=e.split("."),t=t.split("."),e[0]=parseInt(e[0],10),t[0]=parseInt(t[0],10),!(e[0]>t[0])&&(e[0]!==t[0]||(e[1]=parseInt(e[1],10),t[1]=parseInt(t[1],10),!(e[1]>t[1])&&(e[1]!==t[1]||(e[2]=parseInt(e[2],10),t[2]=parseInt(t[2],10),e[2]<=t[2]))))},cmdExec:function(e,t,a){e=e||v.currentHost,l.val(""),d.modal("open"),s="$ ./yunkong2 "+t,d.data("finished",!1).find(".btn").html(_("In background")),d.find(".command").html(s),d.find(".progress-dont-close").removeClass("disabled"),h.find(".button-command").removeClass("error").addClass("in-progress"),d.data("max",null),d.data("error",""),g.addClass("indeterminate").removeClass("determinate"),t.match(/^upload /)?d.find(".progress-text").html(_("Upload started...")).removeClass("error"):t.match(/^del [-_\w\d]+\.[\d]+$/)?d.find(".progress-text").html(_("Removing of instance...")).removeClass("error"):t.match(/^del /)?d.find(".progress-text").html(_("Removing of adapter...")).removeClass("error"):t.match(/^url /)?d.find(".progress-text").html(_("Install or update from URL...")).removeClass("error"):t.match(/^add /)?d.find(".progress-text").html(_("Add instance...")).removeClass("error"):d.find(".progress-text").html(_("Started...")).removeClass("error"),l.val(s),r=Math.floor(268435454*Math.random())+1,o=a,v.socket.emit("cmdExec",e,r,t,function(e){e?(s+="\n"+_(e),l.val(s),o=null,a(e)):a&&a()})},confirmMessage:function(e,t,a,i,n){if("function"==typeof i)n=i,p.find(".modal-footer").html('<a class="modal-action modal-close waves-effect waves-green btn-flat translate" data-result="true">'+_("Ok")+'</a><a class="modal-action modal-close waves-effect waves-green btn-flat translate">'+_("Cancel")+"</a>"),p.find(".modal-footer .modal-action").on("click",function(){var e=p.data("callback");e&&e(C(this).data("result"))});else if("object"==typeof i){for(var s="",o=i.length-1;0<=o;o--)s+='<a class="modal-action modal-close waves-effect waves-green btn-flat translate" data-id="'+o+'">'+i[o]+"</a>";p.find(".modal-footer").html(s),p.find(".modal-footer .modal-action").on("click",function(){var e=p.data("callback");e&&e(C(this).data("id"))})}p.find(".dialog-title").text(t||_("Please confirm")),a?p.find(".dialog-icon").show().html(a):p.find(".dialog-icon").hide(),p.find(".dialog-text").html(e),p.data("callback",n),p.modal("open")},showMessage:function(e,t,a){u.find(".dialog-title").text(t||_("Message")),a?u.find(".dialog-icon").show().html(a):u.find(".dialog-icon").hide(),u.find(".dialog-text").html(e),u.modal("open")},showError:function(e){v.showMessage(_(e),_("Error"),"error_outline")},showToast:function(e,t,a,i,n,s){e&&e instanceof jQuery&&(e=e[0]),"string"==typeof(s=s||[])&&(s=[s]),n&&s.push("dropZone-error"),M.toast({parentSelector:e||C("body")[0],html:t+(a?'<i class="material-icons">'+a+"</i>":""),displayLength:i||3e3,classes:s})},formatDate:function(e,t){if(!e)return"";var a,i=typeof e;return"string"===i?t?e.substring(8):e:("object"!==i&&(e=e<9466812e5?new Date(1e3*e):new Date(e)),t?i=(a=e.getDate())<10?"0"+a:a:(i=e.getFullYear(),i+=(a=e.getMonth()+1)<10?"-0"+a:"-"+a,i+=(a=e.getDate())<10?"-0"+a:"-"+a),i+=(a=e.getHours())<10?" 0"+a:" "+a,i+=(a=e.getMinutes())<10?":0"+a:":"+a,i+=(a=e.getSeconds())<10?":0"+a:":"+a,i+=(a=e.getMilliseconds())<10?".00"+a:a<100?".0"+a:"."+a)},updateWizard:function(){var e=C("#button-wizard");v.objects["system.adapter.discovery.0"]?(e.data("inited")||(e.data("inited",!0),e.on("click",function(){v.navigate({tab:"instances",dialog:"config",params:"system.adapter.discovery.0"})}).attr("title",_("Device discovery"))),e.show(),!v.systemConfig.common.wizard&&v.systemConfig.common.licenseConfirmed&&e.trigger("click")):e.hide()},getUser:function(){if(v.currentUser){if(v.objects[v.currentUser]){var e=v.objects[v.currentUser],t="";if(t=e&&e.common&&e.common.name?translateName(e.common.name):(t=v.currentUser.replace(/^system\.user\./))[0].toUpperCase()+t.substring(1).toLowerCase(),e&&e.common&&e.common.icon){var a={};a[v.currentUser]=e,C("#current-user-icon").html(v.getIcon(v.currentUser,null,a))}else C("#current-user-icon").html('<i class="large material-icons">account_circle</i>');C("#current-user").html(t);for(var i=[],n=0;n<m.users.groups.length;n++){var s=v.objects[m.users.groups[n]];s&&s.common&&s.common.members&&-1!==s.common.members.indexOf(v.currentUser)&&i.push(_(translateName(s.common.name)))}C("#current-group").html(i.join(", "))}}else v.socket.emit("authEnabled",function(e,t){v.currentUser="system.user."+t,e?(v._lastTimer=(new Date).getTime(),function e(){if(v._timer)return;var t=(new Date).getTime();3e4<t-v._lastTimer?location.reload():v._lastTimer=t;v._timer=setTimeout(function(){v._timer=null,e()},1e4)}()):C("#button-logout").remove()})},_delObject:function(e,i){var n;if(!Array.isArray(e)){if("string"!=typeof e)return i&&i("invalid idOrList parameter");e=[e]}!function t(){if(0===e.length)return i&&setTimeout(i,0,null,n);if(n=e.pop(),v.objects[n]&&v.objects[n].common&&(v.objects[n].common["object-non-deletable"]||v.objects[n].common.dontDelete))v.showMessage(_('Cannot delete "%s" because not allowed',n),"","notifications"),setTimeout(t,0);else{var a=v.objects[n];v.socket.emit("delObject",n,function(e){if(e&&"Not exists"!==e)return v.showError(e),i(e);a&&"state"===a.type?v.socket.emit("delState",n,function(e){if(e&&"Not exists"!==e)return v.showError(e),i(e);setTimeout(t,0)}):setTimeout(t,0)})}}()},_delObjects:function(e,t,a){if(t){var i=[];for(var n in v.objects)v.objects.hasOwnProperty(n)&&n.substring(0,e.length+1)===e+"."&&i.push(n);i.push(e),i.sort(),this._delObject(i,function(){a&&a()})}else this._delObject(e,a)},delObject:function(e,t,a){var i=e?e.selectId("getTreeInfo",t):null;v.objects[t]?i&&i.children?v.confirmMessage(_('Do you want to delete just <span style="color: blue">one object</span> or <span style="color: red">all</span> children of %s too?',t),null,"help_outline",[_("_All"),_("Only one"),_("Cancel")],function(e){0===e?v._delObjects(t,!0,a):1===e&&v._delObjects(t,!1,a)}):v.confirmMessage(_("Are you sure to delete %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,a)}):i&&i.children?v.confirmMessage(_("Are you sure to delete all children of %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,a)}):v.showMessage(_('Object "<b>%s</b>" does not exists. Update the page.',t),_("Error"),"help_outline",function(e){e&&v._delObjects(t,!0,a)})}},m={hosts:new Hosts(gMain=v),objects:new Objects(v),adapters:new Adapters(v),instances:new Instances(v),users:new Users(v),enums:new Enums(v),events:new Events(v),logs:new Logs(v),states:null,intro:new Intro(v)};"undefined"!=typeof States&&(m.states=new States(v)),v.instances=m.instances.list,v.tabs=m,v.dialogs={system:new System(v),customs:new Customs(v),config:new Config(v),editobject:new EditObject(v),issue:new Issue(v),readme:new Readme(v)};var o=null,r=null,l=C("#stdout"),d=C("#dialog-command"),c=C("#dialog-license-main"),u=C("#dialog-message"),p=C("#dialog-confirm"),g=d.find(".progress div"),f=C("#admin_sidemenu_menu"),h=C("#admin_sidemenu_main"),t=!0;if("ontouchstart"in window||navigator.maxTouchPoints||C("body").addClass("desktop-screen"),-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Android")?(C("body").addClass("safari"),v.browser="safari",v.noSelect=!0):detectIE()&&(C("body").addClass("ie"),v.browser="ie",v.browserVersion=detectIE(),v.noSelect=!0,C("#host-adapters-btn").css("margin-top","10px")),"undefined"!=typeof storage)try{v.config=storage.get("adminConfig"),v.config?v.config=JSON.parse(v.config):v.config={}}catch(e){console.log("Cannot load edit config"),v.config={}}function b(e){C("#admin_sidemenu_dialog").html(""),C("html").off("click",b)}function w(){if(function(){var e="",i=[];C(".admin-tab").each(function(){var e=C(this).attr("id");v.systemConfig.common.tabs&&-1===v.systemConfig.common.tabs.indexOf(e)||i.push({line:'<li class="admin-sidemenu-items" data-tab="'+e+'"><a href="#'+e+'">'+(T[e]&&T[e].icon?'<i class="material-icons left">'+T[e].icon+"</i>":'<i class="material-icons left">live_help</i>')+_(C(this).data("name"))+"</a></li>",id:e})}),C(".tab-custom").each(function(){var e=C(this).attr("id");if(!v.systemConfig.common.tabs||-1!==v.systemConfig.common.tabs.indexOf(e)){var t;if(T[e]&&T[e].icon)t=T[e].icon;else{var a="system.adapter."+e.substring(4);v.objects[a]&&v.objects[a].adminTab&&v.objects[a]["fa-icon"]&&(t=v.objects[a]["fa-icon"])}i.push({line:'<li class="admin-sidemenu-items" data-tab="'+e+'"><a href="#'+e+'">'+(t?'<i class="material-icons left">'+t+"</i>":'<i class="material-icons left">live_help</i>')+C(this).data("name")+"</a></li>",id:e})}}),i.sort(function(e,t){return T[e.id]||T[t.id]?T[e.id]?T[t.id]?T[e.id].order<T[t.id].order?-1:T[e.id].order>T[t.id].order?1:0:-1:1:0});for(var t=0;t<i.length;t++)e+=i[t].line;f.find(".admin-sidemenu-menu").html(e),C(".admin-sidemenu-close").off("click").on("click",function(){h.toggleClass("admin-sidemenu-closed"),f.toggleClass("admin-sidemenu-closed"),C(".admin-sidemenu-close i").toggleClass("hide"),setTimeout(function(){C(window).trigger("resize")},400)}),C(".admin-sidemenu-items").off("click").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.hash="#"+C(this).data("tab")}),C(".admin-sidemenu-items a").off("click").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.hash="#"+C(this).parent().data("tab")}),m.hosts.updateCounter(),m.adapters.updateCounter()}(),v.tabsInited){var e=f,t=e.data("problem-link");if(t){var a=C(t);if(a.length){var i=a.data("src");if(i&&-1===i.indexOf("%")){var n=a.find("iframe");n.length&&!n.attr("src")&&(n.attr("src",i),e.data("problem-link",null))}}}v.currentHash=null,v.navigateDo()}else v.tabsInited=!0,v.socket.emit("getVersion",function(e,t){var a=C(".button-version");a.hasClass("vendor")||a.text("yunkong2.admin "+t)}),C(".choose-tabs-config-button").off("click").on("click",function(e){var t=C("#admin_sidemenu_dialog");if(t.html())return t.html(""),void C("html").off("click",b);setTimeout(function(){C("html").on("click",b)},100);var a=C(e.target),i=a.offset();i.top+=a.height()-2;var n='<dialog open class="tab-selector m" style="top: '+i.top+"px; left: "+i.left+'px;"><div><ul style="">';for(var s in y){var o=y[s],r="chk-"+s;n+="<li><input "+(f.find('.admin-sidemenu-items[data-tab="'+s+'"]').length?"checked":"unchecked")+' class="chk-tab filled-in" type="checkbox" id="'+r+'" /><span for="'+r+'">'+_(o)+"</span></id>"}n+="</ul></div></dialog>",t.append(n),t.find(".chk-tab").off("change").on("change",function(e){var t=C(this).attr("id").substr(4);if(C(this).prop("checked"))v.systemConfig.common.tabs.push(t);else{var a=v.systemConfig.common.tabs.indexOf(t);-1!==t&&v.systemConfig.common.tabs.splice(a,1)}v.saveTabs(),j()}),t.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}),v.updateWizard(),C("#button-logout").on("click",function(){window.location.href="/logout/"}),window.onhashchange=function(){v.navigateDo()},v.navigateDo(),C("#events_threshold").on("click",function(){v.socket.emit("eventsThreshold",!1)})}function j(){var a=[],e=[];y={};for(var t=0;t<v.instances.length;t++){var i=v.instances[t],n=v.objects[i];if(n.common&&n.common.adminTab)if(n.common.adminTab.singleton){for(var s=!1,o=i.replace(/\.(\d+)$/,"."),r=0;r<e.length;r++){if(o===e[r].replace(/\.(\d+)$/,".")){s=!0;break}}s||e.push(i)}else e.push(i)}C(".admin-tab").each(function(){var e=C(this),t=e.attr("id");a.push(t),y[t]=e.data("name")});for(var l=0;l<e.length;l++){var d=v.objects[e[l]],c="tab-"+d.common.name,u=d.common.adminTab.link||"/adapter/"+d.common.name+"/tab.html";d.common.materializeTab&&(u=d.common.adminTab.link||"/adapter/"+d.common.name+"/tab_m.html");var p,m=e[l].split(".");if(p=d.common.adminTab.name?"object"==typeof d.common.adminTab.name?d.common.adminTab.name[systemLang]?d.common.adminTab.name[systemLang]:d.common.adminTab.name.en?_(d.common.adminTab.name.en):_(d.common.name):_(d.common.adminTab.name):_(d.common.name),d.common.adminTab.singleton?m[3]=0:(-1!==u.indexOf("?")?u+="&instance="+m[3]:u+="?instance="+m[3],p+="."+m[3],c+="-"+m[3]),a.push(c),y[c]=p,v.systemConfig.common.tabs&&-1===v.systemConfig.common.tabs.indexOf(c))C("#"+c).hide().appendTo(C("body"));else{var g=!1;if(u?g=-1!==u.indexOf("%"):(u="/adapter/"+m[2]+"/tab.html",d.common.materilizeTab&&(u="/adapter/"+m[2]+"/tab_m.html")),'<li><a href="#'+c+'">'+p+"</a></li>\n",C("#"+c).length)C("#"+c).hide().appendTo(C("body"));else{var f='<div id="'+c+'" data-name="'+p+'" class="tab-custom '+(g?"link-replace":"")+'" data-adapter="'+m[2]+'" data-instance="'+m[3]+'" data-src="'+u+'"><iframe class="iframe-in-tab" style="border: 0; solid #FFF; display: block; left: 0; top: 0; width: 100%; height: 100%"></iframe></div>';C(f).hide().appendTo(C("body")),C("#"+c).find(".iframe-in-tab").on("load",function(){var e=C(this).contents().find("body>header");e&&e.length||(e=C(this).contents().find("head")),e&&e.length&&e.append('<link rel="stylesheet" type="text/css" href="../../lib/css/iob/selectID.css"/>')})}}}if(C(".tab-custom").each(function(){-1===a.indexOf(C(this).attr("id"))&&C("#"+C(this).attr("id")).remove()}),v.systemConfig.common.tabs||(v.systemConfig.common.tabs=a),C(".link-replace").length){var h=0,b=setTimeout(function(){b=null,w()},100);C(".link-replace").each(function(){h++,v.tabs.instances._replaceLinks(C(this).data("src"),C(this).data("adapter"),C(this).data("instance"),C(this).attr("id"),function(e,t,a,i){C("#"+i).data("src",e).removeClass("link-replace"),--h||b&&(clearTimeout(b),b=null,w())})})}else w()}function N(n){v.socket.emit("getAllObjects",function(e,i){e?window.alert(_(e)):setTimeout(function(){var e;for(var t in v.objects=i,v.objects)v.objects.hasOwnProperty(t)&&"_design"!==t.slice(0,7)&&("instance"===(e=v.objects[t]).type&&v.instances.push(t),"enum"===e.type&&m.enums.list.push(t),"user"===e.type&&m.users.list.push(t),"group"===e.type&&m.users.groups.push(t),"adapter"===e.type&&m.adapters.list.push(t),"host"===e.type&&m.hosts.addHost(e),e.common&&e.common.history&&(e.common.custom=JSON.parse(JSON.stringify(e.common.history)),delete e.common.history));for(var a in v.objectsLoaded=!0,v.initHostsList(!0),j(),v.dialogs)v.dialogs.hasOwnProperty(a)&&"function"==typeof v.dialogs[a].prepare&&v.dialogs[a].prepare();!function a(i,n){n=n||0,i&&n<i.length&&v.socket.emit("sendToHost",i[n].name,"getHostInfo",null,function(e){if(e&&e["Node.js"]){var t=parseInt(e["Node.js"].split(".").shift().replace("v",""),10);(t<6||7===t||9===t)&&v.showMessage(_('This version of node.js "%s" on "%s" is deprecated. Please install node.js 6, 8 or newer',e["Node.js"],i[n].name),_("Suggestion"),"error_outline")}setTimeout(function(){a(i,n+1)},100)})}(m.hosts.list),v.getUser(),"function"==typeof n&&n()},0)})}function a(e,t){(e=e?e.replace(/\s/g,"_"):"")&&e.match(/\.messagebox$/)?v.addEventMessage(e,t,!0,!0):(m.states&&m.states.stateChange(e,t),m.objects.stateChange(e,t),m.hosts.stateChange(e,t),m.instances.stateChange(e,t),m.adapters.stateChange(e,t),v.dialogs.customs.stateChange(e,t),v.selectId&&v.selectId.selectId("state",e,t),v.addEventMessage(e,t,!1,!0))}function i(e,t){var a="update";t?(t._rev&&v.objects[e]&&(v.objects[e]._rev=t._rev),v.objects[e]||(a="add"),"add"!==a&&JSON.stringify(v.objects[e])===JSON.stringify(t)||(v.objects[e]=t)):v.objects[e]&&(a="delete",delete v.objects[e]),v.addEventMessage(e,t,!1,!1),m.objects.objectChange(e,t,a),v.selectId&&v.selectId.selectId("object",e,t,a),m.enums.objectChange(e,t,a),m.intro.objectChange(e,t,a),"system.config"===e&&(v.systemConfig.common.language!==t.common.language&&window.location.reload(),v.systemConfig=t,j()),"system.adapter.discovery.0"===e&&v.updateWizard(),e.match(/^system\.host\.[-\w]+$/)&&v.initHostsList(),m.instances.objectChange(e,t,a),e.match(/^script\.js\.global\..*/)&&(v.ignoreJSupdate=!0),t&&e.match(/^system\.adapter\.[\w-]+\.[0-9]+$/)&&(t.common&&t.common.adminTab&&!t.common.adminTab.ignoreConfigUpdate&&(e.match(/^system\.adapter\.javascript\.[0-9]+$/)&&v.ignoreJSupdate?v.ignoreJSupdate=!1:j()),t&&"instance"===t.type&&t.common.supportCustoms&&m.objects.reinit()),m.hosts.objectChange(e,t,a),m.users.objectChange(e,t,a),e===v.currentUser&&v.getUser()}function L(e,t){var a,i,n=e&&e.common;if(n.icon){if(n.icon.match(/^data:image\//))a=n.icon;else{if(-1===n.icon.indexOf("."))return'<i class="material-icons '+(t||"treetable-icon")+'">'+n.icon+"</i>";var s;a="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(s=e._id.split(".",3),"/"===n.icon[0]?s[2]+=n.icon:s[2]+="/"+n.icon,"/adapter/"+s[2]):(s=e._id.split(".",2),"/"===n.icon[0]?s[0]+=n.icon:s[0]+="/"+n.icon,"/adapter/"+s[0])}i=e.type}return{icon:a,alt:i}}v.initHostsList=function(e){var t=C("#host-adapters");if(!e||!t.data("inited")){t.data("inited",!0),v.currentHost=v.currentHost||v.config.currentHost||"";for(var a,i=[],n=0;n<v.tabs.hosts.list.length;n++)i.push('<li><a data-value="'+v.tabs.hosts.list[n].name+'">'+v.getHostIcon(v.objects[v.tabs.hosts.list[n].id],"imgHost left")+v.tabs.hosts.list[n].name+"</a></li>"),v.currentHost||(v.currentHost=v.tabs.hosts.list[n].name),v.currentHost===v.tabs.hosts.list[n].name&&(a=v.tabs.hosts.list[n].id);t.html(i);var s=C("#host-adapters-btn").show();s.text(_("Host:")+" "+v.currentHost).dropdown(),v.objects[a]&&v.objects[a].common&&v.objects[a].common.color,s.append(C(v.getHostIcon(v.objects[a],"imgHost left"))),v.tabs.hosts.list.length<2?s.addClass("disabled"):s.removeClass("disabled"),t.find("a").on("click",function(){var e=C(this).data("value"),t="system.host."+e+".alive";v.states[t]&&v.states[t].val&&"null"!==v.states[t].val?(v.currentHost=e,C("#host-adapters-btn").text(_("Host:")+" "+v.currentHost).append(C(this).find(".imgHost").clone()),console.log(v.currentTab),T["tab-"+v.currentTab]&&T["tab-"+v.currentTab].host&&(v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].destroy&&v.tabs[v.currentTab].destroy(),v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].init&&v.tabs[v.currentTab].init()),v.saveConfig("currentHost",v.currentHost)):v.showMessage(_("Host %s is offline",C(this).val()))})}},v.resubscribeStates=function(){for(var e in v.subscribesStates)v.subscribesStates.hasOwnProperty(e)&&v.subscribesStates[e]&&(console.debug("Re-Subscribe: "+e),v.socket.emit("subscribe",e))},v.resubscribeObjects=function(){for(var e in v.subscribesObjects)v.subscribesObjects.hasOwnProperty(e)&&v.subscribesObjects[e]&&v.socket.emit("subscribeObjects",e)},v.resubscribeLogs=function(){v.subscribesLogs&&(console.debug("Subscribe LOG"),v.socket.emit("requireLog",!0))},v.subscribeStates=function(e){if(e)if("object"==typeof e)for(var t=0;t<e.length;t++)v.subscribesStates[e[t]]=v.subscribesStates[e[t]]||0,v.subscribesStates[e[t]]++,1===v.subscribesStates[e[t]]&&(console.debug("Subscribe: "+e[t]),v.socket.emit("subscribe",e[t]));else v.subscribesStates[e]=v.subscribesStates[e]||0,v.subscribesStates[e]++,1===v.subscribesStates[e]&&(console.debug("Subscribe: "+e),v.socket.emit("subscribe",e))},v.unsubscribeStates=function(e){if(e)if("object"==typeof e)for(var t=0;t<e.length;t++)v.subscribesStates[e[t]]&&v.subscribesStates[e[t]]--,0===v.subscribesStates[e[t]]&&(console.debug("Unsibscribe: "+e[t]),v.socket.emit("unsubscribe",e[t]),delete v.subscribesStates[e[t]]);else v.subscribesStates[e]&&v.subscribesStates[e]--,0===v.subscribesStates[e]&&(console.debug("Unsibscribe: "+e),v.socket.emit("unsubscribe",e),delete v.subscribesStates[e])},v.subscribeObjects=function(e){if(e)if("object"==typeof e)for(var t=0;t<e.length;t++)v.subscribesObjects[e[t]]=v.subscribesObjects[e[t]]||0,v.subscribesObjects[e[t]]++,1===v.subscribesObjects[e[t]]&&v.socket.emit("subscribeObjects",e[t]);else v.subscribesObjects[e]=v.subscribesObjects[e]||0,v.subscribesObjects[e]++,1===v.subscribesObjects[e]&&v.socket.emit("subscribeObjects",e)},v.unsubscribeObjects=function(e){if(e)if("object"==typeof e)for(var t=0;t<e.length;t++)v.subscribesObjects[e[t]]&&v.subscribesObjects[e[t]]--,0===v.subscribesObjects[e[t]]&&(v.socket.emit("unsubscribeObjects",e[t]),delete v.subscribesObjects[e[t]]);else v.subscribesObjects[e]&&v.subscribesObjects[e]--,0===v.subscribesObjects[e]&&(v.socket.emit("unsubscribeObjects",e),delete v.subscribesObjects[e])},v.subscribeLogs=function(e){e?(v.subscribesLogs++,1===v.subscribesLogs&&(console.debug("Subscribe Logs"),v.socket.emit("requireLog",!0))):(v.subscribesLogs--,v.subscribesLogs<=0&&(v.subscribesLogs=0,console.debug("Unsubscribe Logs"),v.socket.emit("requireLog",!1)))},v.navigateCheckDialog=function(t){if(v.currentDialog&&v.dialogs[v.currentDialog]&&"function"==typeof v.dialogs[v.currentDialog].allStored){if(!1===v.dialogs[v.currentDialog].allStored())return v.confirmMessage(_("Some data are not stored. Discard?"),_("Please confirm"),null,function(e){t(!e)})}else if(configNotSaved)return v.confirmMessage(_("Some data are not stored. Discard?"),_("Please confirm"),null,function(e){t(!e)});t(!1)},v.navigateGetParams=function(){var e=decodeURI(window.location.hash).split("/");return e[2]?decodeURIComponent(e[2]):null},v.navigate=function(e){if(e||(e={}),"string"==typeof e&&(e={tab:e,dialog:"",params:""}),!e.tab){var t=decodeURI(window.location.hash).split("/");e.tab=t[0].replace(/^#/,"").replace(/^tab-/,"")}window.location.hash="#tab-"+encodeURIComponent(e.tab)+(e.dialog?"/"+e.dialog+(e.params?"/"+encodeURIComponent(e.params):""):"")},v.navigateDo=function(){window.location.hash!==v.currentHash&&v.navigateCheckDialog(function(e){if(e)window.location.hash=v.currentHash||"";else{configNotSaved=null,v.currentHash=window.location.hash;var t=v.currentHash.split("/"),a=t[0].replace(/^#/,"").replace(/^tab-/,""),i=t[1],n=decodeURIComponent(t[2]);a&&"!"!==a||(a=v.systemConfig.common.tabs&&-1===v.systemConfig.common.tabs.indexOf("tab-intro")?-1!==v.systemConfig.common.tabs.indexOf("tab-adapters")?"adapters":v.systemConfig.common.tabs[0].replace(/^#/,"").replace(/^tab-/,""):"intro");var s=C(".admin-sidemenu-body"),o=s.find(".admin-sidemenu-body-content"),r=C("#tab-"+a);if(s.find(".admin-preloader").remove(),r.length||(a="intro"),v.currentTab!==a||!o.length){var l;if(v.currentTab&&m[v.currentTab]&&"function"==typeof m[v.currentTab].destroy)m[v.currentTab].destroy();else if(v.currentTab){var d=C("#tab-"+v.currentTab);if(d.length&&(l=d.data("src"))){var c=d.find(">iframe");c.attr("src")&&(console.log("clear"),c.attr("src",""))}}if(v.currentTab=a,o.hide().appendTo("body"),i||(r.addClass("admin-sidemenu-body-content").show().appendTo(s),o=r),m[a]&&"function"==typeof m[a].init&&m[a].init(),r.length&&(l=r.data("src")))if(-1===l.indexOf("%")){var u=r.find(">iframe");u.length&&!u.attr("src")&&u.attr("src",l)}else f.data("problem-link","tab-"+a)}var p=f.find('.admin-sidemenu-items[data-tab="tab-'+a+'"]');f.find(".admin-sidemenu-items").not(p).removeClass("admin-sidemenu-active"),p.addClass("admin-sidemenu-active"),T["tab-"+a]&&T["tab-"+a].host?C("#host-adapters-btn").css("opacity",1):C("#host-adapters-btn").css("opacity",.3),document.title=a+" - yunkong2",v.currentDialog!==i&&(v.dialogs[v.currentDialog]&&"function"==typeof v.dialogs[v.currentDialog].destroy&&v.dialogs[v.currentDialog].destroy(),(v.currentDialog=i)&&v.dialogs[i]?("function"==typeof v.dialogs[i].init&&v.dialogs[i].init(n?n.split(","):void 0),m[v.currentTab]&&m[v.currentTab].saveScroll&&m[v.currentTab].saveScroll(),o.hide().appendTo("body"),C("#dialog-"+i).addClass("admin-sidemenu-body-content").show().appendTo(s)):o.attr("id")!==r.attr("id")&&(o.hide().appendTo("body"),r.addClass("admin-sidemenu-body-content").show().appendTo(s),m[v.currentTab]&&m[v.currentTab].restoreScroll&&m[v.currentTab].restoreScroll()))}})},v.getIconFromObj=function(e,t,a){var i="",n="";if(e&&e.common)if(e.common.icon){var s=L(e);i=s.icon,n=s.alt}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",n="device"):"channel"===e.type?(i=t+"channel.png",n="channel"):"state"===e.type&&(i=t+"state.png",n="state");return i?'<img class="'+(a||"treetable-icon")+'" src="'+i+'" alt="'+(n||"")+'" />':""},v.getIcon=function(e,t,a,i){return v.getIconFromObj((a||v.objects)[e],t,i)},v.getHostIcon=function(e,t){var a="",i="";if(e&&e.common&&e.common.icon){var n=L(e);a=n.icon,i=n.alt}return'<img class="'+(t||"treetable-icon")+'" src="'+(a=a||"img/no-image.png")+'" alt="'+(i=i||"")+'" />'},v.formatBytes=function(e){if(Math.abs(e)<1024)return e+" B";for(var t=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],a=-1;e/=1024,++a,1024<=Math.abs(e)&&a<t.length-1;);return e.toFixed(1)+" "+t[a]},v.invertColor=function(e){return 0===e.indexOf("#")&&(e=e.slice(1)),3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6===e.length&&.299*parseInt(e.slice(0,2),16)+.587*parseInt(e.slice(2,4),16)+.114*parseInt(e.slice(4,6),16)<=186};var T={"tab-intro":{order:1,icon:"apps"},"tab-adapters":{order:2,icon:"store",host:!0},"tab-instances":{order:3,icon:"subtitles",host:!0},"tab-objects":{order:4,icon:"view_list"},"tab-enums":{order:5,icon:"art_track"},"tab-logs":{order:6,icon:"view_headline",host:!0},"tab-scenes":{order:7,icon:"subscriptions"},"tab-events":{order:8,icon:"flash_on"},"tab-users":{order:10,icon:"person_outline"},"tab-javascript":{order:11,icon:"code"},"tab-text2command-0":{order:12,icon:"ac_unit"},"tab-text2command-1":{order:12,icon:"ac_unit"},"tab-text2command-2":{order:12,icon:"ac_unit"},"tab-node-red-0":{order:20,icon:"device_hub"},"tab-node-red-1":{order:21,icon:"device_hub"},"tab-node-red-2":{order:22,icon:"device_hub"},"tab-hosts":{order:100,icon:"storage"},"tab-fullcalendar-0":{order:30,icon:"perm_contact_calendar"},"tab-fullcalendar-1":{order:31,icon:"perm_contact_calendar"},"tab-fullcalendar-2":{order:32,icon:"perm_contact_calendar"}};v.socket.on("log",function(e){m.logs.add(e)}),v.socket.on("error",function(e){console.log(e)}),v.socket.on("permissionError",function(e){v.showMessage(_("Has no permission to %s %s %s",e.operation,e.type,e.id||""))}),v.socket.on("stateChange",function(e,t){setTimeout(a,0,e,t)}),v.socket.on("objectChange",function(e,t){setTimeout(i,0,e,t)}),v.socket.on("cmdStdout",function(e,t){if(r===e){var a=t.match(/^upload \[(\d+)]/);if(a){null===d.data("max")&&(d.data("max",parseInt(a[1],10)),g.removeClass("indeterminate").addClass("determinate"));var i=d.data("max"),n=parseInt(a[1],10);g.css("width",100-Math.round(n/i*100)+"%")}else(a=t.match(/^got [-_:\/\\.\w\d]+\/admin$/))?(d.find(".progress-text").html(_("Upload admin started")),d.data("max",null)):(a=t.match(/^got [-_:\/\\.\w\d]+\/www$/))&&(d.find(".progress-text").html(_("Upload www started")),d.data("max",null));s+="\n"+t,l.val(s),l.scrollTop(l[0].scrollHeight-l.height())}}),v.socket.on("cmdStderr",function(e,t){r===e&&(d.data("error")||d.data("error",t),s+="\nERROR: "+t,l.val(s),l.scrollTop(l[0].scrollHeight-l.height()))}),v.socket.on("cmdExit",function(e,t){if(r===e){t=parseInt(t,10),s+="\n"+(0!==t?"ERROR: ":"")+"process exited with code "+t,l.val(s),l.scrollTop(l[0].scrollHeight-l.height()),d.find(".progress-dont-close").addClass("disabled"),g.removeClass("indeterminate").css({width:"100%"}),d.find(".btn").html(_("Close")),d.data("finished",!0),d.data("max",!0);var a=h.find(".button-command");if(a.removeClass("in-progress"),t){var i=d.data("error");if(i){var n=i.match(/error: (.*)$/);n&&(i=n[1]),d.find(".progress-text").html(_("Done with error: %s",_(i))).addClass("error")}else d.find(".progress-text").html(_("Done with error")).addClass("error");a.addClass("error"),a.show()}else d.find(".progress-text").html(_("Success!")),a.hide(),d.find(".progress-dont-close input").prop("checked")&&setTimeout(function(){d.modal("close")},1500);o&&(o(t),o=null)}}),v.socket.on("eventsThreshold",function(e){e?C("#events_threshold").show():C("#events_threshold").hide()}),v.socket.on("connect",function(){C("#connecting").hide(),t?(t=!1,v.getUser(),v.socket.emit("getUserPermissions",function(e,t){v.acl=t,v.socket.emit("getObject","system.config",function(n,e){if((v.systemConfig=e)&&e.native&&e.native.vendor){var t=e.native.vendor;if(t.icon&&C(".admin-sidemenu-header .button-icon img").attr("src",e.native.vendor.icon),t.name&&C(".admin-sidemenu-header .button-version").html(e.native.vendor.name).addClass("vendor"),t.admin&&t.admin.noCustomInstall&&C("#btn_filter_custom_url").hide(),t.admin&&t.admin.css){if(t.admin.css.sideNavUser&&C(".side-nav .user-view").css(t.admin.css.sideNavUser),t.admin.css.sideNavMenu&&C(".side-nav").css(t.admin.css.sideNavMenu),t.admin.css.header&&h.find(".admin-sidemenu-header nav").css(t.admin.css.header),t.admin.css.rules)for(var a=0;a<t.admin.css.rules.length;a++)C(t.admin.css.rules[a].selector).css(t.admin.css.rules[a].css);t.admin.styles&&C("head").append('<style type="text/css">'+t.admin.styles+"</style>")}}if(v.systemConfig&&v.systemConfig.common&&v.systemConfig.common.tabs){var i=v.systemConfig.common.tabs.indexOf("tab-log");-1!==i&&(v.systemConfig.common.tabs[i]="tab-logs")}v.socket.emit("getObject","system.repositories",function(e,t){v.dialogs.system.systemRepos=t,v.socket.emit("getObject","system.certificates",function(e,t){setTimeout(function(){if(v.dialogs.system.systemCerts=t,"permissionError"===n)v.systemConfig={common:{language:systemLang},error:"permissionError"};else if(!n&&v.systemConfig&&v.systemConfig.common){if(systemLang=v.systemConfig.common.language||systemLang,v.systemConfig.common.city=v.systemConfig.common.city||"",v.systemConfig.common.country=v.systemConfig.common.country||"",v.systemConfig.common.longitude=v.systemConfig.common.longitude||"",v.systemConfig.common.latitude=v.systemConfig.common.latitude||"",!v.systemConfig.common.licenseConfirmed){var a=(v.systemConfig.common.language||window.navigator.userLanguage||window.navigator.language||"").substring(0,2);"en"!==a&&"de"!==a&&"ru"!==a&&(a="en"),systemLang=a,c.find(".license_text").html(license[a]||license.en),c.find(".license_checkbox").prop("checked",!1),c.find(".license_language").data("licenseConfirmed",!1).val(a).on("change",function(){a=C(this).val(),c.find(".license_language_label").html(translateWord("Select language",a)),c.find(".license_text").html(license[a]||license.en),c.find(".license_checkbox").html(translateWord("license_checkbox",a)),c.find(".license_agree .translate").html(translateWord("agree",a)),c.find(".license_non_agree .translate").html(translateWord("not agree",a)),c.find(".license_terms").html(translateWord("License terms",a)),c.find(".license_agreement_label").html(translateWord("license agreement",a))}).select(),c.find(".license_diag").on("change",function(){C(this).prop("checked")?c.find(".license_agree").removeClass("disabled"):c.find(".license_agree").addClass("disabled")}),c.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),c.modal({dismissible:!1,complete:function(){c.find(".license_text").html(""),location.reload()}}).modal("open"),c.find(".license_agree").addClass("disabled").off("click").on("click",function(e){e.preventDefault(),e.stopPropagation(),v.socket.emit("getObject","system.config",function(e,t){!e&&t?(t.common=t.common||{},t.common.licenseConfirmed=!0,t.common.language=a,v.socket.emit("setObject","system.config",t,function(e){e&&v.showError(e),c.modal("close"),c.find(".license_agree").off("click"),c.find(".license_non_agree").off("click")})):v.showError(_("Cannot confirm: "+e))})}),c.find(".license_non_agree").off("click").on("click",function(e){location.reload()})}}else v.systemConfig={type:"config",common:{name:"system.config",city:"",country:"",longitude:"",latitude:"",language:"",tempUnit:"°C",currency:"",dateFormat:"DD.MM.YYYY",isFloatComma:!0,licenseConfirmed:!1,defaultHistory:"",tabs:["tab-intro","tab-adapters","tab-instances","tab-objects","tab-logs","tab-scenes","tab-javascript","tab-text2command-0"]}},v.systemConfig.common.language=window.navigator.userLanguage||window.navigator.language,"en"!==v.systemConfig.common.language&&"de"!==v.systemConfig.common.language&&"ru"!==v.systemConfig.common.language&&(v.systemConfig.common.language="en");for(var e in translateCron(),translateAll(),"function"==typeof initGridLanguage&&initGridLanguage(v.systemConfig.common.language),d.modal({dismissible:!1}),u.modal(),p.modal({dismissible:!1}),d.find(".progress-show-more").off("change").on("change",function(){var e=C(this).prop("checked");v.saveConfig("progressMore",e),e?d.find(".textarea").show():d.find(".textarea").hide()}),void 0===v.config.progressClose&&(v.config.progressClose=!0),d.find(".progress-dont-close input").on("change",function(){v.saveConfig("progressClose",C(this).prop("checked"))}),d.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.parent().parent().hasClass("switch")||e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),d.find(".progress-dont-close input").prop("checked",v.config.progressClose),d.find(".progress-show-more").prop("checked",!!v.config.progressMore).trigger("change"),d.find(".btn").on("click",function(){d.data("finished")?h.find(".button-command").hide():h.find(".button-command").show()}),h.find(".button-command").on("click",function(){d.modal("open")}),m)m.hasOwnProperty(e)&&m[e]&&"function"==typeof m[e].prepare&&m[e].prepare();var i;i=N,m.states&&m.states.clear(),v.socket.emit("getStates",function(e,t){v.states=t,"function"==typeof i&&setTimeout(function(){i()},0)})},0)})})})})):(v.resubscribeStates(),v.resubscribeObjects(),v.resubscribeLogs()),v.waitForRestart&&location.reload()}),v.socket.on("disconnect",function(){C("#connecting").show()}),v.socket.on("reconnect",function(){C("#connecting").hide(),v.waitForRestart&&location.reload()}),v.socket.on("repoUpdated",function(){setTimeout(function(){m.adapters.init(!0)},0)}),v.socket.on("reauthenticate",function(){location.reload()})})}(jQuery);var license={en:'The MIT License (MIT)<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br>',de:'MIT-Lizenz (MIT)<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:<br>Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.<br>DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.',ru:"Лицензия MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:<br>Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.<br>ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.",it:'Licenza MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Si concede gratuitamente l\'autorizzazione, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"), di dare opera al Software senza restrizioni, compresi senza limitazione i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza ovvero vendere copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, posto che siano rispettate le seguenti condizioni:<br>l\'avviso di copyright unitamente a questo avviso di licenza devono essere sempre inclusi in tutte le copie o parti sostanziali del Software.<br>IL SOFTWARE VIENE FORNITO "COSÌ COM\'È" SENZA GARANZIE DI ALCUN TIPO, ESPLICITE O IMPLICITE, COMPRESE, MA NON SOLO, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ AD UN PARTICOLARE SCOPO E NON VIOLAZIONE DI DIRITTI ALTRUI. IN NESSUN CASO GLI AUTORI DEL SOFTWARE O I TITOLARI DEL COPYRIGHT POTRANNO ESSERE RITENUTI RESPONSABILI DI RECLAMI, DANNI O ALTRE RESPONSABILITÀ, DERIVANTI DA O COLLEGATI A CONTRATTO, ILLECITO CIVILE O IN ALTRA RELAZIONE CON IL SOFTWARE O CON IL SUO UTILIZZO O CON ALTRE OPERAZIONI DEL SOFTWARE.',fr:'Licence MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br>',pt:'Licença MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br>',nl:'MIT-licentie<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br>',es:'Licencia MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:<br>El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.<br>EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.',pl:'Licencja MIT<br><br>Copyright © 2014-2018 bluefox, 2014 hobbyquaker<br><br>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<br>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<br>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br>'},addAll2FilterCombobox=!1;function IobListHeader(e,g){if(!(this instanceof IobListHeader))return new IobListHeader(e,g);var f,n,h;void 0===g&&(g={}),void 0===g.colWidthOffset&&(g.colWidthOffset=0),"TABLE"===(h="object"==typeof e?$(e):$("#"+e))[0].tagName&&(h=h.find("tr:first")),e=h[0];var a,b=this;b.selectIdOffset=[],h.html(""),this.setList=function(e){var t;(t="string"==typeof e?("#"!==e[0]&&(e="#"+e),$(e)):e)&&t.length&&("TD"!==t[0].tagName&&"TH"!==t[0].tagName&&((t=t.find(">thead>tr:first>th,>thead>tr:first>td")).length||(t=e.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td"))),n=t)},g.list&&this.setList(g.list),this.syncHeader=function(){if("object"==typeof n){var e=function(){n.each(function(e,t){if(!(e>=n.length-1)){var a=$(t).width(),i=b.selectIdOffset[e]||0;a+i&&$(f[e]).width(Math.round(a+i))}}),n.length&&!b.selectIdOffset.length&&(b.selectIdOffset[0]=0,n.each(function(e,t){var a=$(n[e]).offset().left;a&&(b.selectIdOffset[e]=a-$(f[e]).offset().left)}),e())};e()}},$(window).on("resize",function(e,t){a&&clearTimeout(a),a=setTimeout(b.syncHeader.bind(b),100)}),this.doFilter=function(){},b.ids=[],b.add=function(t,p,e,a){void 0===e&&(e=p);var i,n,s=!(i=e)||n&&"#"===i[0]?i:(g.prefix&&i.substr(0,g.prefix.length)!==g.prefix&&(i=g.prefix+"-"+i),(n?"#":"")+i);p=_(p);var o="";switch(t){case"combobox":o=' <select class="list-header-input" id="'+s+'" title="'+p+'"></select> <button class="list-header-clear" id="'+s+'-clear" role="button" title=""></button>';break;case"edit":o=' <input class="list-header-input" placeholder="'+p+'" id="'+s+'" title="'+p+'"> <button class="list-header-clear" id="'+s+'-clear" role="button" title="'+p+'"></button>';break;case"text":o='<span class="list-header-text">'+p+"</span>"}h.append("<th>"+o+"</th>");var r="#"+s,m=$(r),l=b[e]={$filter:m,val:m.val.bind(m),selectedVal:m.val()||""};if(b.ids.push(e),"combobox"===t&&(l.options=[],l.checkAddOption=function(e,t,a){if(-1===this.options.indexOf(e)){this.options.push(e),this.options.sort();for(var i,n,s=m.val(),o=a?"":(i=p,n=s,addAll2FilterCombobox&&(i=i?_(i)+" ("+_("all")+")":_("all")),'<option value="" '+(""===n?"selected":"")+">"+i+"</option>"),r=0,l=this.options.length;r<l;r++){var d=this.options[r];if(t){var c=t(d,r);"object"==typeof c?u(c.val,c.name):o+=c}else u(d,d)}m.html(o)}function u(e,t){o+='<option value="'+e+'" '+(t===s?"selected":"")+">"+t+"</option>"}},a))for(var d=0;d<a.length;d++)l.checkAddOption(a[d].name,function(e,t){return a[t]},!0);var c,u=$(r+"-clear");return u.on("click",function(){""!==m.val()&&m.val("").trigger("change")}),"undefined"==typeof M?u.button({icons:{primary:"ui-icon-close"},text:!1}):u.prepend('<i class="material-icons">close</i>'),m.on("change",function(e){c&&clearTimeout(c),l.selectedVal=m.val(),c=setTimeout(b.doFilter,"combobox"!==t?400:0),l.selectedVal?m.parent().addClass("filter-active"):m.parent().removeClass("filter-active")}).on("keyup",function(e){13===e.which?b.doFilter():m.trigger("change")}),f=h.find(">th"),l}}function values2table(r,l,e){"object"==typeof r&&(e=l,l=r,r="");var d=e&&e.maxRaw||null,c=e&&e.onChange||null,u=e&&e.onReady||null;l=l||[];var o,s=[],p=(o=r?$("#"+r):$("body")).find(".table-button-add");if(p.data("raw",l.length),d&&p.data("maxRaw",d),p.data("inited")||(p.data("inited",!0),p.on("click",function(){if(!p.data("maxRaw")||p.data("raw")<p.data("maxRaw")){for(var e=o.find(".table-values"),t=e.data("values"),a=e.data("names"),i=e.data("maxRaw"),n={},s=0;s<a.length;s++)a[s]&&(n[a[s].name]=a[s].def);t.push(n),c&&c(),setTimeout(function(){values2table(r,t,c,u,i)},100),p.data("raw",p.data("raw")+1)}else confirmMessage(_("maxTableRaw")+": "+p.data("maxRaw"),_("maxTableRawInfo"),"alert",["Ok"])})),l){var m=[],g=o.find(".table-values");if(g.data("values",l),!g.data("rooms")&&g.find('th[data-name="room"]').length)return void getEnums("rooms",function(e,t){var a={},i=_("nonerooms");a[_("none")]="nonerooms"!==i?i:"";var n=[];for(var s in t)t.hasOwnProperty(s)&&n.push(s);n.sort(function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase())<e?1:e<t?-1:0});for(var o=0;o<n.length;o++)a[n[o]]=t[n[o]].common.name||o;g.data("rooms",a),values2table(r,l,c,u,d)});if(!g.data("functions")&&g.find('th[data-name="func"]').length)return void getEnums("functions",function(e,t){var a={},i=_("nonefunctions");a[_("none")]="nonefunctions"!==i?i:"";var n=[];for(var s in t)t.hasOwnProperty(s)&&n.push(s);n.sort(function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase())<e?1:e<t?-1:0});for(var o=0;o<n.length;o++)a[n[o]]=t[n[o]].common.name||o;g.data("functions",a),values2table(r,l,c,u,d)});g.find("th").each(function(){var e=$(this).data("name");if(e){var t={name:e,type:$(this).data("type")||"text",def:$(this).data("default"),class:($(this).attr("class")||"").replace("translate",""),style:$(this).data("style"),readOnly:$(this).data("readOnly"),tdstyle:$(this).data("tdstyle")};if("checkbox"===t.type)"false"===t.def&&(t.def=!1),"true"===t.def&&(t.def=!0),t.def=!!t.def;else if("select"===t.type||"select multiple"===t.type){var a=($(this).data("options")||"").split(";");t.options={};for(var i=0;i<a.length;i++){var n=a[i].split("/");t.options[n[0]]=_(n[1]||n[0]),0===i&&(t.def=void 0===t.def?n[0]:t.def)}}else t.def=t.def||"";s.push(t)}else s.push(null);(e=$(this).data("buttons"))?m.push({btn:e.split(" "),class:($(this).attr("class")||"").replace("translate",""),style:$(this).data("style"),tdstyle:$(this).data("tdstyle")}):m.push(null)}),g.data("names",s);for(var t="",a=0;a<l.length;a++){var i=l[a]&&l[a].id;!i&&l[a]&&(i="_index"===s[0]?l[a][s[1]]:l[a][s[0]]),t+='<tr data-id="'+i+'" data-index="'+a+'">';for(var n=0;n<s.length;n++){t+="<td";var f="",h="",b="";if(s[n])if(s[n].class&&(t+=' class="'+s[n].class+'" '),"_index"!==s[n].name&&(b=s[n].tdstyle||"")&&";"!==b[0]&&(b=";"+b),"_index"===s[n].name)h=s[n].style?s[n].style:"text-align: right;",f+=a+1;else if("checkbox"===s[n].type)f+='<input style="'+(s[n].style||"")+'" class="values-input" type="checkbox" data-index="'+a+'" data-name="'+s[n].name+'" '+(l[a][s[n].name]?"checked":"")+'" data-old-value="'+(void 0===l[a][s[n].name]?"":l[a][s[n].name])+'"/>';else if("select"===s[n].type.substring(0,6)){f+=("multiple"===s[n].type.substring(7,16)?'<select multiple style="':'<select style="')+(s[n].style?s[n].style:"width: 100%")+'" class="values-input" data-index="'+a+'" data-name="'+s[n].name+'">',"room"===s[n].name?e=g.data("rooms"):"func"===s[n].name?(e=g.data("functions"),"select multiple"===s[n].type&&delete e[_("none")]):e=s[n].options;var y=void 0===l[a][s[n].name]?"":l[a][s[n].name];for(var M in"object"!=typeof y&&(y=[y]),e)f+='<option value="'+M+'" '+(-1!==y.indexOf(M)?" selected":"")+">"+e[M]+"</option>";f+="</select>"}else f+='<input class="values-input" style="'+(s[n].style?s[n].style:"width: 100%")+'" type="'+s[n].type+'" data-index="'+a+'" data-name="'+s[n].name+'"/>';if(m[n]){h="text-align: center; "+(m[n].style||"")+(m[n].tdstyle||"");for(var v=0;v<m[n].btn.length;v++)!a&&"up"===m[n].btn[v]||a===l.length-1&&"down"===m[n].btn[v]?f+='<a class="btn-floating disabled" data-command="'+m[n].btn[v]+'" class="values-buttons"><i class="material-icons"></i></a>':f+='<a class="btn-floating" data-index="'+a+'" data-command="'+m[n].btn[v]+'" class="values-buttons"><i class="material-icons"></i></a>';m[n].class&&(t+=' class="'+m[n].class+'" ')}h.length||b.length?t+=' style="'+h+b+'">'+f+"</td>":t+=">"+f+"</td>"}t+="</tr>"}var w=g.find(".table-lines");w.length||(g.append('<tbody class="table-lines"></tbody>'),w=g.find(".table-lines")),w.html(t),w.find(".values-input").each(function(){var e=$(this),t=e.attr("type"),a=e.data("name"),i=e.data("index");e.data("old-value",l[i][a]),"checkbox"===t?e.prop("checked",l[i][a]):e.val(l[i][a])}),w.find("a[data-command]").each(function(){var e=$(this).data("command");"delete"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),c&&c(),setTimeout(function(){"function"==typeof tableEvents&&tableEvents(e,t,"delete"),values2table(r,l,c,u,d)},100),p.data("maxRaw")&&p.data("raw",p.data("raw")-1)}).addClass("red").find(".material-icons").html("delete"):"up"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),l.splice(e-1,0,t),c&&c(),setTimeout(function(){values2table(e,l,c,u,d)},100)}).find("i").html("arrow_upward"):"down"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),l.splice(e+1,0,t),c&&c(),setTimeout(function(){values2table(e,l,c,u,d)},100)}).find("i").html("arrow_downward"):"pair"===e?$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=l[e];tableEvents(e,t,"pair")}}).attr("title",_("pair")).find("i").html("insert_link"):"unpair"===e&&$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=l[e];tableEvents(e,t,"unpair")}}).attr("title",_("unpair")).find("i").html("not_interested")}),w.find(".values-input").on("change.adaptersettings",function(){var e=$(this).data("index"),t=$(this).data("name");"checkbox"===$(this).attr("type")?($(this).prop("checked").toString()!==$(this).data("old-value")&&c&&c(t,e),l[e][t]=$(this).prop("checked")):($(this).val()!==$(this).data("old-value")&&c&&c(t,e),l[e][t]=$(this).val())}).on("keyup",function(){$(this).trigger("change.adaptersettings")})}"function"==typeof u&&u()}function table2values(e){var t;t=e?$("#"+e):$("body");var a=[];t.find(".table-values th").each(function(){var e=$(this).data("name");e?a.push(e):a.push("___ignore___")});var i=[],n=0;return t.find(".table-lines tr").each(function(){i[n]={},$(this).find("td").each(function(){var e=$(this).find("input");if(e.length){var t=e.data("name");"checkbox"===e.attr("type")?i[n][t]=e.prop("checked"):i[n][t]=e.val()}var a=$(this).find("select");if(a.length){t=a.data("name");i[n][t]=a.val()||""}}),n++}),i}var systemLang="en",systemDictionary={};function translateWord(e,t,a){if(!e)return"";if(t=t||systemLang,(a=a||systemDictionary)[e=e.toString()]){var i=a[e][t];if(i)return i;if("en"!==t&&(i=a[e].en))return i}else"string"!=typeof e||e.match(/_tooltip$/)?"string"!=typeof e&&console.warn("Trying to translate non-text:"+e):console.log('"'+e+'": {"en": "'+e+'", "de": "'+e+'", "ru": "'+e+'", "pt": "'+e+'", "nl": "'+e+'", "fr": "'+e+'", "es": "'+e+'", "pl": "'+e+'", "it": "'+e+'"},');return e}function translateAll(e,i,n){i=i||systemLang,n=n||systemDictionary,e||(e="body");var t=$(e);t.find(".translate").each(function(e){var t=$(this).attr("data-lang");t||(t=$(this).html(),$(this).attr("data-lang",t));var a=translateWord(t,i,n);a&&$(this).html(a)}),t.find(".translateV").each(function(e){var t=$(this).attr("data-lang-value");t||(t=$(this).attr("value"),$(this).attr("data-lang-value",t));var a=translateWord(t,i,n);a&&$(this).attr("value",a)}),t.find(".translateT").each(function(e){var t=$(this).attr("data-lang-title");t||(t=$(this).attr("title"),$(this).attr("data-lang-title",t));var a=translateWord(t,i,n);a&&$(this).attr("title",a)}),t.find(".translateP").each(function(e){var t=$(this).attr("data-lang-placeholder");t||(t=$(this).attr("placeholder"),$(this).attr("data-lang-placeholder",t));var a=translateWord(t,i,n);a&&$(this).attr("placeholder",a)})}function translateName(e){return e&&"object"==typeof e?e[systemLang]||e.en:e}var _=function(e,t,a,i){var n=(e=translateWord(e)).indexOf("%s");return-1===n||-1===(n=(e=e.replace("%s",t)).indexOf("%s"))||-1!==(n=(e=e.replace("%s",a)).indexOf("%s"))&&(e=e.replace("%s",i)),e};!function(q){if(!q.fn.treeTable){var t={init:function(e){e.imgPath=e.imgPath||"lib/css/fancytree/";for(var t=0;t<this.length;t++)if(h.call(this[t],e),"undefined"!=typeof Storage){var a=window.localStorage.getItem(e.name+"-treetable");if(a){a=JSON.parse(a);for(var i=q(this[t]).find(".tree-table-main"),n=0;n<a.length;n++)try{i.treetable("expandNode",a[n])}catch(n){}}}return this},destroy:function(){for(var e=0;e<this.length;e++){var t=q(this[e]).find(".tree-table-main");t.length&&t.data("options")&&(t.data("options",null),q(this[e]).html(""))}},expand:function(e){for(var t=0;t<this.length;t++){var a=q(this[t]).find(".tree-table-main");try{e?a.treetable("expandNode",e):a.treetable("expandAll",e)}catch(e){}}},collapse:function(e){for(var t=0;t<this.length;t++){var a=q(this[t]).find(".tree-table-main");try{e?a.treetable("collapseNode",e):a.treetable("collapseAll")}catch(e){}}},show:function(e,t,a){"function"==typeof t&&(a=t,t=void 0),"function"==typeof e&&(a=e,e=void 0);for(var i=0;i<this.length;i++){var n=q(this[i]).find(".tree-table-main");n.find(".selected").removeClass("selected");try{n.treetable("reveal",e)}catch(e){}var s=n.treetable("node",e);s&&s.row.addClass("selected")}return a&&a(),this},reinit:function(){for(var e=0;e<this.length;e++)s.call(this[e]);return this},object:function(e,t){for(var a=0;a<this.length;a++){var i=q(this[a]).find(".tree-table-main");i.updateTimer&&clearTimeout(i.updateTimer);var n=i.data("options");if(!n||!n.root||e.match("^"+n.root.replace(/\./g,"\\.")+"\\."))!function(e,t){i.updateTimer=setTimeout(function(){s.call(e)},300)}(this[a])}return this}};q.fn.treeTable=function(e){return t[e]?t[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void q.error('Method "'+e+'" not found in jQuery.treeTable'):t.init.apply(this,arguments)}}function X(){var e=this.id,t=this.row.parent().parent(),a=t.data("options");a.name&&(a.expanded=a.expanded||[],-1===a.expanded.indexOf(e)&&(a.expanded.push(e),"undefined"!=typeof Storage&&window.localStorage.setItem(a.name+"-treetable",JSON.stringify(a.expanded))));t.treetable("node",e)}function ee(){var e=this.id,t=this.row.parent().parent(),a=t.data("options");if(a.name&&a.expanded){var i=a.expanded.indexOf(e);-1!==i&&(a.expanded.splice(i,1),"undefined"!=typeof Storage&&window.localStorage.setItem(a.name+"-treetable",JSON.stringify(a.expanded)))}t.treetable("node",e)}function te(e,t){var a=t?"":'<div class="treetablelist-buttons"><button class="treetable-list-btn-ok"></button><button class="treetable-list-btn-cancel"></button></div>';a+='<ul class="treetable-list">';for(var i=e.rows,n=0;n<i.length;n++){for(var s=0,o=i[n];o.parent;){for(var r=!1,l=0;l<i.length;l++)if(i[l].id===o.parent){o=i[l],r=!0;break}if(!r)break;s++}var d=i[n].title;"object"==typeof d&&(d=d[systemLang]||d.en);var c=void 0===i[n].instance?0:1;a+='<li data-id="'+i[n].id+'" class="'+(c?"treetable-list-item":"treetable-list-folder")+'" style="margin-left: '+19*s+"px; width: calc(100% - "+(15*s+2+7*c)+"px);"+("script.js.global"===i[n].id?"color: rgb(0, 128, 0);":"")+'">'+(c?"":'<span class="fancytree-expander"></span>')+'<span class="fancytree-icon"></span>'+d+"</li>"}a+="</ul>";var u=q(this),p=q(a);u.find(".treetablelist-buttons").remove(),u.find(".treetable-list").remove(),u.find(".tree-table-buttons").remove(),u.find(".tree-table-main").remove(),u.prepend(p);var m=q(p).find(".treetablelist-buttons"),g=q(p).find(".treetable-list");g.sortable({cancel:".treetable-list-folder",axis:"y"}).data("options",e);var f=this;m.find(".treetable-list-btn-ok").button({icons:{primary:"ui-icon-check"},text:!1}).css({width:24,height:24}).on("click",function(){var i="",n=[];g.find("li").each(function(){var e=q(this).data("id");if(q(this).hasClass("treetable-list-folder"))i=e;else{var t=e.split("."),a=t.pop();t.join(".")!==i&&n.push({oldId:e,newId:i+"."+a})}}),function t(a,i,n){if(i&&i.length){var e=i.shift();a.moveId&&a.moveId(e.oldId,e.newId,function(e){setTimeout(function(){t(a,i,n)},50)})}else n&&n()}(e,n,function(){h.call(f,e)})}),m.find(".treetable-list-btn-cancel").button({icons:{primary:"ui-icon-cancel"},text:!1}).css({width:24,height:24}).on("click",function(){h.call(f,e)})}function ae(e,t,a){var i="",n="",s=e&&e.common;if(s)if(s.icon){if(s.icon.match(/^data:image\//))i=s.icon;else{if(-1===s.icon.indexOf("."))return'<i class="material-icons '+(a||"treetable-icon")+'">'+s.icon+"</i>";var o;i="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(o=e._id.split(".",3),"/"===e.common.icon[0]?o[2]+=e.common.icon:o[2]+="/"+e.common.icon,"/adapter/"+o[2]):(o=e._id.split(".",2),"/"===e.common.icon[0]?o[0]+=e.common.icon:o[0]+="/"+e.common.icon,"/adapter/"+o[0])}n=e.type}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",n="device"):"channel"===e.type?(i=t+"channel.png",n="channel"):"state"===e.type&&(i=t+"state.png",n="state");return i?'<img class="'+(a||"treetable-icon")+'" src="'+i+'" alt="'+n+'" />':""}function h(i){var e="",t=window.M&&window.M.toast?"a":"button";if(i.panelButtons){e+='<div class="row tree-table-buttons m">';for(var a=0;a<i.panelButtons.length;a++)e+="<"+t+' class="btn-floating waves-effect waves-light blue btn-custom-'+a+'" title="'+(i.panelButtons[a].title||"")+'" '+(i.panelButtons[a].id?'id="'+i.panelButtons[a].id+'"':"")+">",window.M&&window.M.toast&&(e+='<i class="material-icons">'+(i.panelButtons[a].icon||"")+"</i>"),e+="</"+t+">";i.moveId&&(e+="<"+t+' class="btn-floating waves-effect waves-light blue treetable-sort" title="'+_("reorder")+'">',window.M&&window.M.toast&&(e+='<i class="material-icons">import_export</i>'),e+="</"+t+">"),e+="</div>"}e+='<div class="row tree-table-body"><table class="tree-table-main">',e+=" <thead>",e+=' <tr class="tree-table-main-header">';for(var n=0;n<i.columns.length;n++)"name"===i.columns[n]?(e+=" <th"+(i.widths&&i.widths[n]?' class="treetable-th-name" style="width: '+i.widths[n]+'"':"")+">",e+=' <input placeholder="'+_("name")+'" class="filter_name treetable-filter" />',e+=' <button data-id="filter_name" role="button" class="filter-clear"></button>',e+=" </th>"):e+=" <th"+(i.widths&&i.widths[n]?' style="width: '+i.widths[n]+'"':"")+">"+_(i.columns[n])+"</th>";i.buttons&&(e+=" <th"+(i.buttonsWidth?' style="width: '+i.buttonsWidth+'"':"")+"></th>"),e+=" </tr>",e+="</thead>",e+="<tbody>";var s=[],o=i.root?new RegExp("^"+i.root.replace(/\./g,"\\.")+"\\."):null,r=-1!==i.columns.indexOf("instance")?[]:null;for(var l in i.objects){var d;if(i.objects.hasOwnProperty(l))if(r&&"instance"===i.objects[l].type&&(d=l.match(/^system\.adapter\.javascript\.(\d+)$/))&&r.push(d[1]),!o||o.test(l)){var c=i.objects[l].common,u={id:l,parent:null,_class:"treetable-"+i.objects[l].type};"channel"===i.objects[l].type&&(u.folder=!0);for(var p=0;p<i.columns.length;p++)if("instance"===i.columns[p])"script"===i.objects[l].type&&(u.instance=c?c.engine.split(".").pop():0);else if(c&&"id"!==i.columns[p]){var m=c[i.columns[p]];void 0!==m&&(u[i.columns[p]]=m)}i.members&&(u.members=c.members),i.colors&&(u.color=c.color),s.push(u)}}s.sort(function(e,t){return e.id>t.id?1:e.id<t.id?-1:0});for(var g=0;g<s.length;g++){var f=s[g].id.split("."),h=f.pop(),b=f.join(".");s[g].title=h;for(var y=0;y<s.length;y++)if(s[y].id===b){s[g].parent=b,s[y].children=s[y].children||[],s[y].children.push(g);break}1===f.length&&(s[g]._class+=" treetable-root")}for(var M=0;M<s.length;M++)s[M].realChildren=!!s[M].children&&!!s[M].children.length;if(i.groups)for(var v=function(e,t){for(var a={},i=0;i<t.length;i++)if(e[t[i]]&&e[t[i]].common&&e[t[i]].common.members)for(var n=e[t[i]].common.members,s=0;s<n.length;s++){a[n[s]]=a[n[s]]||[];var o=e[t[i]].common.name;o&&"object"==typeof o&&(o=o[systemLang]||"en"),a[n[s]].push({id:t[i],name:o||id.replace("system.group.","")})}return a}(i.objects,i.groups),w=s.length-1;0<=w;w--)s[w].groups=v[s[w].id]||[];if(i.members)for(var j=s.length-1;0<=j;j--)if(s[j].members){s[j].children=s[j].children||[];var N=Object.assign([],s[j].members);N.sort();for(var L=0;L<N.length;L++){if(u={id:N[L],title:N[L],parent:s[j].id,_class:"treetable-member"},s[j].children.push(N[L]),i.objects[u.id]){var T=i.objects[u.id].common;if(T){for(var C=0;C<i.columns.length;C++){var k=i.columns[C];if("members"!==k&&"id"!==k&&"title"!==k&&"icon"!==k){var D=T[i.columns[C]];void 0!==D&&(u[k]=D)}}i.colors&&(u.color=c.color)}}s.splice(j+1,0,u)}delete s[j].members}for(var z="",I=0;I<s.length;I++){e+='<tr data-tt-id="'+s[I].id+'"'+(s[I].children?' data-tt-branch="true"':"")+(s[I].parent?' data-tt-parent-id="'+s[I].parent+'"':"")+' class="',s[I]._class&&(e+=s[I]._class+" "),i.draggable&&(e+=i.draggable+" "),s[I].children&&s[I].children.length?e+="not-empty":e+="is-empty",e+='">';for(var A=0;A<i.columns.length;A++){var S=i.columns[A],E="",O=i.classes&&i.classes[A]||"";if("groups"===S&&(O+=" m"),!A&&s[I].hasOwnProperty("children")?(O+=" treetable-folder fancytree-exp-c fancytree-has-children fancytree-ico-cf","script.js.global"===s[I].id?E+=" color: rgb(0, 128, 0);":E+=" color: rgb(0, 0, 128);",e+='<td style="'+E+'" class="'+O+'">',s[I].children&&s[I].children.length&&(e+='<span class="treetable-counter">'+s[I].children.length+"</span>")):e+='<td style="'+E+'" class="'+O+'">',!A&&i.colors&&s[I].color&&(e+='<div style="background: '+s[I].color+'" class="treetable-color"></div>'),!A&&i.icons&&(e+=ae(i.objects[s[I].id],i.imgPath)||'<div class="treetable-icon-empty">&nbsp;</div>'),"enabled"===S)e+='<input data-attr="'+S+'" data-id="'+s[I].id+'" class="treetable-input" type="checkbox" '+(s[I][S]?"checked":"")+" "+(i.readOnly&&!1!==i.readOnly[A]?"disabled":"")+">";else if("groups"===S)for(var x=0;x<s[I].groups.length;x++){var $=s[I].groups[x].id;e+='<div class="chip">'+ae(i.objects[$],null,"")+s[I].groups[x].name+"</div>"}else if("instance"===S)if(void 0!==s[I].instance&&1<r.length){z='<select class="treetable-instance" data-id="'+s[I].id+'">';for(var P=0;P<r.length;P++)z+='<option value="'+r[P]+'" '+(r[P]===s[I].instance?"selected":"")+">"+r[P]+"</option>";e+=z+="</select>"}else e+="<span>"+(void 0===s[I].instance?"":s[I].instance)+"</span>";else if("icon"===S)e+=ae(i.objects[s[I].id],i.imgPath);else{var R=s[I][S]||"";R&&"object"==typeof R&&R.en&&(R=R[systemLang]||R.en),e+="<span>"+R+"</span>"}e+="</td>"}if(i.buttons){e+='<td class="treetable-buttons" style="'+(i.buttonsStyle||"")+'">';for(var U="",G=0;G<i.buttons.length;G++)i.buttons[G].match&&!i.buttons[G].match(s[I].id,s[I].parent)?U+='<div class="treetable-button-empty">&nbsp;</div>':(U+="<"+t+' data-id="'+s[I].id+'" class="select-button-'+G+' select-button-custom td-button" style="margin-right: 3px;" data-parent="'+s[I].parent+'" data-children="'+!!s[I].realChildren+'" title="'+(i.buttons[G].title||"")+'">',window.M&&window.M.toast&&(U+='<i class="material-icons">'+(i.buttons[G].icon||"")+"</i>"),U+="</"+t+">");e+=U+"</td>"}e+="</tr>"}e+="</body>";var Y=q(this),H=q(e);Y.find("span:first-child").remove(),Y.find(".treetablelist-buttons").remove(),Y.find(".treetable-list").remove(),Y.find(".tree-table-buttons").remove(),Y.find(".tree-table-main").remove(),Y.prepend(H),i.rows=s;var Q=q(H[1]).find(">table"),B=q(H[0]);Q.data("options",i),Q.treetable({expandable:!0,clickableNodeNames:!0,expanderTemplate:"",indenterTemplate:'<span class="fancytree-expander"></span><span class="fancytree-icon"></span>',onNodeExpand:X,onNodeCollapse:ee,stringCollapse:_("collapse"),stringExpand:_("expand")});var F=Q.find("tbody");if(F.on("click","tr",function(){q(".selected").not(this).removeClass("selected"),q(this).addClass("selected");var e=q(this).parent().parent().data("options"),t=q(this).data("tt-id");e.onChange&&e.onChange(q(this).data("tt-id"),e.oldId),e.oldId=t}),i.buttons)for(var Z=0;Z<i.buttons.length;Z++){var W=F.find(".select-button-"+Z).button(i.buttons[Z]).on("click",function(){var e=q(this).data("callback");e&&e.call(q(this),q(this).data("id"),q(this).data("children"),q(this).data("parent"))}).data("callback",i.buttons[Z].click).attr("title",i.buttons[Z].title||"");0!==W.length&&(i.buttons[Z].width&&W.css({width:i.buttons[Z].width}),i.buttons[Z].height&&W.css({height:i.buttons[Z].height}))}if(i.panelButtons)for(var V=0;V<i.panelButtons.length;V++){var J=B.find(".btn-custom-"+V);J.on("click",i.panelButtons[V].click).attr("title",i.panelButtons[V].title||""),window.M&&window.M.toast||J.button(i.panelButtons[V]).css({width:24,height:24})}Q.find(".filter_name").on("change",function(){var e=q(this).data("timer");e&&clearTimeout(e);var t=q(this);t.data("timer",setTimeout(function(){t.data("timer",null),H.find(".filter_name").val()?t.addClass("input-not-empty"):t.removeClass("input-not-empty"),function(e,t){if(t){t=t.toLowerCase(),e.data("options"),e.find("tr").each(function(){q(this).hasClass("tree-table-main-header")||(q(this).data("tt-branch")||-1!==q(this).find("td:first-child").text().indexOf(t)?q(this).removeClass("filtered-out"):q(this).addClass("filtered-out"))});var a="",i=!1;e.find("tr").each(function(){q(this).data("tt-branch")?(a&&(i?e.find('tr[data-tt-id="'+a+'"]').removeClass("filtered-out"):e.find('tr[data-tt-id="'+a+'"]').addClass("filtered-out")),i=!1,a=q(this).data("tt-id")):a&&(q(this).hasClass("filtered-out")||(i=!0))}),a&&(i?e.find('tr[data-tt-id="'+a+'"]').removeClass("filtered-out"):e.find('tr[data-tt-id="'+a+'"]').addClass("filtered-out"))}else e.find("tr").removeClass("filtered-out")}(q(H[1]),H.find(".filter_name").val())}))}).on("keyup",function(){q(this).trigger("change")}),Q.find(".filter-clear").button({icons:{primary:"ui-icon-close"},text:!1}).on("click",function(){var e=q(this).data("id");H.find("."+e).val("").trigger("change")});var K=this;B.find(".treetable-sort").button({icons:{primary:"ui-icon-arrowthick-2-n-s"},text:!1}).css({width:24,height:24}).on("click",function(){te.call(K,i)}),i.onEdit?(Q.find(".treetable-instance").on("change",function(){i.onEdit(q(this).data("id"),"instance",q(this).val())}),Q.find(".treetable-input").on("change",function(e){var t;e.stopPropagation(),t="checkbox"===q(this).attr("type")?q(this).prop("checked"):q(this).val();var a=q(this).data("id");i.onEdit&&!1===i.onEdit(a,q(this).data("attr"),t)&&q(this).prop("checked",!0)}).on("keyup",function(){q(this).trigger("change")})):Q.find(".treetable-instance").prop("disabled",!0),"function"==typeof i.onReady&&i.onReady(Q)}function s(){var e=q(this).find(".tree-table-main"),t=e.find(".selected").data("tt-id"),a=e.find(".expanded"),i=[];a.each(function(e){i.push(q(this).data("tt-id"))});var n=e.find(".filter_name").val(),s=e.data("options");h.call(this,s),e=q(this).find(".tree-table-main");for(var o=0;o<i.length;o++)try{e.treetable("expandNode",i[o])}catch(o){}if(t){var r=e.treetable("node",t);r&&e.treetable("reveal",t),r&&r.row&&r.row.addClass("selected")}n&&e.find(".filter_name").val(n).trigger("change")}}(jQuery),systemDictionary={" for %s":{en:" for %s",de:" für %s",ru:" для %s",pt:" para %s",nl:" voor %s",fr:" pour %s",it:" per %s",es:" para %s",pl:" dla %s"},"%s added to %s":{en:"%s added to %s",de:"%s wurde zu %s hinzugefügt",ru:"%s добавлен в %s",pt:"%s foi adicionado a %s",nl:"%s toegevoegd aan %s",fr:"%s ajouté à %s",it:"%s aggiunto a %s",es:"%s se ha agregado a %s",pl:"%s dodano do %s"},"%s object(s) processed":{en:"%s objects were processed",de:"%s Objekte wurden bearbeitet",ru:"Обработано объектов: %s",pt:"%s objetos foram processados",nl:"%s objecten werden verwerkt",fr:"%s objets ont été traités",it:"%s oggetti sono stati elaborati",es:"%s objetos fueron procesados",pl:"Przetworzono %s obiektów"},"%s processes":{en:"%s processes",de:"%s Prozesse",ru:"%s процессов",pt:"%s processos",nl:"%s processen",fr:"%s processus",it:"%s processi",es:"%s procesos",pl:"%s procesów"},"%s was imported":{en:"%s was imported",de:"%s wurde importiert",ru:"%s был импортирован",pt:"%s foi importado",nl:"%s is geïmporteerd",fr:"%s a été importé",it:"L'%s è stato importato",es:"%s fue importado",pl:"%s został zaimportowany"},"(without prefix)":{en:"(without prefix)",de:"(ohne Präfix)",ru:"(без префикса)",pt:"(sem prefixo)",nl:"(zonder voorvoegsel)",fr:"(sans préfixe)",it:"(senza prefisso)",es:"(sin prefijo)",pl:"(bez prefiksu)"},"1 %d days ago":{en:"%d days ago",de:"vor %d Tagen",ru:"%d день назад",pt:"%d dias atrás",nl:"%d dagen geleden",fr:"il y a %d jours",it:"%d giorni fa",es:"hace %d días",pl:"%d dni temu"},"2 %d days ago":{en:"%d days ago",de:"vor %d Tagen",ru:"%d дня назад",pt:"%d dias atrás",nl:"%d dagen geleden",fr:"il y a %d jours",it:"%d giorni fa",es:"hace %d días",pl:"%d dni temu"},"5 %d days ago":{en:"%d days ago",de:"vor %d Tagen",ru:"%d дней назад",pt:"%d dias atrás",nl:"%d dagen geleden",fr:"il y a %d jours",it:"%d giorni fa",es:"hace %d días",pl:"%d dni temu"},"A-Z":{en:"A-Z",de:"A-Z",ru:"А-Я",pt:"A-Z",nl:"A-Z",fr:"A-Z",it:"A-Z",es:"A-Z",pl:"A-Z"},"Access control":{en:"Access control",de:"Zugriffskontrolle",ru:"Права доступа",pt:"Controle de acesso",nl:"Toegangscontrole",fr:"Contrôle d'accès",it:"Controllo di accesso",es:"Controle de acceso",pl:"Kontrola dostępu"},"Access control list":{en:"Access control list",de:"Liste der Zugriffsrechte",ru:"Права доступа",pt:"Lista de controle de acesso",nl:"Toegangscontrole lijst",fr:"Liste des droits d'accès",it:"Lista di controllo di accesso",es:"Lista de control de acceso",pl:"Lista kontroli dostępu"},Acknowledged:{en:"Acknowledged",de:"Bestätigt",ru:"Подтверждён",pt:"Confirmado",nl:"Erkend",fr:"Confirmé",it:"Riconosciuto",es:"Confirmado",pl:"Przyznane"},"Activated. Click to stop.":{en:"Activated. Click to stop.",de:"Aktiviert. Klicken zum Stoppen.",ru:"Активно. Нажать для остановки.",pt:"Ativado. Clique para parar.",nl:"Geactiveerd. Klik om te stoppen.",fr:"Activé. Cliquez pour arrêter.",it:"Attivato. Clicca per interrompere.",es:"Activado. Haga clic para detener.",pl:"Aktywowany. Kliknij, aby zatrzymać."},"Active instances":{en:"Active instances",de:"Aktivierte Instanzen",ru:"Драйверов активно",pt:"Instâncias ativas",nl:"Actieve instanties",fr:"Instances actives",it:"Istanze attive",es:"Instancias activas",pl:"Aktywne instancje"},"Active repository:":{en:"Active repository",de:"Aktiver Verwahrungsort",ru:"Активный репозиторий:",pt:"Repositório ativo:",nl:"Actieve repository:",fr:"Dépôt actif",it:"Repository attivo:",es:"Repositorio activo:",pl:"Aktywne repozytorium:"},"Adapter configuration":{en:"Adapter configuration",de:"Adapterkonfiguration",ru:"Настройки драйвера",pt:"Configuração do adaptador",nl:"Adapter configuratie",fr:"Configuration de l'adaptateur",it:"Configurazione dell'adattatore",es:"Configuración del adaptador",pl:"Konfiguracja adaptera"},"Adapter settings for %s states":{en:"Adapter settings for %s states",de:"Adaptereinstellungen für %s-Status",ru:"Настройки адаптера для состояний %s",pt:"Configurações do adaptador para estados de %s",nl:"Adapterinstellingen voor% toestanden",fr:"Paramètres de l'adaptateur pour les états %s",it:"Impostazioni dell'adattatore per stati %s",es:"Configuración del adaptador para estados de %s",pl:"Ustawienia adaptera dla stanów %s"},Adapters:{en:"Adapters",de:"Adapter",ru:"Драйвера",pt:"Adaptadores",nl:"Adapters",fr:"Adaptateurs",it:"Adattatori",es:"Adaptadores",pl:"Adaptery"},"Adapters from this Group installed":{en:"Adapters from this group installed",de:"Adaptern aus dieser Gruppe installiert",ru:"драйверов из этой группы установлено",pt:"Adaptadores deste grupo instalados",nl:"Adapters van deze groep geïnstalleerd",fr:"Les adaptateurs de ce groupe sont installés",it:"Gli adattatori di questo gruppo sono stati installati",es:"Adaptadores de este grupo instalados",pl:"Instalowane są adaptery z tej grupy"},Add:{en:"Add",de:"Hinzufügen",ru:"Добавить",pt:"Adicionar",nl:"Toevoegen",fr:"Ajouter",it:"Inserisci",es:"Añadir",pl:"Dodaj"},"Add Objecttree from JSON File":{en:"Add objects tree from JSON file",de:"Eine Objektstruktur mittels JSON Datei hochladen",ru:"Добавить дерево объектов из JSON файла",pt:"Adicionar árvore de objetos do arquivo JSON",nl:"Object-boom toevoegen vanuit JSON-bestand",fr:"Ajouter une arborescence d'objets à partir du fichier JSON",it:"Aggiungi albero degli oggetti dal file JSON",es:"Agregar árbol de objetos de archivo JSON",pl:"Dodaj drzewo obiektów z pliku JSON"},"Add certificate from file":{en:"Add certificate from file",de:"Zertifikat aus der Datei hinzufügen",ru:"Добавить сертификат из файла",pt:"Adicionar certificado de um arquivo",nl:"Certificaat uit bestand toevoegen",fr:"Ajouter un certificat à partir du fichier",it:"Aggiungi certificato dal file",es:"Agregar certificado de un archivo",pl:"Dodaj certyfikat z pliku"},"Add instance...":{en:"Adding instance...",de:"Instanz wird hinzugefügt ...",ru:"Добавление экземпляра ...",pt:"Adicionando instância ...",nl:"Een exemplaar toevoegen ...",fr:"Ajouter une instance ...",it:"Aggiungere istanza ...",es:"Agregar instancia ...",pl:"Dodawanie wystąpienia ..."},"Add member":{en:"Add member",de:"Mitglied hinzufügen",ru:"Добавить участника",pt:"Adicionar membro",nl:"Lid toevoegen",fr:"Ajouter un membre",it:"Aggiungi membro",es:"Añadir miembro",pl:"Dodaj członka"},"Add new child object to selected parent":{en:"Add new child object to selected parent",de:"Ein Tochterobjekt zu ausgewähltem Objekt hinzufügen",ru:"Добавить объект к выделенному элементу",pt:"Adicionar novo objeto dentro do selecionado",nl:"Voeg een nieuw object toe",fr:"Ajouter un nouvel objet enfant au parent sélectionné",it:"Aggiungi un nuovo oggetto figlio al genitore selezionato",es:"Agregar nuevo objeto dentro del seleccionado",pl:"Dodaj nowy obiekt potomny do wybranego rodzica"},"Add new field":{en:"Add new field",de:"Neues Attribut hinzufügen",ru:"Добавить атрибут",pt:"Adicionar novo atributo",nl:"Nieuw veld toevoegen",fr:"Ajouter un nouveau champ",it:"Aggiungi un nuovo campo",es:"Agregar nuevo atributo",pl:"Dodaj nowe pole"},"Add new issue":{en:"Report a bug",de:"Bug melden",ru:"Сообщить об ошибке",pt:"Reportar um erro",nl:"Meld een bug",fr:"Signaler un bug",it:"Segnala un bug",es:"Reportar un error",pl:"Zgłoś błąd"},"Add new object: ":{en:"Add new object: ",de:"Neues Objekt hinzufügen: ",ru:"Добавить новый объект: ",pt:"Adicionar novo objeto:",nl:"Nieuw object toevoegen:",fr:"Ajouter un nouvel objet",it:"Aggiungi un nuovo oggetto:",es:"Agregar nuevo objeto:",pl:"Dodaj nowy obiekt:"},"Add new object: %s":{en:"Add new object: %s",de:"Neues Objekt hinzufügen: %s",ru:"Добавить новый объект: %s",pt:"Adicionar novo objeto: %s",nl:"Nieuw object toevoegen: %s",fr:"Ajouter un nouvel objet: %s",it:"Aggiungi nuovo oggetto: %s",es:"Agregar nuevo objeto: %s",pl:"Dodaj nowy obiekt: %s"},"Address:":{en:"Address",de:"Adresse",ru:"Адрес:",pt:"Endereço:",nl:"Adres:",fr:"Adresse",it:"Indirizzo:",es:"Dirección:",pl:"Adres:"},"Admin is not enabled in cloud settings!":{en:"Admin is not enabled in cloud settings!",de:"Admin ist in Cloud-Einstellungen nicht aktiviert!",ru:"Админ не включен в облачных настройках!",pt:"O Admin não está ativado nas configurações de nuvem!",nl:"Beheerder is niet ingeschakeld in cloud-instellingen!",fr:"L'Admin n'est pas activé dans les paramètres du cloud!",it:"L'Admin non è abilitato nelle impostazioni cloud!",es:"¡La Admin no está habilitada en la configuración de la nube!",pl:"Admin nie jest włączony w ustawieniach chmury!"},Administrator:{en:"Administrator",de:"Administrator",ru:"Администратор",pt:"Administrador",nl:"Beheerder",fr:"Administrateur",it:"Amministratore",es:"Administrador",pl:"Administrator"},Afghanistan:{en:"Afghanistan",de:"Afghanistan",ru:"Афганистан",pt:"Afeganistão",nl:"Afghanistan",fr:"Afghanistan",it:"afghanistan",es:"Afganistán",pl:"Afganistan"},Albania:{en:"Albania",de:"Albanien",ru:"Албания",pt:"Albânia",nl:"Albanië",fr:"Albanie",it:"Albania",es:"Albania",pl:"Albania"},Algeria:{en:"Algeria",de:"Algerien",ru:"Алжир",pt:"Argélia",nl:"Algerije",fr:"Algérie",it:"algeria",es:"Argelia",pl:"Algieria"},All:{en:"All",de:"Alle",ru:"все",pt:"Todos",nl:"Alle",fr:"Tout",it:"Tutti",es:"Todos",pl:"Wszystko"},"American Samoa":{en:"American Samoa",de:"American Samoa",ru:"Американское Самоа",pt:"Samoa Americana",nl:"Amerikaans Samoa",fr:"Samoa américaines",it:"Samoa americane",es:"Samoa Americana",pl:"Samoa Amerykańskie"},Andorra:{en:"Andorra",de:"Andorra",ru:"Андорра",pt:"Andorra",nl:"Andorra",fr:"Andorre",it:"Andorra",es:"Andorra",pl:"Andora"},Angola:{en:"Angola",de:"Angola",ru:"Ангола",pt:"Angola",nl:"Angola",fr:"Angola",it:"angola",es:"Angola",pl:"Angola"},Anguilla:{en:"Anguilla",de:"Anguilla",ru:"Ангилья",pt:"Anguila",nl:"Anguilla",fr:"Anguilla",it:"Anguilla",es:"Anguila",pl:"Anguilla"},Antarctica:{en:"Antarctica",de:"Antarctica",ru:"Антарктида",pt:"Antártica",nl:"Antarctica",fr:"Antarctique",it:"Antartide",es:"Antártica",pl:"Antarktyda"},"Antigua and Barbuda":{en:"Antigua and Barbuda",de:"Antigua und Barbuda",ru:"Антигуа и Барбуда",pt:"Antígua e Barbuda",nl:"Antigua en Barbuda",fr:"Antigua-et-Barbuda",it:"Antigua e Barbuda",es:"Antigua y Barbuda",pl:"Antigua i Barbuda"},Apr:{en:"Apr",de:"apr",ru:"апр",pt:"abr",nl:"april",fr:"avr.",it:"aprile",es:"Apr",pl:"Apr"},April:{en:"April",de:"April",ru:"апрель",pt:"abril",nl:"april",fr:"avril",it:"aprile",es:"Abril",pl:"kwiecień"},Architecture:{en:"Architecture",de:"Die Architektur",ru:"Архитектура",pt:"Arquitetura",nl:"architectuur",fr:"Architecture",it:"Architettura",es:"Arquitectura",pl:"Architektura"},"Are you sure to delete %s?":{en:'Are you sure to delete <b>"%s"</b>?',de:'Wollen Sie wirklich <b>"%s"</b> löschen?',ru:'Удалить <b>"%s"</b>?',pt:'Tem certeza que quer deletar <b> "%s" </b>?',nl:'Weet u zeker dat u <b> "%s" </b> wilt verwijderen?',fr:'Êtes-vous sûr de vouloir supprimer <b>"%s"</b>?',it:'Eliminare <b> "%s" </b>?',es:'¿Está seguro de que desea borrar <b>"%s"</b>?',pl:'Czy na pewno chcesz usunąć <b> " %s" </b>?'},'Are you sure to delete <span style="color: red">all</span> children of %s?':{en:'Are you sure to delete <span style="color: red">all</span> children of <b>%s</b>?',de:'Wollen Sie wirklich <span style="color: red; font-weight: bold">alle</span> unterliegende Objekte von <b>"%s"</b> löschen?',ru:'Вы действительно хотите удалить <span style="color: red; font-weight: bold">все</span> нижележащие под <b>"%s"</b> объекты?',pt:'Tem certeza que quer deletar <span style="color: red"> todos </span> os objetos subjacentes de <b> %s </b>?',nl:'Weet u zeker dat u <span style="color: red"> alle </span> onderliggende van <b> %s </b> wilt verwijderen?',fr:'Êtes-vous sûr de vouloir supprimer <span style="color: red">tous les descendants</span> de %s ?',it:'Eliminare <span style="color: red"> tutti </span> figli di <b>%s </b>?',es:'¿Es seguro que quiere borrar <span style="color: red">todos</span> los objetos subyacentes de <b>%s</b>?',pl:'Czy na pewno chcesz usunąć <span style="color: red"> all </span> children z <b> %s </b>?'},"Are you sure to delete all children of %s?":{en:'Are you sure to delete <b>"%s"</b> and <span style="color: red; font-weight: bold">all</span> children?',de:'Wollen Sie wirklich <b>"%s"</b> und <span style="color: red; font-weight: bold">alle</span> unterliegende Objekte löschen?',ru:'Вы действительно хотите удалить <b>"%s"</b> и <span style="color: red; font-weight: bold">все</span> нижележащие объекты?',pt:'Você tem certeza que quer deletar <b> "%s" </b> e <span style="color: red; font-weight: bold"> todos </span> os objetos subjacentes?',nl:'Weet u zeker dat u <b> "%s" </b> en <span style="color: red; font-weight: bold"> alle </span> onderliggende wilt verwijderen?',fr:"Êtes-vous sûr de vouloir supprimer tous les descendants de %s ?",it:'Eliminare <b>"%s"</b> e <span style="color: red; font-weight: bold">tutti</span> figli?',es:'¿Usted está seguro de que desea eliminar <b>"%s"</b> y <span style="color: red; font-weight: bold">todos</span> los objetos subyacentes?',pl:'Czy na pewno usunąć <b> " %s" </b> i <span style="color: red; font-weight: bold"> all </span> children?'},"Are you sure to delete script %s?":{en:"Are you sure to delete script '%s'?",de:"Wollen Sie das Skript '%s' wirklich löschen?",ru:"Вы действительно хотите удалить скрипт '%s'?",pt:"Tem certeza que quer deletar o script ' %s'?",nl:"Weet je zeker dat je script ' %s' wilt verwijderen?",fr:"Etes-vous sûr de vouloir supprimer le script '%s'?",it:"Sei sicuro di voler eliminare lo script '%s'?",es:"¿Está seguro de que quiere borrar el script '%s'?",pl:'Czy na pewno chcesz usunąć skrypt " %s"?'},"Are you sure you want to delete adapter %s?":{en:"Are you sure you want to delete adapter %s?",de:"Möchten Sie den Adapter %s wirklich löschen?",ru:"Вы действительно хотите удалить адаптер %s?",pt:"Tem certeza de que deseja excluir o adaptador %s?",nl:"Weet je zeker dat je adapter %s wilt verwijderen?",fr:"Êtes-vous sûr de vouloir supprimer l'adaptateur %s?",it:"Sei sicuro di voler eliminare l'adattatore %s?",es:"¿Está seguro de que desea eliminar el adaptador %s?",pl:"Czy na pewno chcesz usunąć adapter %s?"},"Are you sure you want to delete the instance <b>%s</b>?":{en:"Are you sure you want to delete the instance <b>%s</b>?",de:"Möchten Sie die Instanz <b> %s </b> wirklich löschen?",ru:"Вы действительно хотите удалить экземпляр <b> %s </b>?",pt:"Tem certeza de que deseja excluir a instância <b> %s </b>?",nl:"Weet u zeker dat u het exemplaar <b> %s </b> wilt verwijderen?",fr:"Êtes-vous sûr de vouloir supprimer l'instance <b>%s</b>?",it:"Sei sicuro di voler eliminare l'istanza <b> %s </b>?",es:"¿Seguro que quieres eliminar la instancia <b> %s </b>?",pl:"Czy na pewno chcesz usunąć instancję <b> %s </b>?"},"Are you sure?":{en:"Are you sure?",de:"Sind sie sicher?",ru:"Вы уверены?",pt:"Você tem certeza?",nl:"Weet je het zeker?",fr:"Êtes-vous sûr?",it:"Sei sicuro?",es:"¿Estás seguro?",pl:"Jesteś pewny?"},"Are you sure? Changes are not saved.":{en:"Are you sure? Changes are not saved.",de:"Sind Sie sicher? Die Änderungen sind nicht gespeichert.",ru:"Изменения не сохранены. Всё равно закрыть?",pt:"Você tem certeza? As alterações não estão gravadas.",nl:"Weet je het zeker? Wijzigingen worden niet opgeslagen.",fr:"Êtes-vous sûr? Les modifications ne sont pas enregistrées.",it:"Sei sicuro? Le modifiche non vengono salvate.",es:"¿Estás seguro? Los cambios no se guardan.",pl:"Jesteś pewny? Zmiany nie są zapisywane."},Argentina:{en:"Argentina",de:"Argentinien",ru:"Аргентина",pt:"Argentina",nl:"Argentinië",fr:"Argentine",it:"Argentina",es:"Argentina",pl:"Argentyna"},Armenia:{en:"Armenia",de:"Armenien",ru:"Армения",pt:"Armênia",nl:"Armenië",fr:"Arménie",it:"Armenia",es:"Armenia",pl:"Armenia"},Aruba:{en:"Aruba",de:"Aruba",ru:"Аруба",pt:"Aruba",nl:"Aruba",fr:"Aruba",it:"aruba",es:"Aruba",pl:"Aruba"},Aug:{en:"Aug",de:"Aug",ru:"авг",pt:"ago",nl:"augustus",fr:"août",it:"agosto",es:"Ago",pl:"Aug"},August:{en:"August",de:"August",ru:"август",pt:"agosto",nl:"augustus",fr:"août",it:"agosto",es:"Augusto",pl:"sierpień"},Australia:{en:"Australia",de:"Australien",ru:"Австралия",pt:"Austrália",nl:"Australië",fr:"Australie",it:"Australia",es:"Australia",pl:"Australia"},Austria:{en:"Austria",de:"Österreich",ru:"Австрия",pt:"Áustria",nl:"Oostenrijk",fr:"Autriche",it:"Austria",es:"Austria",pl:"Austria"},"Authentication was deactivated":{en:"Authentication was deactivated",de:"Die Authentifizierung wurde deaktiviert",ru:"Аутентификация была отключена",pt:"A autenticação foi desativada",nl:"Verificatie was gedeactiveerd",fr:"L'authentification a été désactivée",it:"L'autenticazione è stata disattivata",es:"La autenticación fue desactivada",pl:"Uwierzytelnianie zostało dezaktywowane"},Available:{en:"Available",de:"Verfügbar",ru:"Доступно",pt:"Acessível",nl:"Beschikbaar",fr:"Disponible",it:"A disposizione",es:"Disponible",pl:"Dostępny"},"Available version:":{en:"Available version",de:"Verfügbare Version:",ru:"доступная версия:",pt:"Versão disponível:",nl:"Beschikbare versie:",fr:"Version disponible:",it:"Versione disponibile:",es:"Versión disponible:",pl:"Dostępna wersja:"},Azerbaijan:{en:"Azerbaijan",de:"Azerbaijan",ru:"Азербайджан",pt:"Azerbaijão",nl:"Azerbeidzjan",fr:"Azerbaïdjan",it:"Azerbaijan",es:"Azerbaiyán",pl:"Azerbejdżan"},Background:{en:"Background",de:"Hintergrund",ru:"Фон",pt:"Fundo",nl:"Achtergrond",fr:"Contexte",it:"Sfondo",es:"Fondo",pl:"Tło"},"Background color of the login screen":{en:"Background color of the login screen",de:"Hintergrundfarbe des Anmeldebildschirms",ru:"Цвет фона экрана входа в систему",pt:"Cor de fundo da tela de login",nl:"Achtergrondkleur van het inlogscherm",fr:"Couleur d'arrière-plan de l'écran de connexion",it:"Colore di sfondo della schermata di accesso",es:"Color de fondo de la pantalla de inicio de sesión",pl:"Kolor tła ekranu logowania"},"Background image":{en:"Background image",de:"Hintergrundbild",ru:"Фоновое изображение",pt:"Imagem de fundo",nl:"Achtergrond afbeelding",fr:"Image de fond",it:"Immagine di sfondo",es:"Imagen de fondo",pl:"Zdjęcie w tle"},Bahamas:{en:"Bahamas",de:"Bahamas",ru:"Багамские о-ва",pt:"Bahamas",nl:"Bahamas",fr:"Bahamas",it:"Bahamas",es:"Bahamas",pl:"Bahamy"},Bahrain:{en:"Bahrain",de:"Bahrain",ru:"Бахрейн",pt:"Bahrein",nl:"Bahrein",fr:"Bahreïn",it:"Bahrain",es:"Bahrein",pl:"Bahrajn"},Bangladesh:{en:"Bangladesh",de:"Bangladesh",ru:"Бангладеш",pt:"Bangladesh",nl:"Bangladesh",fr:"Bangladesh",it:"Bangladesh",es:"Bangladesh",pl:"Bangladesz"},Barbados:{en:"Barbados",de:"Barbados",ru:"Барбадос",pt:"Barbados",nl:"Barbados",fr:"Barbade",it:"Barbados",es:"Barbados",pl:"Barbados"},Belarus:{en:"Belarus",de:"Weissrussland",ru:"Беларуссия",pt:"Bielorrússia",nl:"Wit-Rusland",fr:"Bélarus",it:"Bielorussia",es:"Bielorrusia",pl:"Białoruś"},Belgium:{en:"Belgium",de:"Belgien",ru:"Бельгия",pt:"Bélgica",nl:"België",fr:"Belgique",it:"Belgio",es:"Bélgica",pl:"Belgia"},Belize:{en:"Belize",de:"Belize",ru:"Белиз",pt:"Belize",nl:"Belize",fr:"Belize",it:"Belize",es:"Belize",pl:"Belize"},Benin:{en:"Benin",de:"Benin",ru:"Бенин",pt:"Benin",nl:"Benin",fr:"Bénin",it:"Benin",es:"Benin",pl:"Benin"},Bermuda:{en:"Bermuda",de:"Bermuda",ru:"Бермудские острова",pt:"Bermudas",nl:"Bermuda",fr:"Bermudes",it:"Bermuda",es:"Bermudas",pl:"Bermudy"},Bhutan:{en:"Bhutan",de:"Bhutan",ru:"Бутан",pt:"Butão",nl:"Bhutan",fr:"Bhoutan",it:"Bhutan",es:"Bután",pl:"Bhutan"},Bolivia:{en:"Bolivia",de:"Bolivien",ru:"Боливия",pt:"Bolívia",nl:"Bolivia",fr:"Bolivie",it:"Bolivia",es:"Bolivia",pl:"Boliwia"},"Bosnia and Herzegovina":{en:"Bosnia and Herzegovina",de:"Bosnien und Herzegovina",ru:"Босния и Герцеговина",pt:"Bósnia e Herzegovina",nl:"Bosnië-Herzegovina",fr:"Bosnie Herzégovine",it:"Bosnia Erzegovina",es:"Bosnia y Herzegovina",pl:"Bośnia i Hercegowina"},Botswana:{en:"Botswana",de:"Botswana",ru:"Ботсвана",pt:"Botswana",nl:"Botswana",fr:"Botswana",it:"Botswana",es:"Botswana",pl:"Botswana"},"Bouvet Island":{en:"Bouvet Island",de:"Bouvet Island",ru:"Остров Буве",pt:"Ilha de Bouvet",nl:"Bouvet Island",fr:"Île Bouvet",it:"Isola Bouvet",es:"Isla de Bouvet",pl:"Wyspa Bouvet"},Brazil:{en:"Brazil",de:"Brasilien",ru:"Бразилия",pt:"Brasil",nl:"Brazilië",fr:"Brésil",it:"Brasile",es:"Brasil",pl:"Brazylia"},"British Indian Ocean Territory":{en:"British Indian Ocean Territory",de:"British Indian Ocean Territory",ru:"Британская территория Индийского океана",pt:"Território britânico do Oceano Índico",nl:"Brits-Indisch oceaan gebied",fr:"Territoire britannique de l'océan Indien",it:"Territorio britannico dell'Oceano Indiano",es:"Territorio británico del Océano Índico",pl:"Brytyjskie Terytorium Oceanu Indyjskiego"},"Brunei Darussalam":{en:"Brunei Darussalam",de:"Brunei Darussalam",ru:"Бруней-Даруссалам",pt:"Brunei Darussalam",nl:"Brunei Darussalam",fr:"Brunei Darussalam",it:"Brunei Darussalam",es:"Brunéi Darussalam",pl:"Brunei Darussalam"},Bulgaria:{en:"Bulgaria",de:"Bulgarien",ru:"Болгария",pt:"Bulgária",nl:"Bulgarije",fr:"Bulgarie",it:"Bulgaria",es:"Bulgaria",pl:"Bułgaria"},"Burkina Faso":{en:"Burkina Faso",de:"Burkina Faso",ru:"Буркина-Фасо",pt:"Burkina Faso",nl:"Burkina Faso",fr:"Burkina Faso",it:"Burkina Faso",es:"Burkina Faso",pl:"Burkina Faso"},Burundi:{en:"Burundi",de:"Burundi",ru:"Бурунди",pt:"Burundi",nl:"Boeroendi",fr:"Burundi",it:"Burundi",es:"Burundi",pl:"Burundi"},CPUs:{en:"CPUs",de:"CPUs",ru:"CPUs",pt:"CPUs",nl:"CPUs",fr:"CPUs",it:"CPUs",es:"CPUs",pl:"CPUs"},Calendar:{en:"Calendar",de:"Kalender",ru:"Календарь",pt:"Calendário",nl:"Kalender",fr:"Calendrier",it:"Calendario",es:"Calendario",pl:"Kalendarz"},Cambodia:{en:"Cambodia",de:"Kambodscha",ru:"Камбоджа",pt:"Camboja",nl:"Cambodja",fr:"Cambodge",it:"Cambogia",es:"Camboya",pl:"Kambodża"},Cameroon:{en:"Cameroon",de:"Kamerun",ru:"Камерун",pt:"Camarões",nl:"Kameroen",fr:"Cameroun",it:"Camerun",es:"Camerún",pl:"Kamerun"},Canada:{en:"Canada",de:"Kanada",ru:"Канада",pt:"Canadá",nl:"Canada",fr:"Canada",it:"Canada",es:"Canadá",pl:"Kanada"},Cancel:{en:"Cancel",de:"Abbrechen",ru:"Отмена",pt:"Cancelar",nl:"Annuleren",fr:"Annuler",it:"Annulla",es:"Cancelar",pl:"Anuluj"},"Cannot create user: ":{en:"Cannot create user: ",de:"Benutzer kann nicht erstellt werden: ",ru:"Не могу создать пользователя: ",pt:"Não é possível criar usuário:",nl:"Kan gebruiker niet aanmaken:",fr:"Impossible de créer l'utilisateur:",it:"Impossibile creare un utente:",es:"No se puede crear usuario:",pl:"Nie można utworzyć użytkownika:"},"Cannot delete user: ":{en:"Cannot delete user: ",de:"Benutzer kann nicht gelöscht werden: ",ru:"Не могу удалить пользователя: ",pt:"Não é possível deletar o usuário:",nl:"Kan gebruiker niet verwijderen:",fr:"Impossible de supprimer l'utilisateur:",it:"Impossibile eliminare l'utente:",es:"No se puede suprimir el usuario:",pl:"Nie można usunąć użytkownika:"},"Cannot disable admin!":{en:"Cannot disable admin!",de:"Admin kann nicht deaktiviert werden!",ru:"Нельзя деактивировать админа!",pt:"Não é possível desativar o administrador!",nl:"Kan admin niet uitschakelen!",fr:"Impossible de désactiver l'administrateur!",it:"Impossibile disabilitare l'amministratore!",es:"¡No se puede deshabilitar el administrador!",pl:"Nie można wyłączyć administratora!"},"Cannot read file!":{en:"Cannot read file!",de:"Kann die Datei nicht lesen!",ru:"Невозможно прочитать файл!",pt:"Não é possível ler o arquivo!",nl:"Kan bestand niet lezen!",fr:"Impossible de lire le fichier!",it:"Impossibile leggere il file!",es:"¡No se puede leer el archivo!",pl:"Nie można odczytać pliku!"},"Cannot read version from NPM":{en:"Could not read version from NPM",de:"Die Version aus NPM konnte nicht gelesen werden",ru:"Невозможно было считать версию драйвера с NPM",pt:"Não foi possível ler a versão do NPM",nl:"Kon de versie van NPM niet lezen",fr:"Impossible de lire la version de NPM",it:"Impossibile leggere la versione da NPM",es:"No se pudo leer la versión de NPM",pl:"Nie można odczytać wersji z NPM"},"Cannot set password: ":{en:"Cannot set password: ",de:"Kann Passwort nicht setzen: ",ru:"Не могу изменить пароль: ",pt:"Não é possível configurar a senha:",nl:"Kan het wachtwoord niet instellen:",fr:"Impossible de définir le mot de passe:",it:"Impossibile impostare la password:",es:"No se pudo cambiar la contraseña:",pl:"Nie można ustawić hasła:"},"Cape Verde":{en:"Cape Verde",de:"Cap Verde",ru:"Кабо-Верде",pt:"Cabo Verde",nl:"Kaapverdië",fr:"Cap-Vert",it:"capo Verde",es:"Capo Verde",pl:"Wyspy Zielonego Przylądka"},"Cayman Islands":{en:"Cayman Islands",de:"Cayman Islands",ru:"Каймановы острова",pt:"Ilhas Cayman",nl:"Kaaiman Eilanden",fr:"Îles Caïmans",it:"Isole Cayman",es:"Islas Caimán",pl:"Kajmany"},"Central African Republic":{en:"Central African Republic",de:"Zentralafrikanische Republik",ru:"Центрально-Африканская Республика",pt:"República Centro-Africana",nl:"Centraal Afrikaanse Republiek",fr:"République centrafricaine",it:"Repubblica Centrafricana",es:"República Centroafricana",pl:"Republika Środkowoafrykańska"},Certificates:{en:"Certificates",de:"Zertifikate",ru:"Сертификаты",pt:"Certificados",nl:"certificaten",fr:"Certificats",it:"certificati",es:"Certificados",pl:"Certyfikaty"},Chad:{en:"Chad",de:"Tschad",ru:"Чад",pt:"Chade",nl:"Tsjaad",fr:"Chad",it:"Chad",es:"Chad",pl:"Chad"},Change:{en:"Change",de:"Ändern",ru:"Изменить",pt:"Mudar",nl:"Wijzig",fr:"Changement",it:"Modificare",es:"Cambiar",pl:"Zmiana"},Changelog:{en:"Change log",de:"Änderungsprotokoll",ru:"Журнал изменений",pt:"Registro de mudanças",nl:"Wijzig log",fr:"Modifier le journal",it:"Registro delle modifiche",es:"Cambiar registro",pl:"Zmień dziennik"},Channel:{en:"Channel",de:"Kanal",ru:"Канал",pt:"Canal",nl:"Kanaal",fr:"Canal",it:"Canale",es:"Canal",pl:"Kanał"},Chart:{en:"Chart",de:"Grafik",ru:"График",pt:"Gráfico",nl:"tabel",fr:"Graphique",it:"Grafico",es:"Gráfico",pl:"Wykres"},"Chart for %s":{en:"Chart for %s",de:"Chart für %s",ru:"График для %s",pt:"Gráfico para %s",nl:"Grafiek voor %s",fr:"Graphique pour %s",it:"Grafico per %s",es:"Gráfico para %s",pl:"Wykres dla %s"},"Check all":{en:"Check all",de:"Alle auswählen",ru:"Выбрать все",pt:"Selecionar todos",nl:"Controleer alles",fr:"Vérifie tout",it:"Seleziona tutto",es:"Seleccionar todos",pl:"Zaznacz wszystkie"},Chile:{en:"Chile",de:"Chile",ru:"Чили",pt:"Chile",nl:"Chili",fr:"Chili",it:"Chile",es:"Chile",pl:"Chile"},China:{en:"China",de:"China",ru:"Китай",pt:"China",nl:"China",fr:"Chine",it:"Cina",es:"China",pl:"Chiny"},"Christmas Island":{en:"Christmas Island",de:"Christmas Island",ru:"Остров Рождества",pt:"Ilha do Natal",nl:"Kersteiland",fr:"L'île de noël",it:"Isola di Natale",es:"Isla de Navidad",pl:"Wyspa Bożego Narodzenia"},"City:":{en:"City",de:"Stadt",ru:"Город:",pt:"Cidade:",nl:"Stad:",fr:"Ville",it:"Città:",es:"Ciudad:",pl:"Miasto:"},Clear:{en:"Clear",de:"Löschen",ru:"Сбросить",pt:"Apagar",nl:"Verwijderen",fr:"Effacer",it:"Chiaro",es:"Borrar",pl:"Jasny"},"Clear list":{en:"Clear list",de:"Anzeige löschen",ru:"Сбросить",pt:"Apagar a lista",nl:"Verwijder lijst",fr:"Effacer la liste",it:"Elenco chiaro",es:"Borrar la lista",pl:"Czysta lista"},"Clear log":{en:"Clear log",de:"Log löschen",ru:"Очистить протокол на экране",pt:"Apagar o log",nl:"Logboek opschonen",fr:"Effacer le journal",it:"Pulisci il registro",es:"Borrar el log",pl:"Wyczyść log"},"Clear on disk permanent":{en:"Clear on disk permanent",de:"Lösche Log auf dem Host",ru:"Удалить протокол на сервере",pt:"Delatar o log permanente do disco",nl:"Definitief van schijf wissen",fr:"Effacer sur le disque permanent",it:"Cancella su disco permanente",es:"Delatar el log permanente del disco",pl:"Wyczyść na dysku na stałe"},"Click do activate events again, or just wait one minute":{en:"Click do activate events again, or just wait one minute",de:"Eine Minute warten oder hier klicken, um die Ereignisse erneut zu aktivieren",ru:"Нажмите снова активировать события или просто подождите одну минуту",pt:"Clique em ativar eventos novamente ou espere um minuto",nl:"Klik op activeer gebeurtenissen opnieuw of wacht een minuut",fr:"Cliquez pour activer à nouveau les événements, ou attendez une minute",it:"Fai clic su attiva nuovamente gli eventi o aspetta solo un minuto",es:"Haga clic en activar eventos nuevamente, o simplemente espere un minuto",pl:"Kliknij ponownie, aby aktywować zdarzenia, lub po prostu poczekaj minutę"},"Click on icon":{en:"Click on icon to open a link",de:"Auf das Icon klicken",ru:"Что бы открыть ссылку надо нажать на иконку",pt:"Clique no ícone para abrir um link",nl:"Klik op het pictogram om de link te openen",fr:"Cliquez sur l'icône",it:"Clicca sull'icona per aprire un link",es:"Haga clic en el icono para abrir un link",pl:"Kliknij ikonę, aby otworzyć łącze"},Close:{en:"close",de:"Schließen",ru:"закрыть",pt:"fechar",nl:"sluiten",fr:"Fermer",it:"vicino",es:"cerrar",pl:"blisko"},"Cocos Islands":{en:"Cocos Islands",de:"Kokosinseln",ru:"Кокосовые острова",pt:"Ilhas Cocos",nl:"Cocoseilanden",fr:"Îles Cocos",it:"Isole Cocos",es:"Islas Cocos",pl:"Wyspy Kokosowe"},"Collapse all nodes":{en:"Collapse all nodes",de:"Alle Knoten ausblenden",ru:"Свернуть все узлы",pt:"Recolher todos os nós",nl:"Knip alle knooppunten samen",fr:"Réduire tous les nœuds",it:"Comprimi tutti i nodi",es:"Contraer todos los nodos",pl:"Zwiń wszystkie węzły"},Colombia:{en:"Colombia",de:"Kolumbien",ru:"Колумбия",pt:"Colômbia",nl:"Colombia",fr:"Colombie",it:"Colombia",es:"Colombia",pl:"Kolumbia"},Color:{en:"Color",de:"Farbe",ru:"Цвет",pt:"Cor",nl:"Kleur",fr:"Couleur",it:"Colore",es:"Color",pl:"Kolor"},Comoros:{en:"Comoros",de:"Komoren",ru:"Коморские острова",pt:"Comores",nl:"Comoren",fr:"Comores",it:"Comoros",es:"Comores",pl:"Komory"},"Configuration not saved.":{en:"Configuration not saved.",de:"Die Konfiguration ist nicht gespeichert.",ru:"Настройки не сохранены.",pt:"Configuração não está gravada.",nl:"Configuratie niet opgeslagen.",fr:"Configuration non enregistrée",it:"Configurazione non salvata.",es:"La configuración no está guardada.",pl:"Konfiguracja nie została zapisana."},Congo:{en:"Congo",de:"Congo",ru:"Конго",pt:"Congo",nl:"Congo",fr:"Congo",it:"Congo",es:"Congo",pl:"Kongo"},"Connected to %s: ":{en:"Connected to %s: ",de:"Verbunden mit %s: ",ru:"Соединён с %s: ",pt:"Conectado com %s:",nl:"Verbonden met %s:",fr:"Connecté à %s:",it:"Connesso a %s:",es:"Conectado con %s:",pl:"Połączono z %s:"},"Connected to host: ":{en:"Connected to host: ",de:"Verbunden mit Host: ",ru:"Общается с хостом: ",pt:"Conectado com o host:",nl:"Verbonden met host:",fr:"Connecté à l'hôte:",it:"Connesso all'host:",es:"Conectado con el host:",pl:"Połączony z hostem:"},"Cook Islands":{en:"Cook Islands",de:"Cook Islands",ru:"Острова Кука",pt:"Ilhas Cook",nl:"Cook Eilanden",fr:"Les Îles Cook",it:"Isole Cook",es:"Islas Cook",pl:"Wyspy Cooka"},"Copy log":{en:"Copy log",de:"Log kopieren",ru:"Скопировать протокол",pt:"Cópiar o log",nl:"Log kopiëren",fr:"Copier le journal",it:"Copia registro",es:"Copiar el log",pl:"Skopiuj dziennik"},"Copy to clipboard":{en:"Copy to clipboard",de:"In die Zwischenablage kopieren",ru:"Скопировать в буфер обмена",pt:"Copiar para o clipboard",nl:"Kopieer naar klembord",fr:"Copier dans le presse-papier",it:"Copia negli appunti",es:"Copiar al portapapeles",pl:"Skopiuj do schowka"},"Costa Rica":{en:"Costa Rica",de:"Costa Rica",ru:"Коста Рика",pt:"Costa Rica",nl:"Costa Rica",fr:"Costa Rica",it:"Costa Rica",es:"Costa Rica",pl:"Kostaryka"},"Country:":{en:"Country",de:"Land",ru:"Страна:",pt:"País:",nl:"Land:",fr:"Pays",it:"Nazione:",es:"País:",pl:"Kraj:"},Create:{en:"Create",de:"Erzeugen",ru:"Создать",pt:"Criar",nl:"Aanmaken",fr:"Créer",it:"Creare",es:"Crear",pl:"Stwórz"},"Create new category":{en:"Create new category",de:"Eine neue Kategorie erstellen",ru:"Создать новую под-категорию",pt:"Criar nova categoria",nl:"Maak een nieuwe categorie",fr:"Créer une nouvelle catégorie",it:"Crea una nuova categoria",es:"Crear nueva categoría",pl:"Utwórz nową kategorię"},"Create new category, like %s":{en:"Create new category, like %s",de:"Eine neue Kategorie erstellen, wie %s",ru:"Создайте новую под-категорию, например %s",pt:"Crie nova categoria, como %s",nl:"Maak een nieuwe categorie, zoals %s",fr:"Créer une nouvelle catégorie, comme %s",it:"Crea una nuova categoria, come %s",es:"Crear una nueva categoría, como %s",pl:"Utwórz nową kategorię, np. %s"},"Create new enum":{en:"Create new enum",de:"Eine neue Aufzählung erstellen",ru:"Создать новую категорию",pt:"Criar novo enum",nl:"Maak een nieuwe opsomming",fr:"Créer une nouvelle énumération",it:"Crea nuovo enum",es:"Crear nueva clasificación",pl:"Utwórz nowe wyliczenie"},"Create new enum, like %s":{en:"Create new enum, like %s",de:"Eine neue Aufzählung erstellen, wie %s",ru:"Создайте новую категорию, например %s",pt:"Crie novo enum, como %s",nl:"Maak een nieuwe enum, zoals %s",fr:"Créer une nouvelle énumération, comme %s",it:"Crea nuovo enum, come %s",es:"Crear nueva clasificación, como %s",pl:"Utwórz nowe wyliczenie, np. %s"},"Create new group":{en:"Create new group",de:"Neue Gruppe erstellen",ru:"Создать новую группу",pt:"Criar novo grupo",nl:"Maak een nieuwe groep",fr:"Créer un nouveau groupe",it:"Crea nuovo gruppo",es:"Crear nuevo grupo",pl:"Stwórz Nową Grupę"},"Create new user":{en:"Create new user",de:"Erstelle einen neuen Benutzer",ru:"Создать нового пользователя",pt:"Criar novo usuário",nl:"Maak een nieuwe gebruiker",fr:"Créer un nouvel utilisateur",it:"Crea un nuovo utente",es:"Crear nuevo usuario",pl:"Utwórz nowego użytkownika"},Created:{en:"Created",de:"Erstellt",ru:"Выполнено",pt:"Criado",nl:"Gemaakt",fr:"Créé",it:"Creato",es:"Creado",pl:"Stworzony"},Croatia:{en:"Croatia",de:"Kroatien",ru:"Хорватия",pt:"Croácia",nl:"Kroatië",fr:"Croatie",it:"Croazia",es:"Croacia",pl:"Chorwacja"},"Cron expression":{en:"Cron expression",de:"Cron-Ausdruck",ru:"Cron-Выражение",pt:"Expressão de Cron",nl:"Tijdschema",fr:"Expression Cron",it:"Espressione Cron",es:"Expresión de Cron",pl:"Ekspresja Cron"},Cuba:{en:"Cuba",de:"Kuba",ru:"Куба",pt:"Cuba",nl:"Cuba",fr:"Cuba",it:"Cuba",es:"Cuba",pl:"Kuba"},"Currency:":{en:"Currency",de:"Währung",ru:"Знак валюты:",pt:"Moeda:",nl:"Valuta:",fr:"Devise",it:"Moneta:",es:"Moneda:",pl:"Waluta:"},Custom:{en:"Custom",de:"Beliebig",ru:"Произвольный",pt:"Qualquer",nl:"speciaal",fr:"Au choix",it:"costume",es:"Cualquier",pl:"Zwyczaj"},Cyprus:{en:"Cyprus",de:"Zypern",ru:"Кипр",pt:"Chipre",nl:"Cyprus",fr:"Chypre",it:"Cipro",es:"Chipre",pl:"Cypr"},"Czech Republic":{en:"Czech Republic",de:"Tschechische Republik",ru:"Чехия",pt:"República Checa",nl:"Tsjechische Republiek",fr:"République Tchèque",it:"Repubblica Ceca",es:"República Checa",pl:"Republika Czeska"},D$ecember:{en:"D$ecember",de:"Dezember",ru:"декабрь",pt:"dezembro",nl:"december",fr:"Décembre",it:"dicembre",es:"Diciembre",pl:"grudzień"},"DD.MM.YY":{en:"DD.MM.YY",de:"DD.MM.YY",ru:"ДД.ММ.ГГ",pt:"DD.MM.YY",nl:"DD.MM.YY",fr:"JJ.MM.AA",it:"GG.MM.AA",es:"DD.MM.AA",pl:"DD.MM.YY"},"DD.MM.YYYY":{en:"DD.MM.YYYY",de:"DD.MM.YYYY",ru:"ДД.ММ.ГГГГ",pt:"DD.MM.YYYY",nl:"DD.MM.JJJJ",fr:"JJ.MM.AAAA",it:"GG.MM.AAAA",es:"DD.MM.AAAA",pl:"DD / MM / RRRR"},"DD/MM/YYYY":{en:"DD/MM/YYYY",de:"DD/MM/YYYY",ru:"ДД/ММ/ГГГГ",pt:"DD / MM / AAAA",nl:"DD / MM / YYYY",fr:"JJ/MM/AAAA",it:"GG / MM / AAAA",es:"DD/MM/AAAA",pl:"DD / MM / RRRR"},"Date From":{en:"Date From",de:"Datum von",ru:"Дата от",pt:"Data de",nl:"Datum vanaf",fr:"Dater de",it:"Data da",es:"Fecha de",pl:"Data, od"},"Date To":{en:"Date To",de:"Datum bis",ru:"Дата до",pt:"Data para",nl:"Datum tot",fr:"Date à",it:"Data a",es:"Fecha a",pl:"Data To"},"Date format:":{en:"Date format",de:"Datumsformat",ru:"Формат даты:",pt:"Formato de data:",nl:"Datumnotatie:",fr:"Format des dates",it:"Formato data:",es:"Formato de fecha:",pl:"Format daty:"},"Deactivated. Click to start.":{en:"Deactivated. Click to start.",de:"Deaktiviert. Klicken zum Starten.",ru:"Неактивно. Нажать для старта.",pt:"Desativado. Clique para começar.",nl:"Gedeactiveerd. Klik om te starten.",fr:"Désactivé. Cliquez pour commencer",it:"Disattivato. Clicca per iniziare.",es:"Desactivado. Haga clic para empezar.",pl:"Dezaktywowane. Kliknij, aby rozpocząć."},"Debug outputs:":{en:"Debug outputs",de:"Debug-Ausgabe",ru:"Debug вывод",pt:"Saídas de depuração",nl:"Debug-uitgangen",fr:"Sorties de débogage",it:"Uscite di debug",es:"Salidas de depuración",pl:"Wyjścia debugowania"},Dec:{en:"Dec",de:"Dez",ru:"дек",pt:"Dez",nl:"Dec",fr:"déc.",it:"Dic",es:"Dic",pl:"Gru"},December:{en:"December",de:"Dezember",ru:"December",pt:"Dezembro",nl:"December",fr:"Décembre",it:"Dicembre",es:"Diciembre",pl:"Grudzień"},"Default ACL":{en:"Default ACL",de:"Standard ACL",ru:"Default ACL",pt:"ACL default",nl:"Standaard ACL",fr:"ACL par défaut",it:"ACL predefinito",es:"ACL predeterminado",pl:"Domyślna lista ACL"},"Default history instance:":{en:"Default history instance",de:"Standard Historyinstanz",ru:"Инстанция истории по умолчанию:",pt:"Default instância histórica:",nl:"Standaard geschiedenisinstantie:",fr:"Instance d'historique par défaut",it:"Istanza cronologia predefinita:",es:"Instancia histórica predeterminada:",pl:"Domyślna instancja historii:"},"Delete attribute":{en:"Delete attribute",de:"Attribut löschen",ru:"Удалить атрибут",pt:"Deletar atributo",nl:"Attribuut verwijderen",fr:"Supprimer l'attribut",it:"Elimina attributo",es:"Eliminar atributos",pl:"Usuń atrybut"},"Delete category":{en:"Delete category",de:"Kategorie löschen",ru:"Удалить категорию",pt:"Eliminar categoria",nl:"Verwijder categorie",fr:"Supprimer la catégorie",it:"Elimina categoria",es:"Eliminar categoría",pl:"Usuń kategorię"},"Delete enum":{en:"Delete enum",de:"Aufzählung löschen",ru:"Удалить категорию",pt:"Deletar enumeração",nl:"enum verwijderen",fr:"Supprimer l'énumération",it:"Elimina enum",es:"Eliminar la clasificación",pl:"Usuń wyliczenie"},"Delete member":{en:"Delete member",de:"Mitglied löschen",ru:"Удалить участника",pt:"Deletar membro",nl:"Lid verwijderen",fr:"Supprimer le membre",it:"Elimina membro",es:"Eliminar miembro",pl:"Usuń członka"},"Delete object":{en:"Delete object",de:"Objekt löschen",ru:"Удалить объект",pt:"Deletar objeto",nl:"Object verwijderen",fr:"Supprimer l'objet",it:"Elimina oggetto",es:"Eliminar objeto",pl:"Usuń obiekt"},Denmark:{en:"Denmark",de:"Dänemark",ru:"Дания",pt:"Dinamarca",nl:"Denemarken",fr:"Danemark",it:"Danimarca",es:"Danimarca",pl:"Dania"},Description:{en:"Description",de:"Beschreibung",ru:"Описание",pt:"Descrição",nl:"Beschrijving",fr:"Description",it:"Descrizione",es:"Descripción",pl:"Opis"},Device:{en:"Device",de:"Gerät",ru:"Устройство",pt:"Aparelho",nl:"Apparaat",fr:"Dispositif",it:"Dispositivo",es:"Aparato",pl:"Urządzenie"},"Device discovery":{en:"Device discovery",de:"Gerätesuche",ru:"Поиск устройств",pt:"Descoberta de aparelhos",nl:"Zoek naar apparaten",fr:"Découverte du périphérique",it:"Scoperta del dispositivo",es:"Detección de aparato",pl:"Wykrywanie urządzenia"},"Disable authentication":{en:"Disable authentication",de:"Authentifizierung deaktivieren",ru:"Отключить аутентификацию",pt:"Desativar autenticação",nl:"Schakel verificatie uit",fr:"Désactiver l'authentification",it:"Disabilitare l'autenticazione",es:"Deshabilitar autenticación",pl:"Wyłącz uwierzytelnianie"},"Disk free":{en:"Disk free",de:"Festplatten frei",ru:"Свободно",pt:"Tamanho livre de disco",nl:"Schijfvrije grootte",fr:"Taille sans disque",it:"Dimensione libera del disco",es:"Tamaño libre de disco",pl:"Rozmiar wolnego dysku"},"Disk free:":{en:"Disk free:",de:"Datenträger verfügbar:",ru:"Свободно на диске:",pt:"Disco disponível:",nl:"Schijf beschikbaar:",fr:"Disque disponible:",it:"Disco disponibile:",es:"Disco disponible:",pl:"Dostępny dysk:"},"Disk size":{en:"Disk size",de:"Festplattengröße",ru:"Размер диска",pt:"Tamanho do disco",nl:"Schijfgrootte",fr:"Taille du disque",it:"Dimensione del disco",es:"Tamaño de disco",pl:"Rozmiar dysku"},Djibouti:{en:"Djibouti",de:"Dschibuti",ru:"Джибути",pt:"Djibouti",nl:"Djibouti",fr:"Djibouti",it:"Gibuti",es:"Djibouti",pl:"Dżibuti"},'Do you want to delete just <span style="color: blue">one object</span> or <span style="color: red">all</span> children of %s too?':{en:'Do you want to delete just <span style="color: blue">one object</span> or <span style="color: red">all</span> children of %s too?',de:'Wollen Sie nur <span style="color: blue">ein Objekt</span> löschen oder auch <span style="color: red">alle</span> Unter-Objekte von %s?',ru:'Хотите удалить только <span style="color: blue">один объект</span> или <span style="color: red">все</span> нижележащие от %s тоже?',pt:'Você deseja deletar apenas <span style="color: blue"> um objeto </span> ou <span style="color: red">todos</span> os objetos subjacentes %s também?',nl:'Wilt u alleen <span style="color: blue"> één object </span> of <span style="color: red"> alle </span>onderliggende objecten van %s verwijderen?',fr:'Voulez-vous supprimer <span style="color: blue">seulement un objet</span> ou <span style="color: red">tous les descendants</span> de %s aussi?',it:'Vuoi eliminare solo <span style="color: blue"> un oggetto </span>o<span style="color: red"> tutti </span> figli di %s anche tu?',es:'¿Usted desea borrar sólo <span style="color: blue">un objeto</span> o <span style = "color: red"> todos </span> los objetos subyacentes %s también?',pl:'Czy chcesz usunąć tylko <span style="color: blue"> jeden obiekt </span> lub <span style="color: red"> all </span> children %s też?'},"Do you want to upgrade all adapters?":{en:"Do you want to upgrade all adapters?",de:"Alle Adapter upgraden?",ru:"Обновить все драйвера и контроллер?",pt:"Deseja atualizar todos os adaptadores?",nl:"Wilt u alle adapters bijwerken ?",fr:"Voulez-vous actualiser tous les adaptateurs?",it:"Vuoi aggiornare tutti gli adattatori?",es:"¿Desea actualizar todos los adaptadores?",pl:"Czy chcesz uaktualnić wszystkie adaptery?"},"Domains:":{en:"Domains",de:"Domäne",ru:"Домены:",pt:"Domínios:",nl:"domeinen:",fr:"Domaines",it:"domini:",es:"Dominios:",pl:"Domeny:"},Dominica:{en:"Dominica",de:"Dominica",ru:"Доминика",pt:"Dominica",nl:"Dominica",fr:"Dominique",it:"Dominica",es:"Dominica",pl:"Dominika"},"Dominican Republic":{en:"Dominican Republic",de:"Dominikanische Republik",ru:"Доминиканская Республика",pt:"República Dominicana",nl:"Dominicaanse Republiek",fr:"République Dominicaine",it:"Repubblica Dominicana",es:"República Dominicana",pl:"Republika Dominikany"},"Done with error: %s":{en:"Done with error: %s",de:"Fertig mit Fehler: %s",ru:"Выполнено с ошибкой: %s",pt:"Feito com erro: %s",nl:"Gedaan met fout: %s",fr:"Terminé avec erreur: %s",it:"Fatto con errore: %s",es:"Terminado con error: %s",pl:"Zrobione z błędem: %s"},"Download log":{en:"Download log",de:"Log herunterladen",ru:"Скачать журнал",pt:"Fazer o download do log",nl:"Log downloaden",fr:"Télécharger le journal",it:"Scarica il registro",es:"Descargar registro",pl:"Pobierz dziennik"},"Drop the files here":{en:"Drop the files here",de:"Die Dateien hier ablegen",ru:"Перетащить файлы сюда",pt:"Solte os arquivos aqui",nl:"Zet de bestanden hier neer",fr:"Déposez les fichiers ici",it:"Rilascia i file qui",es:"Suelte los archivos aquí",pl:"Upuść pliki tutaj"},"Drop the icons here":{en:"Drop the icons here",de:"Die Icons hier ablegen",ru:"Перетащите иконку сюда",pt:"Solte os ícones aqui",nl:"Zet de pictogrammen hier neer",fr:"Déposez les icônes ici",it:"Lascia le icone qui",es:"Suelte los iconos aquí",pl:"Upuść ikony tutaj"},"East Timor":{en:"East Timor",de:"Ost Timor",ru:"Восточный Тимор",pt:"Timor Leste",nl:"Oost Timor",fr:"Timor oriental",it:"Timor Est",es:"Timor Oriental",pl:"Wschodni Timor"},Ecuador:{en:"Ecuador",de:"Equador",ru:"Эквадор",pt:"Equador",nl:"Ecuador",fr:"Equateur",it:"Ecuador",es:"Ecuador",pl:"Ekwador"},Edit:{en:"Edit",de:"Editieren",ru:"Изменить",pt:"Editar",nl:"Bewerken",fr:"Modifier",it:"modificare",es:"Editar",pl:"Edytować"},"Edit category":{en:"Edit category",de:"Kategorie bearbeiten",ru:"Изменить категорию",pt:"Editar categoria",nl:"Bewerk categorie",fr:"Modifier la catégorie",it:"Modifica categoria",es:"Editar categoria",pl:"Edytuj kategorię"},"Edit enum":{en:"Edit enum",de:"Aufzählung bearbeiten",ru:"Редактировать категорию",pt:"Editar enumeração",nl:"Bewerk enum",fr:"Modifier l'énumération",it:"Modifica enum",es:"Editar calificación",pl:"Edytuj wyliczenie"},"Edit in dialog":{en:"Edit in dialog",de:"Im Dialog bearbeiten",ru:"Изменить в окне",pt:"Editar no diálogo",nl:"Bewerken in dialoogvenster",fr:"Modifier dans le dialogue",it:"Modifica nella finestra di dialogo",es:"Editar en diálogo",pl:"Edytuj w oknie dialogowym"},"Edit object":{en:"Edit object",de:"Objekt bearbeiten",ru:"Редактировать объект",pt:"Editar objeto",nl:"Bewerk object",fr:"Modifier l'objet",it:"Modifica oggetto",es:"Editar objeto",pl:"Edytuj obiekt"},Egypt:{en:"Egypt",de:"Ägypten",ru:"Египет",pt:"Egito",nl:"Egypte",fr:"Egypte",it:"Egitto",es:"Egipto",pl:"Egipt"},"El Salvador":{en:"El Salvador",de:"El Salvador",ru:"Сальвадор",pt:"El Salvador",nl:"El Salvador",fr:"Le Salvador",it:"El Salvador",es:"El Salvador",pl:"Salwador"},"Email for account:":{en:"Email for account",de:"Emailadresse des Kontos",ru:"Email для аккаунта:",pt:"Email para conta:",nl:"E-mail voor account:",fr:"Email pour compte",it:"Email per account:",es:"Email para la cuenta:",pl:"E-mail do konta:"},"Enabled:":{en:"Enabled",de:"Aktiviert",ru:"Включено",pt:"Ativado",nl:"Ingeschakeld",fr:"Activée",it:"Abilitato",es:"Habilitado",pl:"Włączone"},Enums:{en:"Enums",de:"Aufzählungen",ru:"Категории",pt:"Enumerações",nl:"enums",fr:"Énumérations",it:"Enums",es:"Clasificaciones",pl:"Wylicza"},"Equatorial Guinea":{en:"Equatorial Guinea",de:"Äquatorial-Guinea",ru:"Экваториальная Гвинея",pt:"Guiné Equatorial",nl:"Equatoriaal-Guinea",fr:"Guinée Équatoriale",it:"Guinea Equatoriale",es:"Guinea Ecuatorial",pl:"Gwinea Równikowa"},Eritrea:{en:"Eritrea",de:"Eriträa",ru:"Эритрея",pt:"Eritréia",nl:"Eritrea",fr:"Érythrée",it:"l'Eritrea",es:"Eritrea",pl:"Erytrea"},Error:{en:"Error",de:"Fehler",ru:"Ошибка",pt:"Erro",nl:"Fout",fr:"Erreur",it:"Errore",es:"Error",pl:"Błąd"},Estonia:{en:"Estonia",de:"Estland",ru:"Эстония",pt:"Estônia",nl:"Estland",fr:"Estonie",it:"Estonia",es:"Estonia",pl:"Estonia"},Ethiopia:{en:"Ethiopia",de:"Äthiopien",ru:"Эфиопия",pt:"Etiópia",nl:"Ethiopië",fr:"Ethiopie",it:"Etiopia",es:"Etiopía",pl:"Etiopia"},Event:{en:"Type",de:"Typ",ru:"Тип",pt:"Tipo",nl:"Type",fr:"Événement",it:"genere",es:"Tipo",pl:"Rodzaj"},Events:{en:"Events",de:"Ereignisse",ru:"События",pt:"Eventos",nl:"Gebeurtenissen",fr:"Événements",it:"eventi",es:"Eventos",pl:"Wydarzenia"},Everyone:{en:"Everyone",de:"Jeder",ru:"Все",pt:"Todos",nl:"Iedereen",fr:"Toutes les personnes",it:"Tutti",es:"Todos",pl:"Każdy"},"Expand all nodes":{en:"Expand all nodes",de:"Erweitern Sie alle Knoten",ru:"Развернуть все узлы",pt:"Expandir todos os nós",nl:"Vouw alle knooppunten uit",fr:"Développer tous les nœuds",it:"Espandi tutti i nodi",es:"Expandir todos los nodos",pl:"Rozwiń wszystkie węzły"},"Failed to open JSON File":{en:"Failed to open JSON file",de:"Diese Datei ist keine gültige JSON-Datei",ru:"Не удалось открыть файл в формате JSON",pt:"Falha ao abrir o arquivo JSON",nl:"Openen van JSON-bestand mislukt",fr:"Échec de l'ouverture du fichier JSON",it:"Impossibile aprire il file JSON",es:"Error al abrir el archivo JSON",pl:"Nie można otworzyć pliku JSON"},"Falkland Islands (Malvinas)":{en:"Falkland Islands (Malvinas)",de:"Falklandinseln (Malvinas)",ru:"Фолклендские (Мальвинские) острова",pt:"Ilhas Falkland (Malvinas)",nl:"Falkland Eilanden (Malvinas)",fr:"Îles Falkland (Malvinas)",it:"Isole Falkland (Malvinas)",es:"Islas Falkland (Malvinas)",pl:"Falkland Islands (Malvinas)"},"Faroe Islands":{en:"Faroe Islands",de:"Faröer Inseln",ru:"Фарерские острова",pt:"ilhas Faroe",nl:"Faeröer",fr:"Îles Féroé",it:"Isole Faroe",es:"Islas Feroe",pl:"Wyspy Owcze"},Feb:{en:"Feb",de:"Feb",ru:"фев",pt:"fev",nl:"februari",fr:"févr.",it:"febbraio",es:"feb",pl:"Lut"},February:{en:"February",de:"Februar",ru:"февраль",pt:"fevereiro",nl:"februari",fr:"février",it:"febbraio",es:"Febrero",pl:"luty"},Fiji:{en:"Fiji",de:"Fidschi",ru:"Фиджи",pt:"Fiji",nl:"Fiji",fr:"Fidji",it:"Fiji",es:"Fiji",pl:"Fidżi"},"File is too big!":{en:"File is too big!",de:"Die Datei ist zu groß!",ru:"Слишком большой файл!",pt:"O arquivo é muito grande!",nl:"Bestand is te groot!",fr:"Le fichier est trop grand!",it:"Il file è troppo grande!",es:"¡El archivo es muy grande!",pl:"Plik jest za duży!"},"File rights":{en:"File rights",de:"Zugriff auf Dateien",ru:"Файл",pt:"Direitos de arquivo",nl:"Bestandsrechten",fr:"Droits du fichier",it:"Diritti di file",es:"Derechos de archivo",pl:"Prawa do plików"},Filter:{en:"Filter",de:"Filter",ru:"Искать",pt:"Filtro",nl:"Filter",fr:"Filtre",it:"Filtro",es:"Filtro",pl:"Filtr"},"Filter:":{en:"Filter",de:"Filter",ru:"Искать",pt:"Filtro",nl:"Filter",fr:"Filtre",it:"Filtro",es:"Filtro",pl:"Filtr"},"Filtered out":{en:"Everything is filtered out",de:"Alles ist herausgefiltert",ru:"Все отфильтровано",pt:"Tudo é filtrado",nl:"Alles is uitgefilterd",fr:"Tout est filtré",it:"Tutto è filtrato",es:"Todo está filtrado",pl:"Wszystko jest odfiltrowane"},"Find coordinates...":{en:"Find coordinates...",de:"Koordinaten suchen...",ru:"Найти координаты...",pt:"Encontre coordenadas ...",nl:"Vind coördinaten ...",fr:"Trouver les coordonnées ...",it:"Trova coordinate ...",es:"Encuentre coordenadas ...",pl:"Znajdź współrzędne ..."},Finland:{en:"Finland",de:"Finnland",ru:"Финляндия",pt:"Finlândia",nl:"Finland",fr:"Finlande",it:"Finlandia",es:"Finlandia",pl:"Finlandia"},"Float divider:":{en:"Float divider",de:"Dezimaltrennzeichen",ru:"Разделитель в числе с плавающей запятой:",pt:"Separador decimal:",nl:"Teken voor decimale waardes:",fr:"Caractère pour point décimal",it:"Separatore galleggiante:",es:"Separador decimal:",pl:"Float divider:"},France:{en:"France",de:"Frankreich",ru:"Франция",pt:"França",nl:"Frankrijk",fr:"France",it:"Francia",es:"Francia",pl:"Francja"},"Free RAM:":{en:"Free:",de:"Frei:",ru:"Свободно:",pt:"Livre:",nl:"Vrij geheugen:",fr:"Mémoire libre:",it:"Gratuito:",es:"RAM libre:",pl:"Darmowy:"},"French Guiana":{en:"French Guiana",de:"Französisch Guiana",ru:"Французская Гвиана",pt:"Guiana Francesa",nl:"Frans Guyana",fr:"Guinée Française",it:"Guiana francese",es:"Guiana Francesa",pl:"Gujana Francuska"},"French Polynesia":{en:"French Polynesia",de:"Französisch Polynesien",ru:"Французская Полинезия",pt:"Polinésia Francesa",nl:"Frans-Polynesië",fr:"Polynésie française",it:"Polinesia francese",es:"Polinesia Francesa",pl:"Polinezja Francuska"},"French Southern Territories":{en:"French Southern Territories",de:"French Southern Territories",ru:"Южные Французские Территории",pt:"Territórios Franceses do Sul",nl:"Franse zuidelijke gebieden",fr:"Terres australes françaises",it:"Territori della Francia del sud",es:"Territorios Franceses del Sur",pl:"Francuskie Terytoria Południowe"},Fri:{en:"Fri",de:"Fr",ru:"пт",pt:"Sex",nl:"vr",fr:"ven",it:"Fri",es:"Vie",pl:"Pt"},From:{en:"From: ",de:"Quelle",ru:"От",pt:"A partir de:",nl:"Oorsprong:",fr:"De:",it:"A partire dal:",es:"Fuente",pl:"Od:"},"From github":{en:"From github",de:"Von GitHub",ru:"С github",pt:"Do Github",nl:"Van github",fr:"Depuis github",it:"Da github",es:"Hacer Github",pl:"Od github"},Function:{en:"Function",de:"Funktion",ru:"Функция",pt:"Função",nl:"Functie",fr:"Fonction",it:"Funzione",es:"Función",pl:"Funkcjonować"},Gabon:{en:"Gabon",de:"Gabun",ru:"Габон",pt:"Gabão",nl:"Gabon",fr:"Gabon",it:"Gabon",es:"Gabón",pl:"Gabon"},Gambia:{en:"Gambia",de:"Gambia",ru:"Гамбия",pt:"Gâmbia",nl:"Gambia",fr:"Gambie",it:"Gambia",es:"Gambia",pl:"Gambia"},"Generated&nbsp;ID:":{en:"Generated ID",de:"Erzeugte ID",ru:"Сгенерированный&nbsp;ID:",pt:"Número&nbsp;de&nbsp;identificação&nbsp;gerada:",nl:"Gegenereerde&nbsp;ID:",fr:"Identifiant&nbsp;généré",it:"Generato & nbsp; ID:",es:"ID generado:",pl:"Wygenerowany identyfikator:"},Georgia:{en:"Georgia",de:"Georgia",ru:"Грузия",pt:"Geórgia",nl:"Georgië",fr:"Géorgie",it:"Georgia",es:"Georgia",pl:"Gruzja"},Germany:{en:"Germany",de:"Deutschland",ru:"Германия",pt:"Alemanha",nl:"Duitsland",fr:"Allemagne",it:"Germania",es:"Alemania",pl:"Niemcy"},Ghana:{en:"Ghana",de:"Ghana",ru:"Гана",pt:"Gana",nl:"Ghana",fr:"Ghana",it:"Ghana",es:"Ghana",pl:"Ghana"},Gibraltar:{en:"Gibraltar",de:"Gibraltar",ru:"Гибралтар",pt:"Gibraltar",nl:"Gibraltar",fr:"Gibraltar",it:"Gibilterra",es:"Gibraltar",pl:"Gibraltar"},"Go to Github...":{en:"Go to Github...",de:"Gehe zu Github...",ru:"Перейти к Github...",pt:"Vá para o Github...",nl:"Ga naar Github...",fr:"Aller à Github...",it:"Vai a Github...",es:"Ve a Github...",pl:"Idź do Github ..."},Greece:{en:"Greece",de:"Griechenland",ru:"Греция",pt:"Grécia",nl:"Griekenland",fr:"Grèce",it:"Grecia",es:"Grecia",pl:"Grecja"},Greenland:{en:"Greenland",de:"Grönland",ru:"Гренландия",pt:"Gronelândia",nl:"Groenland",fr:"Groenland",it:"Groenlandia",es:"Groenlandia",pl:"Grenlandia"},Grenada:{en:"Grenada",de:"Granada",ru:"Гренада",pt:"Grenada",nl:"Grenada",fr:"Grenade",it:"Grenada",es:"Grenada",pl:"Grenada"},Group:{en:"Group",de:"Gruppe",ru:"Группа",pt:"Grupo",nl:"Groep",fr:"Groupe",it:"Gruppo",es:"Grupo",pl:"Grupa"},Groups:{en:"Groups",de:"Gruppen",ru:"Группы",pt:"Grupos",nl:"Groepen",fr:"Groupes",it:"gruppi",es:"Grupos",pl:"Grupy"},Guadeloupe:{en:"Guadeloupe",de:"Guadeloupe",ru:"Гваделупа",pt:"Guadalupe",nl:"Guadeloupe",fr:"Guadeloupe",it:"Guadeloupe",es:"Guadalupe",pl:"Gwadelupa"},Guam:{en:"Guam",de:"Guam",ru:"Гуам",pt:"Guam",nl:"Guam",fr:"Guam",it:"Guam",es:"Guam",pl:"Guam"},Guatemala:{en:"Guatemala",de:"Guatemala",ru:"Гватемала",pt:"Guatemala",nl:"Guatemala",fr:"Guatemala",it:"Guatemala",es:"Guatemala",pl:"Gwatemala"},Guernsey:{en:"Guernsey",de:"Guernsey",ru:"шерстяная фуфайка",pt:"Guernsey",nl:"Guernsey",fr:"Guernesey",it:"maglione",es:"Guernesex",pl:"Guernsey"},Guinea:{en:"Guinea",de:"Guinea",ru:"Гвинея",pt:"Guiné",nl:"Guinea",fr:"Guinée",it:"Guinea",es:"Guiné",pl:"Gwinea"},"Guinea-Bissau":{en:"Guinea-Bissau",de:"Guinea-Bissau",ru:"Гвинея-Бисау",pt:"Guiné-Bissau",nl:"Guinee-Bissau",fr:"Guinée-Bissau",it:"Guinea-Bissau",es:"Guiné-Bissau",pl:"Gwinea Bissau"},Guyana:{en:"Guyana",de:"Guyana",ru:"Гайана",pt:"Guiana",nl:"Guyana",fr:"Guyane",it:"Guyana",es:"Guayana",pl:"Gujana"},Haiti:{en:"Haiti",de:"Haiti",ru:"Гаити",pt:"Haiti",nl:"Haïti",fr:"Haïti",it:"Haiti",es:"Haití",pl:"Haiti"},"Has no permission to %s %s %s":{en:"Has no permission to %s %s %s",de:"Kein Zugriff '%s' für %s %s",ru:"Нет разрешения '%s' для %s %s",pt:"Não tem permissão para %s %s %s",nl:"Heeft geen toestemming voor %s %s %s",fr:"N'a pas d'autorisation pour %s %s %s",it:"Non ha il permesso di %s %s %s",es:"No tiene permiso para %s %s %s",pl:"Nie ma uprawnień do %s %s %s"},"Heard and Mc Donald Islands":{en:"Heard and Mc Donald Islands",de:"Heard and Mc Donald Islands",ru:"Heard and Mc Donald Islands",pt:"Heard e Ilha Mc Donald",nl:"Gehoord en Mc Donald Islands",fr:"Heard et Mc Donald Islands",it:"Heard e Mc Donald Islands",es:"Heard e Islas McDonald",pl:"Wyspy Hearda i Mc Donalda"},"Heartbeat: ":{en:"Heartbeat: ",de:"Lebenszeichen: ",ru:"Heartbeat: ",pt:"Sinal de vida:",nl:"Levensteken:",fr:"Signe de vie",it:"Battito cardiaco:",es:"Señal de vida:",pl:"Bicie serca:"},Honduras:{en:"Honduras",de:"Honduras",ru:"Гондурас",pt:"Honduras",nl:"Honduras",fr:"Honduras",it:"Honduras",es:"Honduras",pl:"Honduras"},"Hong Kong":{en:"Hong Kong",de:"Hong Kong",ru:"Гонконг",pt:"Hong Kong",nl:"Hong Kong",fr:"Hong Kong",it:"Hong Kong",es:"Hong Kong",pl:"Hongkong"},Host:{en:"Host",de:"Host",ru:"Сервер",pt:"Hospedeiro",nl:"Host",fr:"Hôte",it:"Ospite",es:"Host",pl:"Gospodarz"},"Host %s is offline":{en:"Host %s is offline",de:"Host %s ist offline",ru:"Хост %s недоступен",pt:"Host %s está desconectado",nl:"Host %s is offline",fr:"L'hôte %s est déconnecté",it:"L'host %s non è in linea",es:"Host %s está desconectado",pl:"Host %s jest w trybie offline"},"Host:":{en:"Host",de:"Host",ru:"Хост:",pt:"Host:",nl:"Host:",fr:"Hôte:",it:"Ospite:",es:"Host:",pl:"Gospodarz:"},Hosts:{en:"Hosts",de:"Hosts",ru:"Сервера",pt:"Hosts",nl:"Systemen",fr:"Hôtes",it:"host",es:"Hosts",pl:"Zastępy niebieskie"},Hungary:{en:"Hungary",de:"Ungarn",ru:"Венгрия",pt:"Hungria",nl:"Hongarije",fr:"Hongrie",it:"Ungheria",es:"Hungría",pl:"Węgry"},ID:{en:"ID",de:"ID",ru:"ID",pt:"ID",nl:"ID",fr:"ID",it:"ID",es:"ID",pl:"ID"},Iceland:{en:"Iceland",de:"Island",ru:"Исландия",pt:"Islândia",nl:"IJsland",fr:"Islande",it:"Islanda",es:"Islandia",pl:"Islandia"},"Icon upload":{en:"Icon upload",de:"Bild hochladen",ru:"Загрузить картинку",pt:"Upload de imagem",nl:"Icon upload",fr:"Téléchargement d'icône",it:"Caricamento dell'icona",es:"Upload de imagem",pl:"Przesyłanie ikon"},"Ignore warning":{en:"Ignore warning",de:"Warnung ignorieren",ru:"Игнорировать предупреждение",pt:"Ignorar aviso",nl:"Negeer waarschuwing",fr:"Ignorer l'avertissement",it:"Ignora l'avviso",es:"Ignorar advertencia",pl:"Zignoruj ostrzeżenie"},"In background":{en:"In background",de:"Im Hintergrund",ru:"В фоновом режиме",pt:"No fundo",nl:"Op de achtergrond",fr:"En arrière-plan",it:"Sullo sfondo",es:"Atrás",pl:"W tle"},India:{en:"India",de:"Indien",ru:"Индия",pt:"Índia",nl:"Indië",fr:"Inde",it:"India",es:"India",pl:"Indie"},Indonesia:{en:"Indonesia",de:"Indonesien",ru:"Индонезия",pt:"Indonésia",nl:"Indonesië",fr:"Indonésie",it:"Indonesia",es:"Indonesia",pl:"Indonezja"},Info:{en:"Info",de:"Info",ru:"Инфо",pt:"Info",nl:"info",fr:"Info",it:"Informazioni",es:"Información",pl:"Informacje"},Insert:{en:"Insert",de:"Einfügen",ru:"Вставить",pt:"Inserir",nl:"invoegen",fr:"Insérer",it:"Inserire",es:"Colocar",pl:"Wstawić"},Install:{en:"Install",de:"Installieren",ru:"Установить",pt:"Instalar",nl:"Installeren",fr:"Installer",it:"Installare",es:"Instalar",pl:"zainstalować"},"Install adapter from URL":{en:"Install or update the adapter from URL",de:"Adapter aus beliebiger Quelle installieren oder aktualisieren",ru:"Установить или обновить адаптер с URL-адреса",pt:"Instale ou atualize o adaptador a partir do URL",nl:"Installeer of update de adapter via de URL",fr:"Installer ou mettre à jour l'adaptateur depuis l'URL",it:"Installa o aggiorna l'adattatore dall'URL",es:"Instale o atualize el adaptador a un uma URL",pl:"Zainstaluj lub zaktualizuj adapter z adresu URL"},"Install adapter from github":{en:"Install or update the adapter from Github",de:"Adapter von GitHub installieren oder aktualisieren",ru:"Установить или обновить адаптер с github",pt:"Instale ou atualize o adaptador do github",nl:"Installeer of update de adapter vanuit github",fr:"Installer ou mettre à jour l'adaptateur depuis github",it:"Installa o aggiorna l'adattatore da github",es:"Instalar o actualizar el adaptador por Github",pl:"Zainstaluj lub zaktualizuj adapter z Github"},"Install from custom URL":{en:"Install from custom URL",de:"Installieren aus eigener URL",ru:"Установить из собственного источника",pt:"Instalar de uma URL própria",nl:"Installeer vanaf aangepaste URL",fr:"Installer à partir d'une URL personnalisée",it:"Installa dall'URL personalizzato",es:"Instalar desde una URL cualquiera",pl:"Zainstaluj z niestandardowego adresu URL"},"Install or update from URL...":{en:"Install or update from URL...",de:"Installieren oder aktualisieren von URL ...",ru:"Установите или обновите URL-адрес ...",pt:"Instale ou atualize a partir de URL ...",nl:"Installeren of updaten vanaf URL ...",fr:"Installer ou mettre à jour à partir de l'URL ...",it:"Installa o aggiorna dall'URL ...",es:"Instalar o actualizar desde URL ...",pl:"Zainstaluj lub zaktualizuj z adresu URL ..."},"Installation counter":{en:"Installations counter",de:"Installationszähler",ru:"Счетчик установок",pt:"Contador de instalação",nl:"Installatieteller",fr:"Compteur d'installation",it:"Contatore di installazione",es:"Contador de instalación",pl:"Licznik instalacji"},"Installations counter":{en:"Installations counter",de:"Installationszähler",ru:"Счетчик установок",pt:"Contador de instalações",nl:"Installaties teller",fr:"Compteur d'installations",it:"Contatore installazioni",es:"Contador de instalaciones",pl:"Licznik instalacji"},Installed:{en:"Installed",de:"Eingerichtet",ru:"Установлено",pt:"Instalado",nl:"Geïnstalleerd",fr:"Installée",it:"Installato",es:"Instalado",pl:"Zainstalowany"},"Installed from group":{en:"Installed from group",de:"Installiert aus der Gruppe",ru:"Установлено из группы",pt:"Instalado de um grupo",nl:"Installeer uit groep",fr:"Installé à partir du groupe",it:"Installato dal gruppo",es:"Instalado por el grupo",pl:"Zainstalowany z grupy"},"Installed instances":{en:"Installed instances",de:"Installierte Instanzen",ru:"создано инстанций",pt:"Instâncias instaladas",nl:"Geïnstalleerde instanties",fr:"Instances installées",it:"Istanze installate",es:"Instancias instaladas",pl:"Zainstalowane instancje"},"Installed version":{en:"Installed version",de:"Installierte Version",ru:"установленная версия",pt:"Versão instalada",nl:"Geïnstalleerde versie",fr:"Version installée",it:"Versione installata",es:"Versión instalada",pl:"Zainstalowana wersja"},Instances:{en:"Instances",de:"Instanzen",ru:"Настройки",pt:"Instâncias",nl:"Instanties",fr:"Instances",it:"istanze",es:"Instancias",pl:"Instancje"},Instructions:{en:"Instructions",de:"Anleitung",ru:"Инструкции",pt:"Instruções",nl:"Instructies",fr:"Instructions",it:"Istruzioni",es:"Instrucciones",pl:"Instrukcje"},Intro:{en:"Overview",de:"Übersicht",ru:"Страницы",pt:"Começar",nl:"Begin",fr:"Début",it:"Inizio",es:"comienzo",pl:"Początek"},"Invalid version of %s":{en:"Invalid version of %s",de:"Falsche Version von %s",ru:"Неподходящая версия %s",pt:"Versão inválida de %s",nl:"Ongeldige versie van %s",fr:"Version non valide de %s",it:"Versione non valida di %s",es:"Versión no válida de %s",pl:"Nieprawidłowa wersja %s"},"Invalid version of %s. Required %s":{en:"Invalid version of %s. Required %s",de:"Nicht kompatible Version von %s. Es wird %s erwartet",ru:"Требуется другая версия драйвера %s. Требуется %s",pt:"Versão inválida de %s. Precisa ser %s",nl:"Ongeldige versie van %s. Benodigd %s",fr:"Version non valide de %s. Requis %s",it:"Versione non valida di %s. Richiesto %s",es:"Versión no válida de %s. Necesita ser %s",pl:"Nieprawidłowa wersja %s. Wymagane %s"},Iran:{en:"Iran",de:"Iran",ru:"Иран",pt:"Irã",nl:"Ik rende",fr:"Iran",it:"Ho corso",es:"Irán",pl:"Iran"},Iraq:{en:"Iraq",de:"Irak",ru:"Ирак",pt:"Iraque",nl:"Irak",fr:"Irak",it:"Iraq",es:"Irak",pl:"Irak"},Ireland:{en:"Ireland",de:"Irland",ru:"Ирландия",pt:"Irlanda",nl:"Ierland",fr:"Irlande",it:"Irlanda",es:"Irlanda",pl:"Irlandia"},"Is yet in the list":{en:"It's already in the list",de:"Ist schon in der Liste",ru:"Уже в списке",pt:"Já está na lista",nl:"Staat al in de lijst",fr:"Est déjà dans la liste",it:"È già nella lista",es:"Ya está en la lista",pl:"Jest już na liście"},"Isle of Man":{en:"Isle of Man",de:"Isle of Man",ru:"Остров Мэн",pt:"Isle of Man",nl:"Isle of Man",fr:"Île de Man",it:"Isola di Man",es:"Isle of Man",pl:"Wyspa Man"},Israel:{en:"Israel",de:"Israel",ru:"Израиль",pt:"Israel",nl:"Israël",fr:"Israël",it:"Israele",es:"Israel",pl:"Izrael"},Italy:{en:"Italy",de:"Italien",ru:"Италия",pt:"Itália",nl:"Italië",fr:"Italie",it:"Italia",es:"Italia",pl:"Włochy"},"Ivory Coast":{en:"Ivory Coast",de:"Elfenbeinküste",ru:"Кот-д'Ивуар",pt:"Costa do Marfim",nl:"Ivoorkust",fr:"Côte d'Ivoire",it:"Costa d'Avorio",es:"Costa de Marfil",pl:"Wybrzeże Kości Słoniowej"},Jamaica:{en:"Jamaica",de:"Jamaika",ru:"Ямайка",pt:"Jamaica",nl:"Jamaica",fr:"Jamaïque",it:"Giamaica",es:"Jamaica",pl:"Jamajka"},Jan:{en:"Jan",de:"Jan",ru:"янв",pt:"jan",nl:"januari",fr:"janv.",it:"gennaio",es:"Jan",pl:"Jan"},January:{en:"January",de:"Januar",ru:"январь",pt:"janeiro",nl:"januari",fr:"janvier",it:"gennaio",es:"Enero",pl:"styczeń"},Japan:{en:"Japan",de:"Japan",ru:"Япония",pt:"Japão",nl:"Japan",fr:"Japon",it:"Giappone",es:"Japón",pl:"Japonia"},Jersey:{en:"Jersey",de:"Jersey",ru:"Джерси",pt:"Jersey",nl:"Jersey",fr:"Jersey",it:"maglia",es:"Jersey",pl:"Golf"},Jordan:{en:"Jordan",de:"Jordanien",ru:"Иордания",pt:"Jordânia",nl:"Jordanië",fr:"Jordan",it:"Giordania",es:"Jordania",pl:"Jordania"},Jul:{en:"Jul",de:"Jul",ru:"июл",pt:"Jul",nl:"juli",fr:"juill.",it:"luglio",es:"Jul",pl:"Jul"},July:{en:"July",de:"Juli",ru:"июль",pt:"julho",nl:"juli",fr:"juillet",it:"luglio",es:"Julio",pl:"lipiec"},Jun:{en:"Jun",de:"Juni",ru:"июн",pt:"jun",nl:"juni",fr:"juin",it:"giugno",es:"Jun",pl:"Jun"},June:{en:"June",de:"Juni",ru:"июнь",pt:"junho",nl:"juni",fr:"juin",it:"giugno",es:"Junio",pl:"czerwiec"},Kazakhstan:{en:"Kazakhstan",de:"Kasachstan",ru:"Казахстан",pt:"Cazaquistão",nl:"Kazachstan",fr:"Kazakhstan",it:"Kazakistan",es:"Kazajstán",pl:"Kazachstan"},Kenya:{en:"Kenya",de:"Kenia",ru:"Кения",pt:"Quênia",nl:"Kenia",fr:"Kenya",it:"Kenia",es:"Kenia",pl:"Kenia"},Kiribati:{en:"Kiribati",de:"Kiribati",ru:"Кирибати",pt:"Kiribati",nl:"Kiribati",fr:"Kiribati",it:"Kiribati",es:"Kiribati",pl:"Kiribati"},"Known bugs for":{en:"Known bugs for",de:"Bekannte Bugs für",ru:"Известные ошибки для",pt:"Bugs conhecidos para",nl:"Bekende bugs voor",fr:"Bugs connus pour",it:"Bug noti per",es:"Errores conocidos para",pl:"Znane błędy dla"},Korea:{en:"Korea",de:"Korea",ru:"Корея",pt:"Coréia",nl:"Korea",fr:"Corée",it:"Corea",es:"Corea",pl:"Korea"},Kosovo:{en:"Kosovo",de:"Kosovo",ru:"Косово",pt:"Kosovo",nl:"Kosovo",fr:"Kosovo",it:"Kosovo",es:"Kosovo",pl:"Kosowo"},Kuwait:{en:"Kuwait",de:"Kuwait",ru:"Кувейт",pt:"Kuwait",nl:"Koeweit",fr:"Koweit",it:"Kuwait",es:"Kuwait",pl:"Kuwejt"},Kyrgyzstan:{en:"Kyrgyzstan",de:"Kirgisistan",ru:"Киргизия",pt:"Quirguistão",nl:"Kirgizië",fr:"Kirghizistan",it:"Kyrgyzstan",es:"Kirguistán",pl:"Kirgistan"},"Lao People's Democratic Republic":{en:"Lao People's Democratic Republic",de:"Demokratische Volksrepublik Laos",ru:"Лаосская Народно-Демократическая Республика",pt:"República Democrática Popular do Lao",nl:"Lao Democratische Volksrepubliek",fr:"République démocratique populaire lao",it:"Repubblica democratica popolare del Laos",es:"República Democrática Popular Lao",pl:"Laotańska Republika Ludowo-Demokratyczna"},"Last changed":{en:"Last changed",de:"Letzte Änderung",ru:"Изменён",pt:"Última modificação",nl:"Laatst gewijzigd",fr:"Dernière modification",it:"Ultima modifica",es:"Última modificación",pl:"Ostatnia zmiana"},"Last update":{en:"Last update",de:"Letztes Update",ru:"Последнее обновление",pt:"Última atualização",nl:"Laatste update",fr:"Dernière mise à jour",it:"Ultimo aggiornamento",es:"Última actualización",pl:"Ostatnia aktualizacja"},"Latitude:":{en:"Latitude",de:"Breitengrad",ru:"Широта:",pt:"Latitude:",nl:"Breedtegraad:",fr:"Latitude",it:"Latitudine:",es:"Latitud:",pl:"Szerokość:"},Latvia:{en:"Latvia",de:"Lettland",ru:"Латвия",pt:"Letônia",nl:"Letland",fr:"Lettonie",it:"Lettonia",es:"Letonia",pl:"Łotwa"},Lebanon:{en:"Lebanon",de:"Libanon",ru:"Ливан",pt:"Líbano",nl:"Libanon",fr:"Liban",it:"Libano",es:"Líbano",pl:"Liban"},Lesotho:{en:"Lesotho",de:"Lesotho",ru:"Лесото",pt:"Lesoto",nl:"Lesotho",fr:"Lesotho",it:"Lesoto",es:"Lesotho",pl:"Lesotho"},"Let's Encrypt settings":{en:"Let's Encrypt settings",de:"Let's Encrypt Einstellungen",ru:"Настройки Let's Encrypt",pt:"Configurações do Let's Encrypt",nl:"Let's Encrypt instellingen",fr:"Paramètres Let's encrypt",it:"Let's Encrypt settings",es:"Configuración de Let's Encrypt",pl:"Zakodujmy ustawienia"},"Let's encrypt SSL":{en:"Let's encrypt SSL",de:"Let's Encrypt SSL",ru:"Let's encrypt SSL",pt:"Let's Encrypt SSL",nl:"Let's encrypt SSL",fr:"Let's encrypt SSL",it:"Let's encrypt SSL",es:"Let's Encrypt SSL",pl:"Zaszyfruj SSL"},Liberia:{en:"Liberia",de:"Liberia",ru:"Либерия",pt:"Libéria",nl:"Liberia",fr:"Libéria",it:"Liberia",es:"Liberia",pl:"Liberia"},"Libyan Arab Jamahiriya":{en:"Libyan Arab Jamahiriya",de:"Libyan Arab Jamahiriya",ru:"Ливийская арабская джамахирия",pt:"Jamahiriya Árabe da Líbia",nl:"Libië",fr:"Jamahiriya arabe libyenne",it:"Jamahiriya arabo libico",es:"Jamahiriya Árabe Libia",pl:"Libijska Arabska Dżamahirija"},License:{en:"License",de:"Lizenz",ru:"Лицензия",pt:"Licença",nl:"Licentie",fr:"Licence",it:"Licenza",es:"Licencia",pl:"Licencja"},"License terms":{en:"License terms",de:"Lizenzbedingungen",ru:"Содержание лицензии",pt:"Condições de licença",nl:"Licentievoorwaarden",fr:"Termes de la licence",it:"Termini di licenza",es:"Condiciones de licencia",pl:"Warunki licencji"},Liechtenstein:{en:"Liechtenstein",de:"Liechtenstein",ru:"Лихтенштейн",pt:"Liechtenstein",nl:"Liechtenstein",fr:"Liechtenstein",it:"Liechtenstein",es:"Liechtenstein",pl:"Liechtenstein"},"Listen on all IPs":{en:"Listen on all IPs",de:"Auf allen IP Adressen hören",ru:"Слушать на всех адресах",pt:"Ouça todos os IPs",nl:"Luister op alle IP's",fr:"Écouter sur toutes les adresses IP",it:"Ascolta su tutti gli IP",es:"Escucha todos los IPs",pl:"Posłuchaj na wszystkich IP"},Lithuania:{en:"Lithuania",de:"Litauen",ru:"Литва",pt:"Lituânia",nl:"Litouwen",fr:"Lituanie",it:"Lituania",es:"Lituania",pl:"Litwa"},"Loading...":{en:"Loading...",de:"Lade...",ru:"Загрузка...",pt:"Carregando...",nl:"Bezig met laden...",fr:"Chargement...",it:"Caricamento in corso...",es:"Cargando...",pl:"Ładuję..."},Log:{en:"Log",de:"Log",ru:"Лог",pt:"Log",nl:"Log",fr:"Journal",it:"Login",es:"Log",pl:"Log"},"Log file will be deleted. Are you sure?":{en:"Log file will be deleted. Are you sure?",de:"Die Logdatei wird gelöscht. Sind Sie sicher?",ru:"Файл протокола будет удален. Вы уверены?",pt:"O arquivo de log será deletado. Você tem certeza?",nl:"Logbestand wordt verwijderd. Weet je het zeker?",fr:"Le fichier journal sera supprimé. Êtes-vous sûr?",it:"Il file di registro verrà eliminato. Sei sicuro?",es:"Se borrará el archivo log. ¿Estás seguro?",pl:"Plik dziennika zostanie usunięty. Jesteś pewny?"},"Log size:":{en:"Log size",de:"Log-Größe:",ru:"Размер файла протокола:",pt:"Tamanho do log:",nl:"Log bestandsgrootte:",fr:"Taille du journal",it:"Dimensione del registro:",es:"Tamaño del log:",pl:"Rozmiar dziennika:"},"Login timeout(sec):":{en:"Login timeout (sec)",de:"Login Timeout (Sek)",ru:"Логин таймаут(сек):",pt:"Tempo limite de login (seg):",nl:"Time-out bij aanmelding (sec):",fr:"Délai d'attente de connexion (s):",it:"Timeout di accesso (sec):",es:"Límite de tiempo para el acceso (sec):",pl:"Limit czasu logowania (s):"},Logout:{en:"Logout",de:"Abmelden",ru:"Выйти",pt:"Logoff",nl:"Uitloggen",fr:"Déconnection",it:"Disconnettersi",es:"Cerrar sesión",pl:"Wyloguj"},"Longitude:":{en:"Longitude",de:"Längengrad",ru:"Долгота:",pt:"Longitude:",nl:"Lengtegraad:",fr:"Longitude",it:"Longitudine:",es:"Longitud:",pl:"Długość geograficzna:"},Luxembourg:{en:"Luxembourg",de:"Luxemburg",ru:"Люксембург",pt:"Luxemburgo",nl:"Luxemburg",fr:"Luxembourg",it:"Lussemburgo",es:"Luxemburgo",pl:"Luksemburg"},MB:{en:"Mb",de:"MB",ru:"Мб",pt:"MB",nl:"Mb",fr:"MB",it:"mb",es:"MB",pl:"Mb"},Macau:{en:"Macau",de:"Macau",ru:"Макао",pt:"Macau",nl:"Macau",fr:"Macao",it:"Macau",es:"Macau",pl:"Makau"},Macedonia:{en:"Macedonia",de:"Mazedonien",ru:"Македония",pt:"Macedônia",nl:"Macedonië",fr:"Macédoine",it:"Macedonia",es:"Macedonia",pl:"Macedonia"},Madagascar:{en:"Madagascar",de:"Madagaskar",ru:"Мадагаскар",pt:"Madagáscar",nl:"Madagascar",fr:"Madagascar",it:"Madagascar",es:"Madagascar",pl:"Madagaskar"},Mai:{en:"Mai",de:"Mai",ru:"май",pt:"mai",nl:"mei",fr:"mai",it:"maggio",es:"May",pl:"Mai"},Main:{en:"Main",de:"Allgemein",ru:"Основные",pt:"Geral",nl:"Basis",fr:"Principale",it:"Principale",es:"General",pl:"Główny"},"Main settings":{en:"Main settings",de:"Haupteinstellungen",ru:"Основные настройки",pt:"Configurações gerais",nl:"Basisinstellingen",fr:"Réglages principaux",it:"Impostazioni principali",es:"Configuración general",pl:"Ustawienia główne"},Malawi:{en:"Malawi",de:"Malawi",ru:"Малави",pt:"Malawi",nl:"Malawi",fr:"Malawi",it:"Malawi",es:"Malawi",pl:"Malawi"},Malaysia:{en:"Malaysia",de:"Malaysia",ru:"Малайзия",pt:"Malásia",nl:"Maleisië",fr:"Malaisie",it:"Malaysia",es:"Malasia",pl:"Malezja"},Maldives:{en:"Maldives",de:"Malediven",ru:"Мальдивы",pt:"Maldivas",nl:"Maldiven",fr:"Maldives",it:"Maldive",es:"Maldivas",pl:"Malediwy"},Mali:{en:"Mali",de:"Mali",ru:"Мали",pt:"Mali",nl:"Mali",fr:"Mali",it:"Mali",es:"Mali",pl:"Mali"},Malta:{en:"Malta",de:"Malta",ru:"Мальта",pt:"Malta",nl:"Malta",fr:"Malte",it:"Malta",es:"Malta",pl:"Malta"},"Manually created":{en:"Manually created",de:"Manuell erzeugt",ru:"Создан в админ",pt:"Criação manual",nl:"Handmatig aangemaakt",fr:"Créé manuellement",it:"Creato manualmente",es:"Creación manual",pl:"Ręcznie utworzone"},Mar:{en:"Mar",de:"Mär",ru:"мар",pt:"mar",nl:"maart",fr:"mars",it:"marzo",es:"Mar",pl:"Zniszczyć"},March:{en:"March",de:"März",ru:"март",pt:"março",nl:"maart",fr:"mars",it:"marzo",es:"Marzo",pl:"Marsz"},"Marshall Islands":{en:"Marshall Islands",de:"Marshall Inseln",ru:"Маршалловы острова",pt:"Ilhas Marshall",nl:"Marshall eilanden",fr:"Iles Marshall",it:"Isole Marshall",es:"Islas Marshall",pl:"Wyspy Marshalla"},Martinique:{en:"Martinique",de:"Martinique",ru:"Мартиника",pt:"Martinica",nl:"Martinique",fr:"Martinique",it:"Martinique",es:"Martinica",pl:"Martynika"},Mauritania:{en:"Mauritania",de:"Mauritania",ru:"Мавритания",pt:"Mauritânia",nl:"Mauritanië",fr:"Mauritanie",it:"Mauritania",es:"Mauritania",pl:"Mauretania"},Mauritius:{en:"Mauritius",de:"Mauritius",ru:"Маврикий",pt:"Maurícia",nl:"Mauritius",fr:"Maurice",it:"Mauritius",es:"Mauricio",pl:"Mauritius"},Mayotte:{en:"Mayotte",de:"Mayotte",ru:"Майотта",pt:"Mayotte",nl:"Mayotte",fr:"Mayotte",it:"Mayotte",es:"Mayotte",pl:"Majotta"},Members:{en:"Members",de:"Mitglieder",ru:"Объекты",pt:"Membros",nl:"leden",fr:"Membres",it:"Utenti",es:"Miembros",pl:"Członkowie"},Message:{en:"Message",de:"Meldung",ru:"Сообщение",pt:"Mensagem",nl:"Bericht",fr:"Message",it:"Messaggio",es:"Mensaje",pl:"Wiadomość"},"Message buffer overflow. Losing oldest":{en:"Message buffer overflow. Losing oldest.",de:"Zu viele Meldungen. Älteste werden gelöscht.",ru:"Слишком много сообщений. Старые выбрасываются.",pt:"Mensagens de mais. Os mais velhos vão ser deletados.",nl:"Berichtbuffer volgelopen. Oudste worden verwijderd.",fr:"Dépassement de tampon de message. Perdre plus vieux.",it:"Overflow del buffer dei messaggi. Perdere più vecchio.",es:"Mensajes de más. Los más viejos serán borrados.",pl:"Przepełnienie bufora wiadomości. Utrata najstarszych."},Mexico:{en:"Mexico",de:"Mexiko",ru:"Мексика",pt:"México",nl:"Mexico",fr:"Mexique",it:"Messico",es:"México",pl:"Meksyk"},Micronesia:{en:"Micronesia",de:"Mikronesien",ru:"Микронезия",pt:"Micronésia",nl:"Micronesië",fr:"Micronésie",it:"Micronesia",es:"Micronesia",pl:"Mikronezja"},Model:{en:"Model",de:"Modell",ru:"Модель",pt:"Modelo",nl:"Model",fr:"Modèle",it:"Modello",es:"Modelo",pl:"Model"},Moldova:{en:"Moldova",de:"Moldawien",ru:"Молдова",pt:"Moldávia",nl:"Moldavië",fr:"Moldavie",it:"Moldova",es:"Moldavia",pl:"Moldova"},Mon:{en:"Mon",de:"Mo",ru:"пн",pt:"Seg",nl:"ma",fr:"lun",it:"Mon",es:"Lun",pl:"Pon"},Monaco:{en:"Monaco",de:"Monaco",ru:"Монако",pt:"Mônaco",nl:"Monaco",fr:"Monaco",it:"Monaco",es:"Mónaco",pl:"Monaco"},Mongolia:{en:"Mongolia",de:"Mongolei",ru:"Монголия",pt:"Mongólia",nl:"Mongolië",fr:"Mongolie",it:"Mongolia",es:"Mongolia",pl:"Mongolia"},Montenegro:{en:"Montenegro",de:"Montenegro",ru:"Черногория",pt:"Montenegro",nl:"Montenegro",fr:"Monténégro",it:"Montenegro",es:"Montenegro",pl:"Czarnogóra"},Montserrat:{en:"Montserrat",de:"Montserrat",ru:"Монсеррат",pt:"Montserrat",nl:"Montserrat",fr:"Montserrat",it:"Montserrat",es:"Montserrat",pl:"Montserrat"},Morocco:{en:"Morocco",de:"Marokko",ru:"Марокко",pt:"Marrocos",nl:"Marokko",fr:"Maroc",it:"Marocco",es:"Marruecos",pl:"Maroko"},Mozambique:{en:"Mozambique",de:"Mosambik",ru:"Мозамбик",pt:"Moçambique",nl:"Mozambique",fr:"Mozambique",it:"Mozambico",es:"Mozambique",pl:"Mozambik"},Myanmar:{en:"Myanmar",de:"Myanmar",ru:"Мьянма",pt:"Myanmar",nl:"Myanmar",fr:"Myanmar",it:"Myanmar",es:"Myanmar",pl:"Myanmar"},NPM:{en:"NPM",de:"NPM",ru:"NPM",pt:"NPM",nl:"NPM",fr:"NPM",it:"NPM",es:"NPM",pl:"NPM"},Name:{en:"Name",de:"Name",ru:"Имя",pt:"Nome",nl:"Naam",fr:"Nom",it:"Nome",es:"Nombre",pl:"Nazwa"},"Name:":{en:"Name",de:"Name",ru:"Имя:",pt:"Nome:",nl:"Naam:",fr:"Nom",it:"Nome:",es:"Nombre:",pl:"Nazwa:"},Namibia:{en:"Namibia",de:"Namibia",ru:"Намибия",pt:"Namíbia",nl:"Namibië",fr:"Namibie",it:"Namibia",es:"Namibia",pl:"Namibia"},Nauru:{en:"Nauru",de:"Nauru",ru:"Науру",pt:"Nauru",nl:"Nauru",fr:"Nauru",it:"Nauru",es:"Nauru",pl:"Nauru"},Nepal:{en:"Nepal",de:"Nepal",ru:"Непал",pt:"Nepal",nl:"Nepal",fr:"Népal",it:"Nepal",es:"Nepal",pl:"Nepal"},Netherlands:{en:"Netherlands",de:"Niederlande",ru:"Нидерланды",pt:"Holanda",nl:"Nederland",fr:"Pays-Bas",it:"Olanda",es:"Holanda",pl:"Holandia"},"Netherlands Antilles":{en:"Netherlands Antilles",de:"Netherlands Antilles",ru:"Нидерландские Антильские острова",pt:"Antilhas holandesas",nl:"Nederlandse Antillen",fr:"Antilles néerlandaises",it:"Antille Olandesi",es:"Antillas Holandesas",pl:"Antyle Holenderskie"},New:{en:"New",de:"Hinzufügen",ru:"Добавить",pt:"Novo",nl:"nieuwe",fr:"Nouveau",it:"Nuovo",es:"Nuevo",pl:"Nowy"},"New Caledonia":{en:"New Caledonia",de:"Neukaledonien",ru:"Новая Каледония",pt:"Nova Caledônia",nl:"Nieuw-Caledonië",fr:"Nouvelle Calédonie",it:"Nuova Caledonia",es:"Nueva Caledonia",pl:"Nowa Kaledonia"},"New Zealand":{en:"New Zealand",de:"Neuseeland",ru:"Новая Зеландия",pt:"Nova Zelândia",nl:"Nieuw Zeeland",fr:"Nouvelle-Zélande",it:"Nuova Zelanda",es:"Nueva Zelanda",pl:"Nowa Zelandia"},"New category":{en:"New category",de:"Neue Aufzählung",ru:"Новая категория",pt:"Nova categoria",nl:"Nieuwe categorie",fr:"Nouvelle catégorie",it:"Nuova categoria",es:"Nueva categoría",pl:"Nowa kategoria"},"New enum":{en:"New enum",de:"Neue Aufzählung",ru:"Новая категория",pt:"Novo enumeração",nl:"Nieuwe enum",fr:"Nouvelle énumération",it:"Nuovo enum",es:"Nueva clasificación",pl:"Nowe wyliczenie"},"New group":{en:"New group",de:"Neue Gruppe",ru:"Новая группа",pt:"Novo grupo",nl:"Nieuwe groep",fr:"Nouveau groupe",it:"Nuovo gruppo",es:"Nuevo grupo",pl:"Nowa grupa"},"New object":{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuwe objekt",fr:"Nouvel object",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"New objekt":{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuwe objekt",fr:"Nouvel object",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"New user":{en:"New user",de:"Neuer Benutzer",ru:"Новый пользователь",pt:"Novo usuário",nl:"Nieuwe gebruiker",fr:"Nouvel utilisateur",it:"Nuovo utente",es:"Nuevo usuario",pl:"Nowy użytkownik"},Nicaragua:{en:"Nicaragua",de:"Nicaragua",ru:"Никарагуа",pt:"Nicarágua",nl:"Nicaragua",fr:"Nicaragua",it:"Nicaragua",es:"Nicaragua",pl:"Nikaragua"},Niger:{en:"Niger",de:"Niger",ru:"Нигер",pt:"Níger",nl:"Niger",fr:"Niger",it:"Niger",es:"Niger",pl:"Niger"},Nigeria:{en:"Nigeria",de:"Nigeria",ru:"Нигерия",pt:"Nigéria",nl:"Nigeria",fr:"Nigeria",it:"Nigeria",es:"Nigeria",pl:"Nigeria"},Niue:{en:"Niue",de:"Niue",ru:"Ниуэ",pt:"Niue",nl:"Niue",fr:"Nioué",it:"Niue",es:"Niue",pl:"Niue"},"No data":{en:"No data",de:"Keine Daten",ru:"Нет данных",pt:"Sem dados",nl:"Geen gegevens",fr:"Pas de données",it:"Nessun dato",es:"Sin datos",pl:"Brak danych"},"No states selected!":{en:"No states selected!",de:"Keine Zustände ausgewählt!",ru:"Нечего настраивать!",pt:"Nenhum estado selecionado!",nl:"Geen gegevens geselecteerd!",fr:"Aucun état sélectionné!",it:"Nessun stato selezionato!",es:"¡Ningún estado seleccionado!",pl:"Nie wybrano stanów!"},"No version of %s":{en:"No version of %s",de:"Keine Versionsinfo für %s",ru:"Нет информации о версии для %s",pt:"Nenhuma informação da versão %s",nl:"Geen versie van %s",fr:"Aucune version de %s",it:"Nessuna versione di %s",es:"No hay información de la versión %s",pl:"Brak wersji %s"},"Node.js":{en:"Node.js",de:"Node.js",ru:"Node.js",pt:"Node.js",nl:"Node.js",fr:"Node.js",it:"Node.js",es:"Node.js",pl:"Node.js"},"Norfolk Island":{en:"Norfolk Island",de:"Norfolk Island",ru:"Остров Норфолк",pt:"Ilha de Norfolk",nl:"Norfolk Island",fr:"L'ile de Norfolk",it:"Isola Norfolk",es:"Isla de Norfolk",pl:"Wyspa Norfolk"},"Northern Mariana Islands":{en:"Northern Mariana Islands",de:"Northern Mariana Islands",ru:"Северные Марианские острова",pt:"Ilhas Marianas do Norte",nl:"noordelijke Mariana eilanden",fr:"Îles Mariannes du Nord",it:"Isole Marianne settentrionali",es:"Islas Marianas del Norte",pl:"Mariany Północne"},Norway:{en:"Norway",de:"Norway",ru:"Норвегия",pt:"Noruega",nl:"Noorwegen",fr:"Norvège",it:"Norvegia",es:"Noruega",pl:"Norwegia"},"Not exists":{en:"Does not exist",de:"Existiert nicht",ru:"Не существует",pt:"Não existe",nl:"Bestaat niet",fr:"N'existe pas",it:"Non esiste",es:"No existe",pl:"Nie istnieje"},"Note:":{en:"Note",de:"Hinweis",ru:"Замечание:",pt:"Nota:",nl:"Notitie:",fr:"Remarque",it:"Nota:",es:"Nota:",pl:"Uwaga:"},Nov:{en:"Nov",de:"Nov",ru:"ноя",pt:"nov",nl:"november",fr:"nov.",it:"novembre",es:"Nov",pl:"Nov"},November:{en:"November",de:"November",ru:"ноябрь",pt:"novembro",nl:"november",fr:"novembre",it:"novembre",es:"Noviembre",pl:"listopad"},OS:{en:"OS",de:"OS",ru:"ОС",pt:"OS",nl:"OS",fr:"OS",it:"OS",es:"OS",pl:"OS"},'Object "<b>%s</b>" does not exists. Update the page.':{en:'Object "<b>%s</b>" does not exist. Update the page.',de:'Das Objekt "<b>%s</b>" existiert nicht. Seite aktualisieren.',ru:'Объект "<b>%s</b>" не существует. Обновите страницу.',pt:'O objeto "<b> %s </b>" não existe. Atualize a página.',nl:'Objekt "<b>%s</b>" bestaat niet. Werk de pagina bij.',fr:"L'objet \"<b>%s</b>\" n'existe pas. Actualisez la page",it:'L\'oggetto "<b>%s</b>" non esiste. Aggiorna la pagina.',es:'El objeto "<b>%s</b>" no existe. Actualice la página.',pl:'Obiekt "<b> %s </b>" nie istnieje. Zaktualizuj stronę.'},"Object may not be deleted":{en:"Object may not be deleted",de:"Das Objekt darf nicht gelöscht werden",ru:"Объект не может быть удален",pt:"O objeto não pode ser excluído",nl:"Object mag niet worden verwijderd",fr:"L'objet ne peut pas être supprimé",it:"L'oggetto non può essere cancellato",es:"El objeto no se puede eliminar",pl:"Obiekt nie może zostać usunięty"},"Object rights":{en:"Object rights",de:"Zugriff auf Objekte",ru:"Для объекта",pt:"Direitos do objeto",nl:"Objektrechten",fr:"Droits d'objet",it:"Diritti dell'oggetto",es:"Derechos del objeto",pl:"Prawa obiektu"},Objects:{en:"Objects",de:"Objekte",ru:"Объекты",pt:"Objetos",nl:"Objekten",fr:"Objets",it:"Oggetti",es:"Objetos",pl:"Obiekty"},Oct:{en:"Oct",de:"Okt",ru:"окт",pt:"out",nl:"oktober",fr:"oct.",it:"ottobre",es:"Oct",pl:"Paź"},October:{en:"October",de:"Oktober",ru:"октября",pt:"outubro",nl:"oktober",fr:"octobre",it:"ottobre",es:"Octubre",pl:"październik"},Ok:{en:"Ok",de:"Ok",ru:"Ok",pt:"Ok",nl:"OK",fr:"D'accord",it:"Ok",es:"Ok",pl:"Ok"},Oman:{en:"Oman",de:"Oman",ru:"Oman",pt:"Omã",nl:"Oman",fr:"Oman",it:"Oman",es:"Omán",pl:"Oman"},"Only one":{en:"Only one",de:"Nur eins",ru:"Только один",pt:"Apenas um",nl:"éénmalig",fr:"Seulement un",it:"Solo uno",es:"Apenas uno",pl:"Tylko jeden"},"Open original":{en:"Open on new tab",de:"In neuem Tab öffnen",ru:"Открыть на новой вкладке",pt:"Abrir na nova guia",nl:"Open op nieuw tabblad",fr:"Ouvrir sur un nouvel onglet",it:"Apri in una nuova scheda",es:"Abrir en una pestaña nueva",pl:"Otwórz na nowej karcie"},Owner:{en:"Owner",de:"Besitzer",ru:"Пользователь",pt:"Proprietário",nl:"Eigenaar",fr:"Propriétaire",it:"Proprietario",es:"Propietario",pl:"Właściciel"},"Owner group":{en:"Owner group",de:"Besitzer-Gruppe",ru:"Группа-Владелец",pt:"Grupo de proprietários",nl:"Eigenaar groep",fr:"Groupe de propriétaires",it:"Gruppo di proprietari",es:"Grupo de propietarios",pl:"Grupa właścicieli"},"Owner user":{en:"Owner user",de:"Besitzer-Anwender",ru:"Пользователь-Владелец",pt:"Usuário proprietário",nl:"Eigenaar gebruiker",fr:"Utilisateur propriétaire",it:"Utente proprietario",es:"Usuario propietario",pl:"Użytkownik właściciela"},Pakistan:{en:"Pakistan",de:"Pakistan",ru:"Пакистан",pt:"Paquistão",nl:"Pakistan",fr:"Pakistan",it:"Pakistan",es:"Pakistán",pl:"Pakistan"},Palau:{en:"Palau",de:"Palau",ru:"Palau",pt:"Palau",nl:"Palau",fr:"Palau",it:"Palau",es:"Palau",pl:"Palau"},Palestine:{en:"Palestine",de:"Palästina",ru:"Палестина",pt:"Palestina",nl:"Palestina",fr:"Palestine",it:"Palestina",es:"Palestina",pl:"Palestyna"},Panama:{en:"Panama",de:"Panama",ru:"Панама",pt:"Panamá",nl:"Panama",fr:"Panama",it:"Panama",es:"Panamá",pl:"Panama"},"Papua New Guinea":{en:"Papua New Guinea",de:"Papua Neuguinea",ru:"Папуа - Новая Гвинея",pt:"Papua Nova Guiné",nl:"Papoea-Nieuw-Guinea",fr:"Papouasie Nouvelle Guinée",it:"Papua Nuova Guinea",es:"Papúa Nueva Guinea",pl:"Papua Nowa Gwinea"},Paraguay:{en:"Paraguay",de:"Paraguay",ru:"Парагвай",pt:"Paraguai",nl:"Paraguay",fr:"Paraguay",it:"Paraguay",es:"Paraguay",pl:"Paragwaj"},Parent:{en:"Parent",de:"Parent",ru:"Родитель",pt:"Pai",nl:"Bovenliggende",fr:"Parent",it:"Genitore",es:"Padre",pl:"Rodzic"},"Parse error":{en:"Parse error",de:"Fehler beim Parsen des JSON-Quelltexts",ru:"Ошибка анализа JSON",pt:"Erro de análise",nl:"Verwerkings fout",fr:"Erreur d'analyse",it:"Errore",es:"Error de análisis",pl:"Błąd przetwarzania"},Password:{en:"Password",de:"Passwort",ru:"Пароль",pt:"Senha",nl:"Wachtwoord",fr:"Mot de passe",it:"Parola d'ordine",es:"Contraseña",pl:"Hasło"},"Password and confirmation are not equal!":{en:"Password and confirmation are not equal!",de:"Passwort und Bestätigung sind unterschiedlich!",ru:"Пароль и подтверждение пароля не совпадают!",pt:"A senha e a confirmação não são iguais!",nl:"Wachtwoord en bevestiging zijn niet hetzelfde!",fr:"Le mot de passe et la confirmation ne sont pas égaux!",it:"Password e conferma non sono uguali!",es:"¡La contraseña y la confirmación no son iguales!",pl:"Hasło i potwierdzenie nie są równe!"},"Password cannot be empty!":{en:"Password cannot be empty!",de:"Passwort darf nicht leer sein!",ru:"Пустой пароль!",pt:"A senha não pode estar vazia!",nl:"Wachtwoord mag niet leeg zijn!",fr:"Le mot de passe ne peut pas être vide!",it:"La password non può essere vuota!",es:"¡La contraseña no puede estar vacía!",pl:"Hasło nie może być puste!"},"Password repeat":{en:"Password repeat",de:"Passwort wiederholen",ru:"Повтор пароля",pt:"Repetição da senha",nl:"Wachtwoord herhalen",fr:"Mot de passe",it:"Ripetizione della password",es:"Repetición de la contraseña",pl:"Powtórz hasło"},"Path to storage:":{en:"Path to storage",de:"Pfad zum speichern",ru:"Путь к папке для сохранения:",pt:"Caminho para gravar:",nl:"Pad naar opslag:",fr:"Chemin d'accès pour le stockage",it:"Percorso di archiviazione:",es:"Ruta para grabar:",pl:"Ścieżka do przechowywania:"},"Pause output":{en:"Pause output",de:"Ausgabe pausieren",ru:"Задержать вывод сообщений",pt:"Pausar o output",nl:"Pauzeer de uitvoer",fr:"Mettre en pause la sortie",it:"Metti in pausa l'output",es:"Pausar la salida",pl:"Wstrzymaj wyjście"},Peru:{en:"Peru",de:"Peru",ru:"Peru",pt:"Peru",nl:"Peru",fr:"Pérou",it:"Perù",es:"Perú",pl:"Peru"},Philippines:{en:"Philippines",de:"Philippinen",ru:"Филиппины",pt:"Filipinas",nl:"Filippijnen",fr:"Philippines",it:"Filippine",es:"Filipinas",pl:"Filipiny"},Pitcairn:{en:"Pitcairn",de:"Pitcairn",ru:"Питкэрн",pt:"Pitcairn",nl:"Pitcairn",fr:"Pitcairn",it:"Pitcairn",es:"Pitcairn",pl:"Pitcairn"},Platform:{en:"Platform",de:"Plattform",ru:"Платформа",pt:"Plataforma",nl:"Platform",fr:"Plate-forme",it:"piattaforma",es:"Plataforma",pl:"Platforma"},"Please confirm":{en:"Please confirm",de:"Bitte bestätigen",ru:"Пожалуйста подтвердите",pt:"Por favor confirme",nl:"Bevestig alstublieft",fr:"Veuillez confirmer",it:"Per favore conferma",es:"Por favor, confirme",pl:"Proszę potwierdzić"},Poland:{en:"Poland",de:"Poland",ru:"Польша",pt:"Polônia",nl:"Polen",fr:"Pologne",it:"Polonia",es:"Polonia",pl:"Polska"},Popular:{en:"Popular",de:"oft benuzt",ru:"часто используемые",pt:"Popular",nl:"Populair",fr:"Populaire",it:"Popolare",es:"Popular",pl:"Popularny"},"Popular first":{en:"Popular first",de:"Beliebte zuerst",ru:"По популярности",pt:"Popular primeiro",nl:"Populair eerst",fr:"Populaire d'abord",it:"Popolare prima",es:"Popular primero",pl:"Najpopularniejszy na początku"},"Port to check the domain:":{en:"Port to check the domain",de:"Port um die Erreichbarkeit der Domäne zu prüfen",ru:"Порт для проверки доступности домена:",pt:"Porta para verificar o domínio:",nl:"Poort om het domein te controleren:",fr:"Port pour vérifier le domaine",it:"Porta per controllare il dominio:",es:"Puerto para comprobar el dominio:",pl:"Port do sprawdzenia domeny:"},Portugal:{en:"Portugal",de:"Portugal",ru:"Португалия",pt:"Portugal",nl:"Portugal",fr:"Portugal",it:"Portogallo",es:"Portugal",pl:"Portugalia"},"Preserve ID":{en:"Preserve ID",de:"ID beibehalten",ru:"ID не изменять",pt:"Preservar ID",nl:"Bewaar ID",fr:"Conserver l'ID",it:"Preservare l'ID",es:"Conservar ID",pl:"Zachowaj ID"},Preview:{en:"Preview",de:"Vorschau",ru:"Предосмотр",pt:"Antevisão",nl:"Voorbeeld",fr:"Aperçu",it:"Anteprima",es:"Vista previa",pl:"Zapowiedź"},"Processing...":{en:"Processing...",de:"Bearbeite...",ru:"Обработка...",pt:"Em processamento...",nl:"Verwerken...",fr:"En traitement...",it:"In lavorazione...",es:"En proceso...",pl:"Przetwarzanie..."},"Puerto Rico":{en:"Puerto Rico",de:"Puerto Rico",ru:"Пуэрто-Рико",pt:"Porto Rico",nl:"Puerto Rico",fr:"Porto Rico",it:"Porto Rico",es:"Puerto Rico",pl:"Portoryko"},Qatar:{en:"Qatar",de:"Qatar",ru:"Катар",pt:"Catar",nl:"Katar",fr:"Qatar",it:"Qatar",es:"Qatar",pl:"Katar"},RAM:{en:"RAM",de:"RAM",ru:"RAM",pt:"RAM",nl:"RAM",fr:"RAM",it:"RAM",es:"RAM",pl:"RAM"},"RAM total usage:":{en:"Total RAM usage:",de:"gesamte RAM-Nutzung:",ru:"Всего RAM - Используется:",pt:"Uso total de RAM:",nl:"Geheugen gebruik totaal:",fr:"Utilisation totale de RAM:",it:"Utilizzo totale della RAM:",es:"Uso total de RAM:",pl:"Całkowite wykorzystanie pamięci RAM:"},"RAM usage":{en:"RAM usage",de:"RAM-Nutzung",ru:"Исп. RAM",pt:"Uso de RAM",nl:"Geheugen-gebruik",fr:"Utilisation de la RAM",it:"Utilizzo della RAM",es:"Uso de RAM",pl:"Wykorzystanie pamięci RAM"},"Rebuild tree":{en:"Rebuild tree",de:"Baum neu erstellen",ru:"Восстановить дерево",pt:"Reconstruir árvore",nl:"Bouw de boom opnieuw op",fr:"Reconstruire l'arbre",it:"Ricostruisci l'albero",es:"Reconstruir el árbol",pl:"Przebuduj drzewo"},"Recently updated":{en:"Recently updated",de:"Kürzlich aktualisiert",ru:"Недавно обновленные",pt:"Atualizado recentemente",nl:"Recent geüpdatet",fr:"Récemment mis à jour",it:"Aggiornato di recente",es:"Recientemente actualizado",pl:"Ostatnio zaktualizowane"},"Refresh log":{en:"Refresh log",de:"Log aktualisieren",ru:"Обновить протокол",pt:"Atualizar o log",nl:"Log vernieuwen",fr:"Actualiser le journal",it:"Aggiorna registro",es:"Actualizar el log",pl:"Odśwież dziennik"},Removed:{en:"Removed",de:"Entfernt",ru:"Удалено",pt:"Removido",nl:"verwijderd",fr:"Supprimé",it:"Rimosso",es:"Removido",pl:"Oddalony"},"Removing of adapter...":{en:"Removing of adapter...",de:"Entfernen des Adapters...",ru:"Удаление драйвера...",pt:"Removendo o adaptador...",nl:"Adapter verwijderen...",fr:"Retrait de l'adaptateur...",it:"Rimozione dell'adattatore...",es:"Quitar el adaptador...",pl:"Usuwanie adaptera ..."},"Removing of instance...":{en:"Removing of instance...",de:"Intanz wird entfernt...",ru:"Удаление экземпляра...",pt:"Removendo a instância...",nl:"Verwijdering van instantie...",fr:"Suppression de l'instance...",it:"Rimozione dell'istanza...",es:"Eliminando de instancia...",pl:"Usuwanie instancji ..."},Rename:{en:"Rename",de:"Umbenennen",ru:"Переименовать",pt:"Renomear",nl:"andere naam geven",fr:"Renommer",it:"Rinominare",es:"Rebautizar",pl:"Przemianować"},Repositories:{en:"Repositories",de:"Verwahrungsorte",ru:"Репозитории",pt:"Repositórios",nl:"Repositories",fr:"Dépôts",it:"repository",es:"Repositorios",pl:"Repozytoria"},Reunion:{en:"Reunion",de:"Reunion",ru:"Reunion",pt:"Reunião",nl:"Bijeenkomst",fr:"Réunion",it:"Riunione",es:"Reunión",pl:"Reunion"},Rights:{en:"Access rights",de:"Zugriffsrechte",ru:"Права доступа",pt:"Direitos de acesso",nl:"Toegangsrechten",fr:"Droits d'accès",it:"Diritti di accesso",es:"Derechos de acceso",pl:"Prawa dostępu"},Role:{en:"Role",de:"Rolle",ru:"Роль",pt:"Função",nl:"Rol",fr:"Rôle",it:"Ruolo",es:"Cargo",pl:"Rola"},Romania:{en:"Romania",de:"Rumänien",ru:"Румыния",pt:"Roménia",nl:"Roemenië",fr:"Roumanie",it:"Romania",es:"Rumania",pl:"Rumunia"},Room:{en:"Room",de:"Raum",ru:"Комната",pt:"Quarto",nl:"Ruimte",fr:"Chambre",it:"Camera",es:"Habitación",pl:"Pokój"},"Running: ":{en:"Running: ",de:"Ausgeführt:",ru:"Рабочая: ",pt:"Concluído:",nl:"Bezig:",fr:"Fonctionnement:",it:"In esecuzione:",es:"Concluido:",pl:"Bieganie:"},"Russian Federation":{en:"Russian Federation",de:"Russland",ru:"Россия",pt:"Federação Russa",nl:"Russische Federatie",fr:"Fédération Russe",it:"Federazione Russa",es:"Federación Rusa",pl:"Federacja Rosyjska"},Rwanda:{en:"Rwanda",de:"Ruanda",ru:"Rwanda",pt:"Ruanda",nl:"Rwanda",fr:"Rwanda",it:"Ruanda",es:"Ruanda",pl:"Rwanda"},"Saint Kitts and Nevis":{en:"Saint Kitts and Nevis",de:"Saint Kitts and Nevis",ru:"Сент-Китс и Невис",pt:"São Cristóvão e Nevis",nl:"Saint Kitts en Nevis",fr:"Saint-Christophe-et-Niévès",it:"Saint Kitts e Nevis",es:"San Cristóbal y Nieves",pl:"Saint Kitts i Nevis"},"Saint Lucia":{en:"Saint Lucia",de:"Saint Lucia",ru:"Санкт-Люсия",pt:"Santa Lúcia",nl:"Saint Lucia",fr:"Sainte-Lucie",it:"Santa Lucia",es:"Santa Lucía",pl:"święta Lucia"},"Saint Vincent and the Grenadines":{en:"Saint Vincent and the Grenadines",de:"Saint Vincent and the Grenadines",ru:"Святой Винсент и Гренадины",pt:"São Vicente e Granadinas",nl:"Saint Vincent en de Grenadines",fr:"Saint-Vincent-et-les-Grenadines",it:"Saint Vincent e Grenadine",es:"San Vicente y las Granadinas",pl:"Saint Vincent i Grenadyny"},Samoa:{en:"Samoa",de:"Samoa",ru:"Самоа",pt:"Samoa",nl:"Samoa",fr:"Samoa",it:"Samoa",es:"Samoa",pl:"Samoa"},"San Marino":{en:"San Marino",de:"San Marino",ru:"Сан-Марино",pt:"São Marinho",nl:"San Marino",fr:"Saint Marin",it:"San Marino",es:"San Marino",pl:"San Marino"},"Sao Tome and Principe":{en:"Sao Tome and Principe",de:"Sao Tome and Principe",ru:"Сан-Томе и Принсипи",pt:"São Tomé e Príncipe",nl:"Sao Tomé en Principe",fr:"Sao Tomé et Principe",it:"Sao Tome e Principe",es:"San Tome y Principe",pl:"Sao Tome and Principe"},Sat:{en:"Sat",de:"Sa",ru:"сб",pt:"Sáb",nl:"Sat.",fr:"sam",it:"Sat.",es:"Sáb",pl:"Sob"},"Saudi Arabia":{en:"Saudi Arabia",de:"Saudi Arabien",ru:"Саудовская Аравия",pt:"Arábia Saudita",nl:"Saoedi-Arabië",fr:"Arabie Saoudite",it:"Arabia Saudita",es:"Arabia Saudita",pl:"Arabia Saudyjska"},Save:{en:"Save",de:"Speichern",ru:"Сохранить",pt:"Gravar",nl:"Opslaan",fr:"sauvegarder",it:"Salvare",es:"Grabar",pl:"Zapisać"},"Save Objecttree as JSON File":{en:"Save objects tree as JSON file",de:"Die ausgewählte Objektstruktur als JSON-Datei speichern",ru:"Сохранить объекты, как JSON файл",pt:"Grave a estrutura de objetos selecionados como um arquivo JSON",nl:"Bewaar objekten-boom als JSON-bestand",fr:"Enregistrer l'arborescence d'objets en tant que fichier JSON",it:"Salva albero degli oggetti come file JSON",es:"Grabe la estructura de objetos seleccionados como un archivo JSON",pl:"Zapisz drzewo obiektów jako plik JSON"},"Save Objecttree is not possible":{en:"Saving the objects tree is not possible",de:"Speichern der Objektstruktur ist nicht möglich",ru:"Сохранить объекты НЕВОЗМОЖНО",pt:"A gravação não é possível",nl:"Objectboom opslaan is niet mogelijk",fr:"Enregistrer l'arborescence d'objets n'est pas possible",it:"Salvare l'albero degli oggetti non è possibile",es:"La grabación no es posible",pl:"Zapisanie drzewa obiektów nie jest możliwe"},"Save configuration":{en:"Save configuration",de:"Konfiguration speichern",ru:"Сохранить конфигурацию",pt:"Salvar configuração",nl:"Configuratie opslaan",fr:"Enregistrer la configuration",it:"Salva configurazione",es:"Grabar la configuración",pl:"Zapisz konfigurację"},Script:{en:"Script",de:"Skript",ru:"Скрипт",pt:"Script",nl:"Script",fr:"Scénario",it:"copione",es:"Script",pl:"Scenariusz"},Scripts:{en:"Scripts",de:"Skripte",ru:"Скрипты",pt:"Scripts",nl:"Scripts",fr:"Scripts",it:"Script",es:"Scripts",pl:"Skrypty"},Select:{en:"Select",de:"Auswählen",ru:"Выбрать",pt:"Selecione",nl:"kiezen",fr:"Sélectionner",it:"Selezionare",es:"Seleccione",pl:"Wybierz"},"Select ID":{en:"Select ID",de:"ID Auswählen",ru:"Выбрать ID",pt:"Selecione ID",nl:"Selecteer ID",fr:"Sélectionner un identifiant",it:"Seleziona ID",es:"Seleccione ID",pl:"Wybierz ID"},"Select adapter:":{en:"Select adapter",de:"Adapter auswählen",ru:"Выбрать драйвер",pt:"Selecione o adaptador",nl:"Selecteer adapter",fr:"Sélectionnez l'adaptateur",it:"Seleziona adattatore",es:"Seleccione el adaptador",pl:"Wybierz adapter"},"Select language":{en:"Select language",de:"Sprache",ru:"Язык",pt:"Selecione o idioma",nl:"Selecteer taal",fr:"Choisir la langue",it:"Seleziona la lingua",es:"Seleccione el idioma",pl:"Wybierz język"},"Select options":{en:"Select options",de:"Optionen auswählen",ru:"Выберите",pt:"Selecione as opções",nl:"selecteer opties",fr:"Sélectionnez les options",it:"Selezionare le opzioni",es:"Seleccione las opciones",pl:"Wybierz opcje"},Senegal:{en:"Senegal",de:"Senegal",ru:"Сенегал",pt:"Senegal",nl:"Senegal",fr:"Sénégal",it:"Senegal",es:"Senegal",pl:"Senegal"},"Sent data:":{en:"Sent data",de:"Gesendete Daten",ru:"Отсылаемые данные:",pt:"Dados enviados:",nl:"Verzonden gegevens:",fr:"Données envoyées",it:"Dati inviati:",es:"Datos enviados:",pl:"Wysłane dane:"},Sep:{en:"Sep",de:"Sep",ru:"сен",pt:"set",nl:"sen",fr:"sept.",it:"sen",es:"Sep",pl:"Sep"},September:{en:"September",de:"September",ru:"сентябрь",pt:"setembro",nl:"september",fr:"septembre",it:"settembre",es:"Septiembre",pl:"wrzesień"},Serbia:{en:"Serbia",de:"Serbien",ru:"Сербия",pt:"Sérvia",nl:"Servië",fr:"Serbie",it:"Serbia",es:"Serbia",pl:"Serbia"},Set:{en:"Set",de:"Setzen",ru:"Задать",pt:"Conjunto",nl:"Set",fr:"Accepter",it:"Impostato",es:"Conjunto",pl:"Zestaw"},"Set CRON":{en:"Set",de:"Zeitplan übernehmen",ru:"Применить",pt:"Usar",nl:"instellen",fr:"Accepter l'horaire",it:"Impostato",es:"Acepta el cronograma",pl:"Zestaw"},"Set CRON schedule for restarts":{en:"Set CRON schedule for restarts",de:"Legen Sie den CRON-Zeitplan für Neustarts fest",ru:"Установить расписание CRON для перезапуска",pt:"Definir cronograma do CRON para reiniciar",nl:"Stel CRON-schema in voor herstarts",fr:"Définir la planification CRON pour les redémarrages",it:"Imposta la pianificazione CRON per il riavvio",es:"Establecer el cronograma CRON para reinicios",pl:"Ustaw harmonogram CRON na ponowne uruchomienie"},Settings:{en:"Settings",de:"Einstellungen",ru:"Настройки",pt:"Configurações",nl:"instellingen",fr:"Paramètres",it:"impostazioni",es:"Configuración",pl:"Ustawienia"},"Settings for %s":{en:"Settings for %s",de:"Einstellungen für %s",ru:"Настройки для %s",pt:"Configurações para %s",nl:"Instellingen voor %s",fr:"Paramètres pour %s",it:"Impostazioni per %s",es:"Configuraciones para %s",pl:"Ustawienia dla %s"},Seychelles:{en:"Seychelles",de:"Seychellen",ru:"Сейшельские острова",pt:"Seychelles",nl:"Seychellen",fr:"les Seychelles",it:"Seychelles",es:"Seychelles",pl:"Seszele"},"Show instances only for current host":{en:"Show instances only for current host",de:"Instanzen nur für den aktuellen Host anzeigen",ru:"Показывать экземпляры только для выбранного сервера",pt:"Mostrar instâncias apenas para o host atual",nl:"Toon alleen instanties voor de huidige host",fr:"Afficher les instances uniquement pour l'hôte actuel",it:"Mostra le istanze solo per l'host corrente",es:"Mostrar instancias solo para el host actual",pl:"Pokaż wystąpienia tylko dla bieżącego hosta"},"Show values of instance":{en:"Show values of instance",de:"Zeige Werte aus",ru:"Показать значения из",pt:"Mostrar valores da instância",nl:"Toon waarden van instantie",fr:"Afficher les valeurs de l'instance",it:"Mostra valori di istanza",es:"Mostrar valores de instancia",pl:"Pokaż wartości instancji"},"Show...":{en:"Show...",de:"Zeige...",ru:"Показать...",pt:"Mostre...",nl:"Weergeven...",fr:"Montrer...",it:"Mostrare...",es:"Muestre...",pl:"Pokazać..."},"Sierra Leone":{en:"Sierra Leone",de:"Sierra Leone",ru:"Сьерра-Леоне",pt:"Serra Leoa",nl:"Sierra Leone",fr:"Sierra Leone",it:"Sierra Leone",es:"Sierra Leona",pl:"Sierra Leone"},Singapore:{en:"Singapore",de:"Singapur",ru:"Сингапур",pt:"Cingapura",nl:"Singapore",fr:"Singapour",it:"Singapore",es:"Singapur",pl:"Singapur"},"Size: %s, Free: %s":{en:"Size: %s, Available: %s",de:"Größe: %s, Verfügbar: %s",ru:"Размер: %s, Доступно: %s",pt:"Tamanho: %s, disponível: %s",nl:"Grootte: %s, beschikbaar: %s",fr:"Taille: %s, Disponible: %s",it:"Dimensione: %s, disponibile: %s",es:"Tamaño: %s, disponible: %s",pl:"Rozmiar: %s, Dostępny: %s"},Slovakia:{en:"Slovakia",de:"Slowakei",ru:"Словакия",pt:"Eslováquia",nl:"Slowakije",fr:"Slovaquie",it:"Slovacchia",es:"Eslovaquia",pl:"Słowacja"},Slovenia:{en:"Slovenia",de:"Slowenien",ru:"Словения",pt:"Eslovênia",nl:"Slovenië",fr:"Slovénie",it:"Slovenia",es:"Eslovenia",pl:"Słowenia"},"Solomon Islands":{en:"Solomon Islands",de:"Solomon Islands",ru:"Соломоновы острова",pt:"Ilhas Salomão",nl:"Solomon eilanden",fr:"Les îles Salomon",it:"Isole Salomone",es:"Islas Salomón",pl:"Wyspy Salomona"},Somalia:{en:"Somalia",de:"Somalia",ru:"Сомали",pt:"Somália",nl:"Somalië",fr:"Somalie",it:"Somalia",es:"Somalia",pl:"Somali"},"Some data are not stored. Discard?":{en:"Some data are not stored. Discard?",de:"Einige Daten sind nicht gespeichert. Verwerfen?",ru:"Некоторые данные не сохраняются. Откажитесь?",pt:"Alguns dados não são armazenados. Descartar?",nl:"Sommige gegevens zijn niet opgeslagen. Wijzigingen verwerpen ?",fr:"Certaines données ne sont pas stockées. Abandonner?",it:"Alcuni dati non sono memorizzati. Scartare?",es:"Algunos datos no se graban. ¿Descartar?",pl:"Niektóre dane nie są przechowywane. Odrzucać?"},"Sort alphabetically":{en:"Sort alphabetically by name",de:"Alphabetisch nach Namen sortieren",ru:"Сортировка в алфавитном порядке",pt:"Classifique alfabeticamente pelo nome",nl:"Sorteer alfabetisch op naam",fr:"Trier par ordre alphabétique",it:"Ordina alfabeticamente per nome",es:"Orden alfabetica",pl:"Sortuj alfabetycznie według nazwy"},"South Africa":{en:"South Africa",de:"Südafrika",ru:"Южная Африка",pt:"África do Sul",nl:"Zuid-Afrika",fr:"Afrique du Sud",it:"Sud Africa",es:"Sudáfrica",pl:"Afryka Południowa"},"South Georgia South Sandwich Islands":{en:"South Georgia South Sandwich Islands",de:"South Georgia South Sandwich Islands",ru:"Южная Георгия Южные Сандвичевы острова",pt:"Ilhas Sandwich do Sul da Geórgia",nl:"South Georgia South Sandwich Islands",fr:"Géorgie du Sud Îles Sandwich du Sud",it:"Isole Sandwich South Georgia South",es:"Islas Sandwich del sur de Georgia",pl:"South Georgia South Sandwich Islands"},Spain:{en:"Spain",de:"Spanien",ru:"Испания",pt:"Espanha",nl:"Spanje",fr:"Espagne",it:"Spagna",es:"España",pl:"Hiszpania"},Speed:{en:"Speed",de:"Geschwindigkeit",ru:"скорость",pt:"Rapidez",nl:"Snelheid",fr:"La vitesse",it:"Velocità",es:"Velocidad",pl:"Prędkość"},"Sri Lanka":{en:"Sri Lanka",de:"Sri Lanka",ru:"Шри-Ланка",pt:"Sri Lanka",nl:"Sri Lanka",fr:"Sri Lanka",it:"Sri Lanka",es:"Sri Lanka",pl:"Sri Lanka"},"St. Helena":{en:"St. Helena",de:"St. Helena",ru:"Остров Св. Елены",pt:"Santa Helena",nl:"St. Helena",fr:"Sainte-Hélène",it:"Sant'Elena",es:"Santa Elena",pl:"St. Helena"},"St. Pierre and Miquelon":{en:"St. Pierre and Miquelon",de:"St. Pierre und Miquelon",ru:"Сен-Пьер и Микелон",pt:"São Pedro e Miquelon",nl:"St. Pierre en Miquelon",fr:"Saint-Pierre et Miquelon",it:"St. Pierre e Miquelon",es:"San Pedro y Miquelón",pl:"St. Pierre i Miquelon"},"Started...":{en:"Started...",de:"Gestartet...",ru:"В процессе...",pt:"Começado...",nl:"Begonnen...",fr:"Commencé...",it:"Iniziato...",es:"Comenzado...",pl:"Rozpoczęty..."},State:{en:"Datapoint",de:"Datenpunkt",ru:"Состояние",pt:"Ponto de dados",nl:"Data punt",fr:"Ètat",it:"datapoint",es:"Punto de datos",pl:"Punkt danych"},"State&nbsp;type":{en:"State type",de:"Datenpunkttyp",ru:"State&nbsp;type",pt:"Tipo&nbsp;de&nbsp;ponto&nbsp;de&nbsp;dados",nl:"Datapunt type",fr:"État&nbsp;type",it:"Stato & nbsp; Tipo",es:"Tipo de punto de datos",pl:"Rodzaj państwa"},States:{en:"States",de:"Zustände",ru:"Состояния",pt:"Estados",nl:"Toestanden",fr:"États",it:"stati",es:"Estados",pl:"Stany Zjednoczone"},"States rights":{en:"States rights",de:"Zugriff auf Zustände",ru:"Состояние",pt:"Direitos dos estados",nl:"Toestandsrechten",fr:"Droits des états",it:"Diritti degli Stati",es:"Derechos de los estados",pl:"Prawa państw"},Statistics:{en:"Statistics",de:"Statistik",ru:"Статистика",pt:"Estatisticas",nl:"Statistieken",fr:"Statistiques",it:"statistica",es:"Estadísticas",pl:"Statystyka"},"Statistics:":{en:"Statistics",de:"Statistik",ru:"Статистика:",pt:"Estatisticas:",nl:"Statistieken:",fr:"Statistiques",it:"Statistiche:",es:"Estadísticas:",pl:"Statystyka:"},"Storage of %s":{en:'Storage of <span class="name">%s</span>',de:'Einstellungen von <span class="name">%s</span>',ru:'Настройки для <span class="name">%s</span>',pt:'História de <span class="name">%s</span>',nl:'Opslag van <span class="name">%s</span>',fr:'Stockage de <span class="name">%s</span>',it:'Memoria di <span class="name">%s</span>',es:'Configuraciones de <span class="name">%s</span>',pl:'Przechowywanie <span class="name"> %s </span>'},"Storage of %s states":{en:'Storage of <span class="name">%s</span> states',de:'Einstellungen von <span class="name">%s</span> Zuständen',ru:'Настройки для <span class="name">%s</span> состояний',pt:'História dos estados de <span class="name">%s</span>',nl:'Opslag van <span class="name">%s</span> toestanden',fr:'Stockage des états <span class="name">%s</span>',it:'Memorizzazione di stati <span class="name">%s</span>',es:'Configuración de los estados de <span class="name">%s</span>',pl:'Przechowywanie stanów <span class="name"> %s </span>'},"Success!":{en:"Success!",de:"Erfolgreich!",ru:"Успешно закончено!",pt:"Sucesso!",nl:"Succes!",fr:"Succès!",it:"Successo!",es:"¡Éxito!",pl:"Powodzenie!"},Sudan:{en:"Sudan",de:"Sudan",ru:"Судан",pt:"Sudão",nl:"Soedan",fr:"Soudan",it:"Sudan",es:"Sudán",pl:"Sudan"},Suggestion:{en:"Recommendation",de:"Empfehlung",ru:"Совет",pt:"Recomendação",nl:"Suggestie",fr:"Recommandation",it:"Raccomandazione",es:"Recomendaciones",pl:"Zalecenie"},Sun:{en:"Sun",de:"So",ru:"вс",pt:"Sol",nl:"zon",fr:"dim",it:"sole",es:"Sol",pl:"Słońce"},Suriname:{en:"Suriname",de:"Surinam",ru:"Суринам",pt:"Suriname",nl:"Suriname",fr:"Suriname",it:"Suriname",es:"Surinam",pl:"Surinam"},"Svalbard and Jan Mayen Islands":{en:"Svalbard and Jan Mayen Islands",de:"Svalbard and Jan Mayen Islands",ru:"Острова Свальбард и Ян-Майен",pt:"Ilhas Svalbard e Jan Mayen",nl:"Spitsbergen en Jan Mayen-eilanden",fr:"Îles Svalbard et Jan Mayen",it:"Isole Svalbard e Jan Mayen",es:"Islas Svalbard y Jan Mayen",pl:"Wyspy Svalbard i Jan Mayen"},Swaziland:{en:"Swaziland",de:"Swaziland",ru:"Свазиленд",pt:"Suazilândia",nl:"Swaziland",fr:"Swaziland",it:"Swaziland",es:"Suazilandia",pl:"Suazi"},Sweden:{en:"Sweden",de:"Sweden",ru:"Швеция",pt:"Suécia",nl:"Zweden",fr:"Suède",it:"Svezia",es:"Suecia",pl:"Szwecja"},Switzerland:{en:"Switzerland",de:"Schweiz",ru:"Швейцария",pt:"Suíça",nl:"Zwitserland",fr:"Suisse",it:"Svizzera",es:"Suiza",pl:"Szwajcaria"},"Syrian Arab Republic":{en:"Syrian Arab Republic",de:"Syrian Arab Republic",ru:"Сирийская Арабская Республика",pt:"República Árabe da Síria",nl:"Syrische Arabische Republiek",fr:"République arabe syrienne",it:"Repubblica Araba Siriana",es:"República Árabe de Siria",pl:"Republika Syryjsko-Arabska"},System:{en:"System",de:"System",ru:"Система",pt:"Sistema",nl:"Systeem",fr:"Système",it:"Sistema",es:"Sistema",pl:"System"},"System language:":{en:"System language",de:"Systemsprache",ru:"Системный язык:",pt:"Idioma do sistema:",nl:"Systeem taal:",fr:"Langue du système",it:"Linguaggio di sistema:",es:"Idioma del sistema:",pl:"Język systemu:"},"System settings":{en:"System settings",de:"Systemeinstellungen",ru:"Системные настройки",pt:"Configurações do sistema",nl:"Systeem instellingen",fr:"Paramètres du système",it:"Impostazioni di sistema",es:"Configuración del sistema",pl:"Ustawienia systemowe"},"System uptime":{en:"System uptime",de:"System uptime",ru:"System uptime",pt:"System uptime",nl:"System uptime",fr:"System uptime",it:"System uptime",es:"System uptime",pl:"System uptime"},Table:{en:"Table",de:"Tabelle",ru:"Таблица",pt:"Tabela",nl:"Tabel",fr:"Table",it:"tavolo",es:"Tabla",pl:"Stół"},Taiwan:{en:"Taiwan",de:"Taiwan",ru:"Тайвань",pt:"Taiwan",nl:"Taiwan",fr:"Taïwan",it:"Taiwan",es:"Taiwan",pl:"Tajwan"},Tajikistan:{en:"Tajikistan",de:"Tadschikistan",ru:"Таджикистан",pt:"Tajiquistão",nl:"Tadzjikistan",fr:"Tadjikistan",it:"Tajikistan",es:"Tayikistán",pl:"Tadżykistan"},Tanzania:{en:"Tanzania",de:"Tansania",ru:"Танзания",pt:"Tanzânia",nl:"Tanzania",fr:"Tanzanie",it:"Tanzania",es:"Tanzania",pl:"Tanzania"},"Temperature units:":{en:"Temperature units",de:"Temperatureinheit",ru:"Единицы измерения температуры:",pt:"Unidades de temperatura:",nl:"Temperatuur eenheden:",fr:"Unités de température",it:"Unità di temperatura:",es:"Unidades de temperatura:",pl:"Jednostki temperatury:"},Thailand:{en:"Thailand",de:"Thailand",ru:"Таиланд",pt:"Tailândia",nl:"Thailand",fr:"Thaïlande",it:"Tailandia",es:"Tailandia",pl:"Tajlandia"},'This version of node.js "%s" on "%s" is deprecated. Please install node.js 6, 8 or newer':{en:'yunkong2 supports the LTS versions 6, 8, 10 or newer of node.js. Please update your version ("%s") on host "%s" to one of the supported versions. We recommend to use Node.js 6.',de:'yunkong2 unterstützt die LTS Versionen 6, 8, 10 oder neuer von Node.js. Bitte aktualisieren Sie die verwendete Node.js Version ("%s") auf dem Rechner "%s" auf eine unterstützte Version. Wir empfehlen die Verwendung von Node.js 6.',ru:'Эта версия node.js "%s" на "%s" устарела. Установите node.js 6, 8, 10 или новее.',pt:'yunkong2 suporta as versões LTS 6, 8 e 10 do Node.js. Atualize sua versão ("%s") no host "%s" para uma das versões suportadas. Recomendamos usar Node.js 6.',nl:'yunkong2 ondersteunt de LTS-versies 6, 8 en 10 van node.js. Update uw versie ("%s") op host "%s" naar een van de ondersteunde versies. We raden aan om node.js 6 te gebruiken.',fr:'yunkong2 supporte les versions LTS 6, 8 et 10 de node.js. Veuillez mettre à jour votre version ("%s") sur l\'hôte "%s" avec une des versions prises en charge. Nous vous recommandons d\'utiliser node.js 6.',it:'yunkong2 supporta le versioni LTS 6, 8 e 10 di node.js. Aggiorna la tua versione ("%s") sull\'host "%s" a una delle versioni supportate. Si consiglia di utilizzare node.js 6.',es:'yunkong2 soporta las versiones LTS 6, 8 y 10 de Node.js. Actualice su versión ("%s") en el host "%s" para una de las versiones soportadas. Recomendamos usar Node.js 6.',pl:'yunkong2 obsługuje wersje LTS 6, 8 i 10 pliku node.js. Zaktualizuj swoją wersję (" %s") na hoście " %s" do jednej z obsługiwanych wersji. Zalecamy korzystanie z Node.js 6.'},Thu:{en:"Thu",de:"Do",ru:"чт",pt:"Thu",nl:"Don",fr:"jeu",it:"Gio",es:"Jue",pl:"Czw"},Time:{en:"Time",de:"Zeit",ru:"Время",pt:"Tempo",nl:"Tijd",fr:"Temps",it:"Tempo",es:"Tiempo",pl:"Czas"},"Time From":{en:"Time From",de:"Zeit von",ru:"Время от",pt:"Tempo de",nl:"Tijd vanaf",fr:"Temps de",it:"Tempo da",es:"Tiempo desde",pl:"Czas od"},"Time To":{en:"Time To",de:"Zeit zum",ru:"Время до",pt:"Hora de",nl:"Tijd om",fr:"Temps de",it:"Tempo di",es:"Hora de",pl:"Czas na"},"Time stamp":{en:"Time stamp",de:"Zeitstempel",ru:"Время",pt:"Timestamp",nl:"Tijdstempel",fr:"Horodatage",it:"Data e ora",es:"Timestamp",pl:"Znak czasu"},Title:{en:"Title",de:"Titel",ru:"Название",pt:"Título",nl:"Titel",fr:"Titre",it:"Titolo",es:"Título",pl:"Tytuł"},To:{en:"To",de:"Bis",ru:"до",pt:"Para",nl:"Naar",fr:"À",it:"A",es:"Para",pl:"Do"},Today:{en:"Today",de:"heute",ru:"сегодня",pt:"hoje",nl:"vandaag",fr:"aujourd'hui",it:"oggi",es:"hoy",pl:"Dzisiaj"},"Toggle expert mode":{en:"Toggle expert mode",de:"Expertenmodus umschalten",ru:"Показать системные объекты",pt:"Mostrar objetos do sistema",nl:"Expertenmodus",fr:"Basculer en mode expert",it:"Attiva / disattiva la modalità esperto",es:"El modo experto",pl:"Przełącz tryb ekspercki"},"Toggle states view":{en:"Toggle the states view",de:"Wechseln Sie in die Statusansicht",ru:"Переключить вид состояний",pt:"Alternar a exibição de estados",nl:"Wissel de statenweergave",fr:"Basculer la vue des états",it:"Attiva / disattiva la visualizzazione degli stati",es:"Alternar la vista de estados",pl:"Przełącz widok stanów"},Togo:{en:"Togo",de:"Togo",ru:"Того",pt:"Togo",nl:"Togo",fr:"Aller",it:"Andare",es:"Togo",pl:"Iść"},Tokelau:{en:"Tokelau",de:"Tokelau",ru:"Токелау",pt:"Tokelau",nl:"Tokelau",fr:"Tokelau",it:"Tokelau",es:"Tokelau",pl:"Tokelau"},Tonga:{en:"Tonga",de:"Tonga",ru:"Тонга",pt:"Tonga",nl:"Tonga",fr:"Tonga",it:"tonga",es:"Tonga",pl:"Tonga"},"Too many events":{en:"Too many events",de:"Zu viele Ereignisse",ru:"Слишком много событий",pt:"Muitos eventos",nl:"Te veel evenementen",fr:"Trop d'événements",it:"Troppi eventi",es:"Muchos eventos",pl:"Za dużo zdarzeń"},"Total count in group":{en:"Total count in group",de:"Insgesamt in der Gruppe",ru:"Всего в группе",pt:"Contagem total no grupo",nl:"Totaal in groep",fr:"Nombre total dans le groupe",it:"Conteggio totale nel gruppo",es:"Cuenta total del grupo",pl:"Łączna liczba w grupie"},"Trigger event":{en:"Trigger event",de:"Simuliere Tastendruck",ru:"Симулировать нажатие",pt:"Simule um evento",nl:"Evenement simuleren",fr:"Événement déclencheur",it:"Evento scatenante",es:"Simule un evento",pl:"Zdarzenie wyzwalające"},"Trinidad and Tobago":{en:"Trinidad and Tobago",de:"Trinidad und Tobago",ru:"Тринидад и Тобаго",pt:"Trinidad e Tobago",nl:"Trinidad en Tobago",fr:"Trinité-et-Tobago",it:"Trinidad e Tobago",es:"Trinidad y Tobago",pl:"Trynidad i Tobago"},Tue:{en:"Tue",de:"Di",ru:"вт",pt:"Tue",nl:"Din",fr:"mar",it:"mar",es:"Mar",pl:"Wt"},Tunisia:{en:"Tunisia",de:"Tunesien",ru:"Тунис",pt:"Tunísia",nl:"Tunesië",fr:"Tunisie",it:"Tunisia",es:"Túnez",pl:"Tunezja"},Turkey:{en:"Turkey",de:"Türkei",ru:"Турция",pt:"Peru",nl:"Turkije",fr:"Turquie",it:"tacchino",es:"Turquía",pl:"indyk"},Turkmenistan:{en:"Turkmenistan",de:"Turkmenistan",ru:"Туркменистан",pt:"Turquemenistão",nl:"Turkmenistan",fr:"Turkménistan",it:"Turkmenistan",es:"Turkmenistán",pl:"Turkmenia"},"Turks and Caicos Islands":{en:"Turks and Caicos Islands",de:"Turks und Caicos Islands",ru:"Острова Теркс и Кайкос",pt:"Ilhas Turcas e Caicos",nl:"Turks- en Caicoseilanden",fr:"îles Turques-et-Caïques",it:"Isole Turks e Caicos",es:"Islas Turcas y Caicos",pl:"Wyspy Turks i Caicos"},Tuvalu:{en:"Tuvalu",de:"Tuvalu",ru:"Тувалу",pt:"Tuvalu",nl:"Tuvalu",fr:"Tuvalu",it:"Tuvalu",es:"Tuvalu",pl:"Tuvalu"},Type:{en:"Type",de:"Typ",ru:"Тип",pt:"Tipo",nl:"Type",fr:"Type",it:"genere",es:"Tipo",pl:"Rodzaj"},"URL or file path:":{en:"URL or file path",de:"URL oder Dateipfad",ru:"URL или путь к файлу",pt:"URL ou caminho do arquivo",nl:"URL of bestandspad",fr:"URL ou chemin du fichier",it:"URL o percorso del file:",es:"URL o ruta de acceso del archivo",pl:"Adres URL lub ścieżka do pliku"},Uganda:{en:"Uganda",de:"Uganda",ru:"Уганда",pt:"Uganda",nl:"Oeganda",fr:"Ouganda",it:"Uganda",es:"Uganda",pl:"Uganda"},Ukraine:{en:"Ukraine",de:"Ukraine",ru:"Украина",pt:"Ucrânia",nl:"Oekraïne",fr:"Ukraine",it:"Ucraina",es:"Ucrania",pl:"Ukraina"},"Uncheck All":{en:"Uncheck All",de:"Alle abwählen",ru:"Убрать все",pt:"Desmarcar todos",nl:"Deselecteer alles",fr:"Tout décocher",it:"Deseleziona tutto",es:"Desmarcar todos",pl:"Odznacz wszystkie"},"United Arab Emirates":{en:"United Arab Emirates",de:"Vereinigte Arabische Emirate",ru:"Объединенные Арабские Эмираты",pt:"Emirados Árabes Unidos",nl:"Verenigde Arabische Emiraten",fr:"Emirats Arabes Unis",it:"Emirati Arabi Uniti",es:"Emiratos Árabes Unidos",pl:"Zjednoczone Emiraty Arabskie"},"United Kingdom":{en:"United Kingdom",de:"United Kingdom",ru:"Великобритания",pt:"Reino Unido",nl:"Verenigd Koningkrijk",fr:"Royaume-Uni",it:"Regno Unito",es:"Reino Unido",pl:"Zjednoczone Królestwo"},"United States":{en:"United States",de:"United States",ru:"Соединенные Штаты",pt:"Estados Unidos",nl:"Verenigde Staten",fr:"États Unis",it:"stati Uniti",es:"Estados Unidos",pl:"Stany Zjednoczone"},"United States minor outlying islands":{en:"United States minor outlying islands",de:"United States Minor Outlying Islands",ru:"Небольшие морские острова Соединенных Штатов",pt:"Ilhas periféricas menores dos Estados Unidos",nl:"Kleine afgelegen eilanden van de Verenigde Staten",fr:"Îles mineures éloignées des États-Unis",it:"Isole minori periferiche degli Stati Uniti",es:"Islas periféricas menores de los Estados Unidos",pl:"Stany Zjednoczone Dalekie Wyspy Mniejsze"},"Unknown file format!":{en:"Unknown file format!",de:"Unbekanntes Dateiformat!",ru:"Неизвестный формат файла",pt:"Formato de arquivo desconhecido!",nl:"Onbekend bestandsformaat!",fr:"Format de fichier inconnu",it:"Formato di file sconosciuto!",es:"¡Formato de archivo desconocido!",pl:"Nieznany format pliku!"},Unsecure_Auth:{en:"The password will be sent via unsecure connection. To protect your passwords enable the secure connection (HTTPS)!",de:"Das Passwort wird über unsichere Verbindung gesendet. Um Ihre Passwörter zu schützen, aktivieren Sie die sichere Verbindung (HTTPS)!",ru:"Пароль будет отправлен через незащищенное соединение. Для защиты ваших паролей активируйте безопасное соединение (HTTPS)!",pt:"A senha será enviada por meio de conexão não segura. Para proteger suas senhas, ative a conexão segura (HTTPS)!",nl:"Het wachtwoord wordt verzonden via onbeveiligde verbinding. Ter beveiliging van uw wachtwoorden schakelt u de beveiligde verbinding (HTTPS) in!",fr:"Le mot de passe sera envoyé via une connexion non sécurisée. Pour protéger vos mots de passe, activez la connexion sécurisée (HTTPS)!",it:"La password verrà inviata tramite connessione non protetta. Per proteggere le tue password abilita la connessione sicura (HTTPS)!",es:"La contraseña se enviará a través de una conexión no segura. Para proteger sus contraseñas, ¡habilite la conexión segura (HTTPS)!",pl:"Hasło zostanie wysłane przez połączenie bez zabezpieczeń. Aby chronić swoje hasła, włącz bezpieczne połączenie (HTTPS)!"},"Unsupported image format":{en:"Unsupported image format",de:"Nicht unterstütztes Bildformat",ru:"Неподдерживаемый формат изображения",pt:"Formato de imagem não suportado",nl:"Niet-ondersteunde afbeeldingsindeling",fr:"Format d'image non pris en charge",it:"Formato immagine non supportato",es:"Formato de imagen no compatible",pl:"Nieobsługiwany format obrazu"},Update:{en:"Update",de:"Aktualisieren",ru:"Обновить",pt:"Atualizar",nl:"Bijwerken",fr:"Mettre à jour",it:"Aggiornare",es:"Actualización",pl:"Aktualizacja"},"Update objects":{en:"Update objects",de:"Objekte aktualisieren",ru:"Обновить объекты",pt:"Atualizar objetos",nl:"Objecten bijwerken",fr:"Actualiser les objets",it:"Aggiorna oggetti",es:"Actualizar objetos",pl:"Zaktualizuj obiekty"},"Update states":{en:"Update states",de:"Zustände aktualisieren",ru:"Обновить состояния",pt:"Atualizar estados",nl:"Toestanden bijwerken",fr:"Actualiser les états",it:"Stati di aggiornamento",es:"Actualizar estados",pl:"Zaktualizuj stany"},Updated:{en:"Updated",de:"Updated",ru:"Обновлено",pt:"Atualizado",nl:"bijgewerkt",fr:"Actualisé",it:"aggiornato",es:"Actualizado",pl:"Zaktualizowano"},"Upgrade all adapters":{en:"Upgrade all adapters",de:"Alle Adapter upgraden",ru:"Обновить все драйвера",pt:"Atualize todos os adaptadores",nl:"Alle adapters bijwerken",fr:"Actualiser tous les adaptateurs",it:"Aggiorna tutti gli adattatori",es:"Actualice todos los adaptadores",pl:"Uaktualnij wszystkie adaptery"},Upload:{en:"File upload",de:"Dateiupload",ru:"Загрузка файлов",pt:"Upload de arquivo",nl:"Bestand upload",fr:"Téléchargement de fichiers",it:"Upload di file",es:"Upload de arquivo",pl:"Udostępnianie pliku"},"Upload admin started":{en:"Upload of configuration is started",de:"Upload von Konfiguraton wurde gestartet",ru:"Загрузка настроек началась",pt:"Carregar o administrador iniciado",nl:"Upload-beheerder gestart",fr:"Chargement de la configuration commencé",it:"Upload admin avviato",es:"Cargar el administrador iniciado",pl:"Załadowanie konfiguracji jest rozpoczęte"},"Upload started...":{en:"Upload started...",de:"Upload gestartet ...",ru:"Загрузка началась ...",pt:"Upload iniciado ...",nl:"Upload gestart ...",fr:"Chargement commencé ...",it:"Caricamento avviato ...",es:"La carga comenzó ...",pl:"Przesłanie skonte ..."},Uptime:{en:"Uptime",de:"Uptime",ru:"Uptime",pt:"Uptime",nl:"Uptime",fr:"Uptime",it:"Uptime",es:"Uptime",pl:"Uptime"},Uruguay:{en:"Uruguay",de:"Uruguay",ru:"Уругвай",pt:"Uruguai",nl:"Uruguay",fr:"Uruguay",it:"Uruguay",es:"Uruguay",pl:"Urugwaj"},"Use Lets Encrypt certificates:":{en:"Use Let's Encrypt certificates",de:"Let's Encrypt Zertifikate benutzen",ru:"Использовать сертификаты Let's Encrypt:",pt:"Use certificados do Let's Encrypt:",nl:"Gebruik Let's Encrypt-certificaten:",fr:"Utiliser les certificats Let's Encrypt",it:"Utilizza i certificati Let's Encrypt:",es:"Utilice los certificados de Let's Encrypt:",pl:"Użyj szyfrowania Let's Encrypt:"},"Use this instance for automatic update:":{en:"Use this instance for automatic update",de:"Diese Instanz für automatische Zertifikat-Updates benutzen:",ru:"Использовать эту инстанцию, для обновления сертификатов:",pt:"Use esta instância para atualizar os certificados:",nl:"Gebruik deze instantie voor automatische update:",fr:"Utiliser cette instance pour la mise à jour automatique",it:"Utilizza questa istanza per l'aggiornamento automatico:",es:"Utilice esta instancia para actualizar los certificados:",pl:"Użyj tej instancji do automatycznej aktualizacji:"},User:{en:"User",de:"Benutzer",ru:"Пользователь",pt:"Usuário",nl:"Gebruiker",fr:"Utilisateur",it:"Utente",es:"Usuario",pl:"Użytkownik"},"User deleted":{en:"User deleted",de:"Benutzer gelöscht",ru:"Пользователь удален",pt:"Usuário deletado",nl:"Gebruiker verwijderd",fr:"Utilisateur supprimé",it:"Utente eliminato",es:"Usuario eliminado",pl:"Użytkownik został usunięty"},"User does not exist":{en:"User does not exist",de:"Benutzer existiert nicht",ru:"Пользователь не существует",pt:"Usuário não existe",nl:"Gebruiker bestaat niet",fr:"L'utilisateur n'existe pas",it:"l'utente non esiste",es:"Usuario no existe",pl:"użytkownik nie istnieje"},"User yet exists":{en:"User already exists",de:"Benutzer bereits vorhanden",ru:"Имя занято",pt:"O usuário ja existe",nl:"Gebruiker bestaat al",fr:"L'utilisateur existe encore",it:"L'utente esiste già",es:"El usuario ya existe",pl:"Użytkownik już istnieje"},Users:{en:"Users",de:"Benutzer",ru:"Пользователи",pt:"Usuários",nl:"Gebruikers",fr:"Utilisateurs",it:"utenti",es:"Usuarios",pl:"Użytkownicy"},Uzbekistan:{en:"Uzbekistan",de:"Usbekistan",ru:"Узбекистан",pt:"Uzbequistão",nl:"Oezbekistan",fr:"Ouzbékistan",it:"Uzbekistan",es:"Uzbekistán",pl:"Uzbekistan"},Value:{en:"Value",de:"Wert",ru:"Значение",pt:"Valor",nl:"Waarde",fr:"Valeur",it:"Valore",es:"Valor",pl:"Wartość"},"Values of %s":{en:"Values of %s",de:"Werte für %s",ru:"Значения %s",pt:"Valores para %s",nl:"Waarden voor %s",fr:"Valeurs pour %s",it:"Valori per %s",es:"Valores para %s",pl:"Wartości %s"},Vanuatu:{en:"Vanuatu",de:"Vanuatu",ru:"Вануату",pt:"Vanuatu",nl:"Vanuatu",fr:"Vanuatu",it:"Vanuatu",es:"Vanuatu",pl:"Vanuatu"},"Vatican City State":{en:"Vatican City State",de:"Vatikanstaat",ru:"Государство Ватикан",pt:"Estado da Cidade do Vaticano",nl:"Vaticaanstad",fr:"État de la Cité du Vatican",it:"Stato della Città del Vaticano",es:"Estado de la Ciudad del Vaticano",pl:"Państwo Watykańskie"},Venezuela:{en:"Venezuela",de:"Venezuela",ru:"Венесуэла",pt:"Venezuela",nl:"Venezuela",fr:"Venezuela",it:"Venezuela",es:"Venezuela",pl:"Wenezuela"},Vietnam:{en:"Vietnam",de:"Vietnam",ru:"Вьетнам",pt:"Vietnã",nl:"Vietnam",fr:"Vietnam",it:"Vietnam",es:"Vietnam",pl:"Wietnam"},"Virgin Islands (British)":{en:"Virgin Islands (British)",de:"Britische Jungferninseln",ru:"Виргинские острова (англ.)",pt:"Ilhas Virgens (britânicas)",nl:"Maagdeneilanden (Brits)",fr:"Îles Vierges britanniques",it:"Isole Vergini (britanniche)",es:"Islas Vírgenes (Británicas)",pl:"Wyspy Dziewicze (brytyjskie)"},"Virgin Islands (U.S.)":{en:"Virgin Islands (U.S.)",de:"Amerikanische Jungferninseln",ru:"Виргинские острова (США)",pt:"Ilhas Virgens (EUA)",nl:"Amerikaanse Maagdeneilanden",fr:"Îles Vierges (États-Unis)",it:"Isole Vergini (U.S.)",es:"Islas Vírgenes (EE.UU.)",pl:"Wyspy Dziewicze (USA)"},"Wallis and Futuna Islands":{en:"Wallis and Futuna Islands",de:"Wallis and Futuna Islands",ru:"Острова Уоллис и Футуна",pt:"Ilhas Wallis e Futuna",nl:"Wallis en Futuna Eilanden",fr:"Wallis et Futuna",it:"Isole Wallis e Futuna",es:"Islas Wallis y Futuna",pl:"Wyspy Wallis i Futuna"},"Warning!":{en:"Warning!",de:"Warnung!",ru:"Предупреждение!",pt:"Atenção!",nl:"Waarschuwing!",fr:"Attention!",it:"Avvertimento!",es:"¡Advertencia!",pl:"Ostrzeżenie!"},Wed:{en:"Wed",de:"Mi",ru:"ср",pt:"Qua",nl:"cf.",fr:"mer",it:"cf.",es:"Wed",pl:"Poślubić"},"Western Sahara":{en:"Western Sahara",de:"Western Sahara",ru:"Западная Сахара",pt:"Saara Ocidental",nl:"Westelijke Sahara",fr:"Sahara occidental",it:"Sahara occidentale",es:"Sahara Occidental",pl:"Sahara Zachodnia"},With:{en:"With",de:"mit",ru:"с",pt:"com",nl:"met",fr:"avec",it:"Con",es:"con",pl:"Z"},Without:{en:"Without",de:"ohne",ru:"без",pt:"sem",nl:"zonder",fr:"sans",it:"Senza",es:"sin",pl:"Bez"},Yemen:{en:"Yemen",de:"Jemen",ru:"Йемен",pt:"Iémen",nl:"Jemen",fr:"Yémen",it:"yemen",es:"Yemen",pl:"Jemen"},"You are going to add new instance: ":{en:"You are going to add new instance: ",de:"Sie werden eine neue Instanz hinzufügen:",ru:"Вы добавите новый экземпляр:",pt:"Você vai adicionar nova instância:",nl:"U gaat een nieuw exemplaar toevoegen:",fr:"Vous allez ajouter une nouvelle instance:",it:"Stai per aggiungere una nuova istanza:",es:"Vas a agregar una nueva instancia:",pl:"Zamierzasz dodać nową instancję:"},"You can check changelog here":{en:'You can check the changelog <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">here</a>',de:'Änderungen können <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">hier</a> angeschaut werden',ru:'Список изменений можно посмотреть <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">здесь</a>',pt:'Você pode verificar o changelog <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">aqui</a>',nl:'U kunt de wijzigingen <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">hier</a> bekijken',fr:'Vous pouvez vérifier le changelog <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">ici</a>',it:'Puoi controllare il log delle modifiche <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank"> qui </a>',es:'Usted puede comprobar el changelog <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank">aquí</a>',pl:'Możesz sprawdzić dziennik zmian <a href="https://github.com/yunkong2/yunkong2.js-controller/blob/master/CHANGELOG.md" target="_blank"> tutaj </a>'},"You can drag&drop the devices, channels and states to enums":{en:"You can drag&drop the devices, channels and states to enums",de:"Sie können Geräte, Kanäle und Zustände per Drag & Drop in Auflistungen ziehen",ru:"Вы можете перетаскивать устройства, каналы и состояния к категориям",pt:"Você pode usar drag & drop para classificar os aparelhos, canais e estados em uma enumeração.",nl:"U kunt de apparaten, kanalen en toestanden naar enums verslepen",fr:"Vous pouvez faire glisser et déposer les périphériques, les canaux et les états vers les énumérations",it:"È possibile trascinare e rilasciare dispositivi, canali e stati in enumerazioni",es:"Usted puede usar drag & drop para clasificar los aparatos, canales y estados en una clasificación",pl:"Możesz przeciągać i upuszczać urządzenia, kanały i stany do wyliczenia"},"You can drag&drop users to groups":{en:"You can drag&drop users to groups",de:"Sie können Benutzer per Drag & Drop in Gruppen verschieben",ru:"Вы можете перетаскивать пользователей в группы",pt:"Você pode usar drag & drop para classificar usuários em grupos",nl:"U kunt gebruikers naar groepen slepen en neerzetten",fr:"Vous pouvez faire glisser et déposer les utilisateurs vers les groupes",it:"È possibile trascinare e rilasciare gli utenti in gruppi",es:"Puede utilizar drag & drop para clasificar usuarios en grupos",pl:"Możesz przeciągać i upuszczać użytkowników do grup"},"You can't see events via cloud":{en:"You can't see events via cloud",de:"Sie können keine Ereignisse über die Cloud sehen",ru:"Вы не можете видеть события через облако",pt:"Você não pode ver eventos via nuvem",nl:"U kunt gebeurtenissen niet via de cloud bekijken",fr:"Vous ne pouvez pas voir les événements via le cloud",it:"Non puoi vedere eventi tramite cloud",es:"No puedes ver eventos a través de la nube",pl:"Nie możesz zobaczyć wydarzeń za pośrednictwem chmury"},"Your home":{en:"Your home",de:"Dein Haus",ru:"Твой дом",pt:"Sua casa",nl:"Uw huis",fr:"Le chez-soi",it:"La tua casa",es:"Su casa",pl:"Twój dom"},Zaire:{en:"Zaire",de:"Zaire",ru:"Заир",pt:"Zaire",nl:"Zaïre",fr:"Zaïre",it:"Zaire",es:"Zaire",pl:"Zair"},Zambia:{en:"Zambia",de:"Sambia",ru:"Замбия",pt:"Zâmbia",nl:"Zambia",fr:"Zambie",it:"Zambia",es:"Zambia",pl:"Zambia"},Zimbabwe:{en:"Zimbabwe",de:"Simbabwe",ru:"Зимбабве",pt:"Zimbábue",nl:"Zimbabwe",fr:"Zimbabwe",it:"Zimbabwe",es:"Zimbabwe",pl:"Zimbabwe"},_All:{en:"All",de:"Alle",ru:"Все",pt:"Todos",nl:"Alle",fr:"Tout",it:"Tutti",es:"Todos",pl:"Wszystko"},"_Toggle expert mode":{en:"Toggle expert mode",de:"Expertenmodus",ru:"Режим эксперта",pt:"Modo de especialista",nl:"Expertenmodus",fr:"Choisir le mode expert",it:"Attiva / disattiva la modalità esperto",es:"Modo de experto",pl:"Przełącz tryb ekspercki"},__different__:{en:"different",de:"unterschiedlich",ru:"разное",pt:"diferente",nl:"verschillend",fr:"différent",it:"diverso",es:"diferente",pl:"różne"},"a-z":{en:"a-z",de:"a-z",ru:"а-я",pt:"a-z",nl:"a-z",fr:"a-z",it:"a-z",es:"a-z",pl:"a-z"},ack:{en:"ack",de:"Bestätigt",ru:"Подтв.",pt:"confirmado",nl:"bevestigt",fr:"confirmé",it:"confermato",es:"confirmado",pl:"ack"},actions:{en:"actions",de:"Aktionen",ru:"действия",pt:"ações",nl:"Acties",fr:"actes",it:"Azioni",es:"acciones",pl:"działania"},active:{en:"active",de:"aktiv",ru:"активно",pt:"ativo",nl:"actief",fr:"actif",it:"attivo",es:"activo",pl:"aktywny"},"adapter with updates":{en:"adapters with updates",de:"Adapter mit Aktualisierungen",ru:"Драйвера с обновлениями",pt:"adaptador com atualizações",nl:"adapters met updates",fr:"adaptateur avec mises à jour",it:"adattatori con aggiornamenti",es:"adaptador con actualizaciones",pl:"adaptery z aktualizacjami"},"adapters count":{en:"adapters count",de:"Adapter zählen",ru:"количество адаптеров",pt:"contagem de adaptadores",nl:"adapters tellen",fr:"nombre d'adaptateurs",it:"gli adattatori contano",es:"conteo de adaptadores",pl:"liczba adapterów"},add:{en:"Add",de:"Hinzufügen",ru:"Добавить",pt:"Adicionar",nl:"Toevoegen",fr:"Ajouter",it:"Inserisci",es:"Añadir",pl:"Dodaj"},"add children":{en:"add children",de:"Tochterobjekt erzeugen",ru:"Добавить под-категории",pt:"inserir em enumeração",nl:"voeg onderliggende toe",fr:"ajouter des descendants",it:"aggiungi bambini",es:"insertar objeto secundario",pl:"dodaj dzieci"},"add instance":{en:"add instance",de:"Instanz hinzufügen",ru:"Установить драйвер",pt:"adicionar instância",nl:"Instantie toevoegen",fr:"ajouter une instance",it:"aggiungi istanza",es:"añadir instancia",pl:"dodaj instancję"},"add repository":{en:"add repository",de:"Verwahrungsort hinzufügen",ru:"Добавить репозиторий",pt:"adicionar repositório",nl:"repository toevoegen",fr:"ajouter un dépôt",it:"aggiungi repository",es:"añadir repositorio",pl:"dodaj repozytorium"},agree:{en:"agree",de:"Einverstanden",ru:"Согласен(на)",pt:"aceito",nl:"Akkoord",fr:"se mettre d'accord",it:"essere d'accordo",es:"aceptado",pl:"Zgodzić się"},alarm_group:{en:"Alarm",de:"Alarm",ru:"Сигнализация",pt:"Alarme",nl:"Alarm",fr:"Alarme",it:"Allarme",es:"Alarma",pl:"Alarm"},alive:{en:"alive",de:"Läuft",ru:"Активен",pt:"funcionando",nl:"actief",fr:"vivant",it:"vivo",es:"funcionando",pl:"żywy"},all:{en:"all",de:"Alle",ru:"все",pt:"todos",nl:"alle",fr:"tout",it:"tutti",es:"todos",pl:"wszystko"},alpha:{en:"alpha",de:"alpha",ru:"alpha",pt:"alfa",nl:"alpha",fr:"alpha",it:"alfa",es:"alfa",pl:"alfa"},array:{en:"array",de:"Feld",ru:"Массив",pt:"campo",nl:"veld",fr:"tableau",it:"schieramento",es:"campo",pl:"szyk"},auto:{en:"auto",de:"Auto",ru:"авто",pt:"auto",nl:"auto",fr:"auto",it:"auto",es:"auto",pl:"automatyczny"},available:{en:"available",de:"Verfügbar",ru:"Доступен",pt:"acessível",nl:"Beschikbaar",fr:"disponible",it:"a disposizione",es:"disponible",pl:"dostępny"},beta:{en:"beta",de:"beta",ru:"beta",pt:"beta",nl:"beta",fr:"bêta",it:"beta",es:"beta",pl:"beta"},boolean:{en:"boolean",de:"Logikwert",ru:"Логическая переменная",pt:"valor lógico",nl:"boolean",fr:"booléen",it:"booleano",es:"booleano",pl:"boolean"},bug:{en:"bugtracker",de:"Bugtracker",ru:"Баг трекер",pt:"bugtracker",nl:"bugtracker",fr:"bugtracker",it:"bugtracker",es:"bugtracker",pl:"bugtracker"},cancel:{en:"Cancel",de:"Abbrechen",ru:"отменить",pt:"Cancelar",nl:"Annuleer",fr:"Annuler",it:"Annulla",es:"Cancelar",pl:"Anuluj"},cert_path_note:{en:"You can use an absolute path to the certificate, like '/opt/certs/cert.pem', or just upload it per drag&drop",de:"Sie können den absoluten Pfad zum Zertifikat verwenden, wie '/opt/certs/cert.pem', oder einfach hochladen",ru:"вы можете использовать абсолютный путь к сертификату, например '/opt/certs/cert.pem', или просто перетащить файл сюда",pt:"Você pode usar o caminho absoluto para o certificado, como '/opt/certs/cert.pem', ou simplesmente fazer um upload de um arquivo",nl:"U kunt een absoluut pad gebruiken voor de certificaten, zoals '/opt/certs/cert.pem', of u kunt het uploaden door het hierheen te slepen",fr:"Vous pouvez utiliser le chemin absolu du certificat, comme '/opt/certs/cert.pem', ou simplement le télécharger par glisser-déposer",it:'Puoi utilizzare un percorso assoluto per il certificato, come "/opt/certs/cert.pem", o semplicemente caricarlo per drag & drop',es:"Puede utilizar la ruta absoluta para el certificado, como '/opt/certs/cert.pem', o simplemente cargar un archivo",pl:'Możesz użyć bezwzględnej ścieżki do certyfikatu, takiej jak "/opt/certs/cert.pem", lub po prostu przesłać ją na przeciągnij i upuść'},certificate:{en:"certificate",de:"Zertifikate",ru:"сертификат",pt:"certificado",nl:"certificaat",fr:"certificat",it:"certificato",es:"certificado",pl:"certyfikat"},"change view mode":{en:"change view mode",de:"Ansicht ändern",ru:"сменить вид просмотра",pt:"alterar o modo de vista",nl:"verander weergavemodus",fr:"changer le mode d'affichage",it:"cambia modalità di visualizzazione",es:"cambiar el modo de vista",pl:"zmień tryb widoku"},channel:{en:"channel",de:"Kanal",ru:"Канал",pt:"canal",nl:"kanaal",fr:"canal",it:"canale",es:"canal",pl:"kanał"},clear:{en:"clear",de:"löschen",ru:"Очистить",pt:"delatar",nl:"verwijderen",fr:"annuler",it:"chiaro",es:"borrar",pl:"jasny"},"climate-control_group":{en:"Climate Control",de:"Klimakontrolle",ru:"Климат-контроль",pt:"Controle climático",nl:"Klimaatcontrole",fr:"Gestion du climat",it:"Controllo climatico",es:"Controle climático",pl:"Kontrola klimatu"},"close on ready":{en:"close on ready",de:"Schließen wenn fertig",ru:"закрыть по окончании",pt:"feche pronto",nl:"dichtbij klaar",fr:"Fermer lorsque terminé",it:"vicino pronto",es:"Cierre cuando esté listo",pl:"gotowe do użycia"},collapse:{en:"collapse",de:"zuklappen",ru:"свернуть",pt:"colapso",nl:"inklappen",fr:"réduire",it:"crollo",es:"colapso",pl:"zawalić się"},"collapse all":{en:"collapse all",de:"Alle zuklappen",ru:"Свернуть все группы",pt:"colapsar todos",nl:"alles inklappen",fr:"tout réduire",it:"collassa tutto",es:"colapsar todos",pl:"zwinąć wszystkie"},comma:{en:"comma",de:"Komma",ru:"запятая",pt:"vírgula",nl:"komma",fr:"virgule",it:"virgola",es:"coma",pl:"przecinek"},"command execution":{en:"Command execution",de:"Kommando-Ausführung",ru:"Выполнение команды",pt:"Execução do comando",nl:"opdrachtuitvoering",fr:"Exécution de commande",it:"Esecuzione del comando",es:"Ejecución de comandos",pl:"Wykonanie polecenia"},common:{en:"common",de:"Allgemein",ru:"Общие параметры",pt:"geral",nl:"Algemeen",fr:"commun",it:"Comune",es:"general",pl:"pospolity"},"common adapters_group":{en:"Common",de:"Allgemein",ru:"Общие",pt:"Geral",nl:"Algemeen",fr:"Général",it:"Comune",es:"General",pl:"Pospolity"},common_color:{en:"color",de:"Farbe",ru:"цвет",pt:"cor",nl:"kleur",fr:"Couleur",it:"colore",es:"color",pl:"kolor"},common_def:{en:"default value",de:"Standardwert",ru:"значение по умолчанию",pt:"valor padrão",nl:"standaardwaarde",fr:"valeur par défaut",it:"valore di default",es:"valor predeterminado",pl:"domyślna wartość"},common_desc:{en:"description",de:"Beschreibung",ru:"описание",pt:"descrição",nl:"Beschrijving",fr:"la description",it:"descrizione",es:"descripción",pl:"opis"},common_icon:{en:"icon",de:"Symbol",ru:"значок",pt:"ícone",nl:"icoon",fr:"icône",it:"icona",es:"ico",pl:"Ikona"},common_max:{en:"max value",de:"maximaler Wert",ru:"максимальное значение",pt:"valor máximo",nl:"maximum waarde",fr:"Valeur maximale",it:"valore massimo",es:"valor máximo",pl:"maksymalna wartość"},common_min:{en:"minimal value",de:"minimaler Wert",ru:"минимальное значение",pt:"valor mínimo",nl:"minimale waarde",fr:"Valeur minimale",it:"valore minimo",es:"valor mínimo",pl:"minimalna wartość"},common_read:{en:"read allowed",de:"Lesen erlaubt",ru:"читать разрешено",pt:"leitura permitida",nl:"lezen toegestaan",fr:"lecture autorisé",it:"leggere permesso",es:"permitido leer",pl:"odczyt dozwolony"},common_role:{en:"role",de:"Rolle",ru:"роль",pt:"função",nl:"rol",fr:"rôle",it:"ruolo",es:"papel",pl:"rola"},common_states:{en:"predefined values",de:"vordefinierte Werte",ru:"предопределенные значения",pt:"valores predefinidos",nl:"voorgedefinieerde waarden",fr:"valeurs prédéfinies",it:"valori predefiniti",es:"estados",pl:"wstępnie zdefiniowane wartości"},common_type:{en:"type",de:"Art",ru:"тип",pt:"tipo",nl:"type",fr:"type",it:"genere",es:"tipo",pl:"rodzaj"},common_unit:{en:"measure unit",de:"Maßeinheit",ru:"единица измерения",pt:"unidade de medida",nl:"meeteenheid",fr:"unité de mesure",it:"unità di misura",es:"Unidad de medida",pl:"jednostka miary"},common_write:{en:"write allowed",de:"Schreiben erlaubt",ru:"писать разрешено",pt:"escrever permitido",nl:"schrijf toegestaan",fr:"écriture autorisé",it:"scrivere permesso",es:"escribir",pl:"pisz wolno"},communication_group:{en:"Communication",de:"Kommunikation",ru:"Сетевые",pt:"Comunicação",nl:"Communicatie",fr:"Communication",it:"Comunicazione",es:"Comunicación",pl:"Komunikacja"},config:{en:"Settings",de:"Konfiguration",ru:"Настроить",pt:"Configuração",nl:"configuratie",fr:"config",it:"impostazioni",es:"Configuración",pl:"Ustawienia"},"config instance":{en:"config instance",de:"Instanz konfigurieren",ru:"Настройка экземпляра",pt:"configurar a instância",nl:"Instantie configureren",fr:"instance de configuration",it:"istanza di configurazione",es:"configurar la instancia",pl:"instancja konfiguracji"},"confirm password":{en:"Confirm password",de:"Bestätigung",ru:"Подтверждение",pt:"Confirme a senha",nl:"wachtwoord bevestigen",fr:"Confirmez le mot de passe",it:"Conferma password",es:"Confirme la contraseña",pl:"Potwierdź hasło"},connected:{en:"connected",de:"Verbunden",ru:"Соединение",pt:"conectado",nl:"verbonden",fr:"connecté",it:"collegato",es:"conectado",pl:"połączony"},copy:{en:"copy",de:"Kopieren",ru:"Копировать",pt:"copiar",nl:"kopiëren",fr:"copie",it:"copia",es:"copiar",pl:"Kopiuj"},"copy note":{en:"Press Ctrl+A and Ctrl+C to copy the log to the clipboard and click with the mouse anywhere to close.",de:"Strg+A gefolgt von Strg+C drücken, um den Inhalt in die Zwischenablage zu kopieren. Irgendwo klicken, um das Fenster zu schliessen.",ru:"Нажмите Ctrl+A и Ctrl+C, что бы скопировать в буфер обмена и после этого нажмите мышкой в любом месте.",pt:"Pressione Ctrl + A e depois Ctrl + C para copiar o conteúdo para a o clipboard. Clique em algum lugar para fechar a janela.",nl:"Druk op Ctrl + A en vervolgens op Ctrl + C om de inhoud naar het klembord te kopiëren. Klik ergens om het venster te sluiten.",fr:"Appuyez sur Ctrl + A puis sur Ctrl + C pour copier le contenu dans le presse-papiers. Cliquez quelque part pour fermer la fenêtre.",it:"Premi Ctrl + A e Ctrl + C per copiare il registro negli appunti e fai clic con il mouse ovunque per chiuderlo.",es:"Presione Ctrl + A y luego Ctrl + C para copiar el contenido al portapapeles. Haga clic en algún lugar para cerrar la ventana.",pl:"Naciśnij Ctrl + A i Ctrl + C, aby skopiować dziennik do schowka i kliknij myszką w dowolnym miejscu, aby zamknąć."},"create operation":{en:"create",de:"erzeugen",ru:"Создавать",pt:"produzir",nl:"maken",fr:"créer",it:"creare",es:"producir",pl:"Stwórz"},"custom enum":{en:"?ustom enum",de:"Benutzerdefiniert",ru:"Своя группа",pt:"Enum personalizado",nl:"Aangepaste enum",fr:"Enum personnalisé",it:"Enum personalizzato",es:"Enum personalizado",pl:"? ustom enum"},"custom group":{en:"Custom group",de:"Benutzerdefinierte Gruppe",ru:"Пользовательская группа",pt:"Grupo personalizado",nl:"Aangepaste groep",fr:"Groupe personnalisé",it:"Gruppo personalizzato",es:"Grupo personalizado",pl:"Grupa niestandardowa"},daemon:{en:"daemon",de:"daemon",ru:"Демон",pt:"daemon",nl:"demon",fr:"service",it:"demone",es:"daemon",pl:"demon"},"date-and-time_group":{en:"Date and Time",de:"Datum und Uhrzeit",ru:"Дата и время",pt:"Data e hora",nl:"Datum en tijd",fr:"Date et heure",it:"Data e ora",es:"Fecha y hora",pl:"Data i godzina"},daysShortText:{en:"d.",de:"T.",ru:"д.",pt:"d.",nl:"d.",fr:"j.",it:"d.",es:"d.",pl:"d."},debug:{en:"debug",de:"Debug",ru:"отладка",pt:"depurar",nl:"debug",fr:"déboguer",it:"mettere a punto",es:"depurar",pl:"odpluskwić"},delete:{en:"delete",de:"Löschen",ru:"Удалить",pt:"deletar",nl:"verwijderen",fr:"effacer",it:"Elimina",es:"borrar",pl:"kasować"},"delete adapter":{en:"delete adapter",de:"Adapter löschen",ru:"Удалить драйвер",pt:"deletar adaptador",nl:"verwijder adapter",fr:"supprimer l'adaptateur",it:"elimina l'adattatore",es:"borrar adaptador",pl:"usuń adapter"},"delete group":{en:"delete group",de:"Gruppe löschen",ru:"Удалить группу",pt:"deletar grupo",nl:"verwijder groep",fr:"supprimer le groupe",it:"cancella il gruppo",es:"borrar grupo",pl:"usuń grupę"},"delete instance":{en:"delete instance",de:"Instanz löschen",ru:"Удалить экземпляр",pt:"deletar instância",nl:"verwijder instantie",fr:"supprimer l'instance",it:"cancella istanza",es:"borrar instancia",pl:"usuń instancję"},"delete operation":{en:"delete",de:"löschen",ru:"Удалять",pt:"deletar operação",nl:"verwijderen",fr:"supprimer l'opération",it:"Elimina",es:"borrar",pl:"kasować"},"delete script":{en:"delete script",de:"Script löschen",ru:"Удалить скрипт",pt:"deletar o script",nl:"verwijder script",fr:"supprimer le script",it:"cancella script",es:"borrar el script",pl:"usuń skrypt"},"delete user":{en:"delete user",de:"Benutzer löschen",ru:"Удалить пользователя",pt:"deletar usuário",nl:"Verwijder gebruiker",fr:"Supprimer l'utilisateur",it:"cancella utente",es:"borrar usuario",pl:"Usuń użytkownika"},desc:{en:"desc",de:"Beschreibung",ru:"Описание",pt:"desc.",nl:"Beschrijving",fr:"description",it:"disc",es:"desc.",pl:"desc"},description:{en:"Description",de:"Beschreibung",ru:"Описание",pt:"Descrição",nl:"Beschrijving",fr:"description",it:"Descrizione",es:"Descripción",pl:"Opis"},device:{en:"device",de:"Gerät",ru:"Устройство",pt:"aparelho",nl:"apparaat",fr:"dispositif",it:"dispositivo",es:"aparato",pl:"urządzenie"},"diag-note":{en:"We worked hard to create this project. In return we expect from you some usage statistics.<br>Every time the adapter list is updated, the anonymized statistics are sent. We respect your privacy, so no private information will be transmitted.<br>Thank you!",de:"Wir haben hart daran gearbeitet, dieses Projekt auf die Beine zu stellen. Als Gegenleistung bitten wir Sie, uns die Nutzungs-Statistik zu senden.<br>Es werden keine privaten Informationen zu yunkong2.org gesendet. Jedes Mal wenn die Adapterliste aktualisiert wird, wird auch die anonymisierte Statistik verschickt.<br>Vielen Dank!",ru:"Мы долго работали над этим проектом. Мы просим вас переслать нам статистику использования, как компенсацию.<br>Никакой приватной информации не отсылается в yunkong2.net. Каждый раз, когда список драйверов обновляется, будет отсылаться анонимная статистика.<br>Большое спасибо!",pt:"Trabalhamos duro para criar este projeto. Em troca, pedimos que nos envie as estatísticas de uso. <br> Nenhuma informação privada será enviada para yunkong2.net. Cada vez que a lista do adaptador é atualizada, as estatísticas anônimas também serão enviadas. <br>Obrigado!",nl:"We hebben hard gewerkt om dit project mogelijk te maken. Als equivalent verwachten we van u enkele statistieken over het gebruik. <br> Er zal geen persoonlijke informatie naar yunkong2.net worden verzonden. Telkens wanneer u op de update-adapterlijst klikt, worden de geanonimiseerde statistieken verzonden. <br> Dankjewel!",fr:"Nous avons travaillé dur pour créer ce projet. A charge de revanche, nous attendons de vous des statistiques sur l'utilisation.<br>Aucune information privée ne sera envoyée à yunkong2.net. Chaque fois que vous appuyez sur Mettre à jour la liste des adaptateurs, les statistiques anonymisées seront envoyées.<br>Merci!",it:"Abbiamo lavorato sodo per creare questo progetto. In cambio ci aspettiamo da voi alcune statistiche di utilizzo. <br> Ogni volta che la lista dell'adattatore viene aggiornata, vengono inviate le statistiche anonime. Rispettiamo la tua privacy, quindi non verranno trasmesse informazioni private. <br> Grazie!",es:"Trabajamos duro para crear este proyecto. En cambio, pedimos que nos envíe las estadísticas de uso. <br>Ninguna información privada será enviada a yunkong2.net. Cada vez que se actualiza la lista del adaptador, también se enviarán las estadísticas anónimas. - <br>¡Gracias!",pl:"Ciężko pracowaliśmy, aby stworzyć ten projekt. W zamian spodziewamy się pewnych statystyk użytkowania. <br> Za każdym razem, gdy lista adapterów jest aktualizowana, wysyłane są anonimowe statystyki. Szanujemy twoją prywatność, więc żadne prywatne informacje nie będą przekazywane. <br> Dziękuję!"},edit:{en:"edit",de:"Ändern",ru:"Редактировать",pt:"editar",nl:"bewerken",fr:"modifier",it:"modificare",es:"editar",pl:"edytować"},"edit enum":{en:"edit enum",de:"Aufzählung ändern",ru:"Изменить категорию",pt:"editar enumeração",nl:"bewerk enum",fr:"éditer enum",it:"modifica enum",es:"editar la clasificación",pl:"edytuj wyliczenie"},"edit enums":{en:"Edit enumerations for",de:"Aufzählungen für bearbeiten",ru:"Изменить категории для",pt:"Edite enumerações para",nl:"Bewerk opsommingen voor",fr:"Modifier les énumérations pour",it:"Modifica enumerazioni per",es:"Editar enumeraciones para",pl:"Edytuj wyliczenia dla"},"edit file":{en:"edit file",de:"Datei bearbeiten",ru:"Редактировать",pt:"editar arquivo",nl:"bestand bewerken",fr:"modifier le fichier",it:"modifica file",es:"editar archivo",pl:"edytuj plik"},"edit group":{en:"edit group",de:"Gruppe bearbeiten",ru:"Редактировать группу",pt:"editar grupo",nl:"groep bewerken",fr:"modifier le groupe",it:"modifica gruppo",es:"editar grupo",pl:"edytuj grupę"},"edit instance":{en:"edit instance",de:"Instanz bearbeiten",ru:"Редактировать экземпляр",pt:"editar instância",nl:"bewerk instantie",fr:"instance de modification",it:"modifica istanza",es:"editar instancia",pl:"edytuj instancję"},"edit script":{en:"edit script",de:"Script bearbeiten",ru:"Редактировать скрипт",pt:"editar script",nl:"bewerk script",fr:"modifier le script",it:"modifica script",es:"editar script",pl:"edytuj skrypt"},"edit user":{en:"edit user",de:"Benutzer bearbeiten",ru:"Редактировать пользователя",pt:"editar usuário",nl:"bewerk gebruiker",fr:"Modifier l'utilisateur",it:"modifica utente",es:"editar usuario",pl:"Edytuj użytkownika"},"edit value":{en:"Edit value",de:"Wert bearbeiten",ru:"Изменить значение",pt:"Editar valor",nl:"Waarde bewerken",fr:"Modifier la valeur",it:"Modifica valore",es:"Editar valor",pl:"Edytuj wartość"},enabled:{en:"enabled",de:"Aktiviert",ru:"активно",pt:"ativado",nl:"ingeschakeld",fr:"activée",it:"abilitato",es:"activado",pl:"włączony"},energy_group:{en:"Energy",de:"Energie",ru:"Энергия",pt:"Energia",nl:"Energie",fr:"Énergie",it:"Energia",es:"Energía",pl:"Energia"},engine:{en:"engine",de:"Ausführen mit",ru:"Движок",pt:"executar com",nl:"uitvoeren met",fr:"executer avec",it:"motore",es:"ejecutar con",pl:"silnik"},"engine type":{en:"engine type",de:"Enginetyp",ru:"Тип движка",pt:"Tipo de mecanismo",nl:"Enginetyp",fr:"type d'execution",it:"tipo di motore",es:"tipo de mecanismo",pl:"typ silnika"},error:{en:"error",de:"Fehler",ru:"ошибки",pt:"erro",nl:"fout",fr:"Erreur",it:"errore",es:"error",pl:"błąd"},events:{en:"events",de:"Ereignisse",ru:"Сообщения",pt:"eventos",nl:"Gebeurtenissen",fr:"événements",it:"eventi",es:"eventos",pl:"wydarzenia"},"execute operation":{en:"Execute operation",de:"ausführen",ru:"выполнить",pt:"executar",nl:"uitvoeren",fr:"exécuter l'opération",it:"Esegui operazione",es:"ejecutar",pl:"Wykonaj operację"},expand:{en:"expand",de:"aufklappen",ru:"раскрыть",pt:"expandir",nl:"uitvouwen",fr:"développer",it:"espandere",es:"expandir",pl:"rozszerzać"},"expand all":{en:"expand all",de:"Alle aufklappen",ru:"Развернуть все группы",pt:"expandir todos",nl:"alles uitvouwen",fr:"développer tout",it:"Espandi tutto",es:"expandir todo",pl:"rozwiń wszystkie"},extended:{en:"extended",de:"erweitert",ru:"расширенный",pt:"expandido",nl:"uitgebreid",fr:"élargi",it:"esteso",es:"expandido",pl:"rozszerzony"},false:{en:"false",de:"falsch",ru:"нет",pt:"falso",nl:"fout",fr:"faux",it:"falso",es:"falso",pl:"fałszywy"},"file permissions":{en:"File permissions",de:"Datei-Rechte",ru:"Разрешения для файлов",pt:"Permissões de arquivo",nl:"bestandsrechten",fr:"Autorisations de fichier",it:"Permessi di file",es:"Permisos de archivo",pl:"Uprawnienia do plików"},from:{en:"from",de:"Quelle",ru:"От",pt:"a partir de",nl:"van",fr:"de",it:"a partire dal",es:"fuente",pl:"od"},garden_group:{en:"Garden",de:"Garten",ru:"Сад",pt:"Jardim",nl:"Tuin",fr:"Jardin",it:"Giardino",es:"Jardín",pl:"Ogród"},general_group:{en:"General",de:"Allgemein",ru:"Основные приложения",pt:"Geral",nl:"Algemeen",fr:"Général",it:"Generale",es:"General",pl:"Generał"},geoposition_group:{en:"Geo position",de:"Geoposition",ru:"Геопозиционирование",pt:"Posição geográfica",nl:"Geografische positie",fr:"Position géographique",it:"Posizione geografica",es:"Posición geográfica",pl:"Pozycja geograficzna"},groups:{en:"groups",de:"Gruppen",ru:"Группы",pt:"grupos",nl:"groepen",fr:"groupes",it:"gruppi",es:"grupos",pl:"grupy"},hardware_group:{en:"Hardware",de:"Hardware",ru:"Оборудование",pt:"Equipamento",nl:"Hardware",fr:"Matériel",it:"Hardware",es:"Equipamiento",pl:"Sprzęt komputerowy"},history:{en:"history",de:"Historie",ru:"История",pt:"história",nl:"geschiedenis",fr:"histoire",it:"storia",es:"historia",pl:"historia"},"history data":{en:"history data",de:"Historische Daten",ru:"История данных",pt:"dados históricos",nl:"geschiedenis gegevens",fr:"données historiques",it:"dati storici",es:"datos históricos",pl:"dane historyczne"},host:{en:"host",de:"Server",ru:"Сервер",pt:"host",nl:"Server",fr:"hôte",it:"ospite",es:"host",pl:"gospodarz"},household_group:{en:"Household",de:"Haushalt",ru:"Домашнее хозяйство",pt:"Casa",nl:"Huishouden",fr:"Ménage",it:"Domestico",es:"Casa",pl:"Gospodarstwo domowe"},"http operation":{en:"http",de:"http",ru:"http",pt:"http",nl:"http",fr:"http",it:"http",es:"http",pl:"http"},id:{en:"ID",de:"ID",ru:"ID",pt:"ID",nl:"ID",fr:"ID",it:"ID",es:"ID",pl:"ID"},info:{en:"info",de:"Info",ru:"инфо",pt:"informação",nl:"info",fr:"Info",it:"Informazioni",es:"información",pl:"info"},infrastructure_group:{en:"Infrastructure",de:"Infrastruktur",ru:"Инфраструктура",pt:"Infraestrutura",nl:"Infrastructuur",fr:"Infrastructure",it:"Infrastruttura",es:"Infraestructura",pl:"Infrastruktura"},install:{en:"install",de:"Installieren",ru:"Установить",pt:"instalar",nl:"Installatie",fr:"installer",it:"installare",es:"instalar",pl:"zainstalować"},"install specific version":{en:"Install a specific version",de:"Bestimmte Version installieren",ru:"Установить определённую версию",pt:"instale uma versão específica",nl:"installeer specifieke versie",fr:"installer une version spécifique",it:"Installa una versione specifica",es:"Instale una versión específica",pl:"Zainstaluj konkretną wersję"},installed:{en:"installed",de:"Installiert",ru:"Установлен",pt:"instalado",nl:"Geïnstalleerd",fr:"installée",it:"installato",es:"instalado",pl:"zainstalowany"},"installed adapters":{en:"Filter adapters with existing instances",de:"Adapter mit Instanzen",ru:"Только драйвера, у которых есть инстация",pt:"adaptadores instalados",nl:"geïnstalleerde adapters",fr:"adaptateurs installés",it:"Filtro adattatori con istanze esistenti",es:"Filtro adaptadores con instancias existentes",pl:"Filtruj adaptery z istniejącymi instancjami"},instance:{en:"instance",de:"Instanz",ru:"Экземпляр",pt:"instância",nl:"Instantie",fr:"exemple",it:"esempio",es:"instancia",pl:"instancja"},"instance number":{en:"Desired instance number",de:"Gewünschte Instanznummer",ru:"Номер желаемого экземпляра",pt:"Número da instância desejada",nl:"Gewenst exemplarennummer",fr:"Numéro d'instance souhaité",it:"Numero di istanza desiderato",es:"Número de instancia deseado",pl:"Żądany numer instancji"},"yunkong2 Enums":{en:"yunkong2 enums",de:"yunkong2 Aufzählungen",ru:"yunkong2 категории",pt:"Enumerações do yunkong2",nl:"yunkong2 Enums",fr:"yunkong2 Enums",it:"enumerazioni di yunkong2",es:"Clasificaciones de yunkong2",pl:"yunkong2 wylicza"},"yunkong2 States":{en:"yunkong2 states",de:"yunkong2 Zustände",ru:"yunkong2 состояния",pt:"Estados do yunkong2",nl:"yunkong2 Toestanden",fr:"yunkong2 States",it:"afferma yunkong2",es:"Estados del yunkong2",pl:"stany yunkong2"},"yunkong2 adapter instances":{en:"yunkong2 adapter instances",de:"yunkong2 Adapter-Instanzen",ru:"Экземпляр драйвера yunkong2",pt:"Instâncias de adaptador do yunkong2",nl:"yunkong2-adapterinstanties",fr:"Instances d'adaptateur yunkong2",it:"istanze dell'adattatore yunkong2",es:"Instancias de adaptador de yunkong2",pl:"Instancje adaptera yunkong2"},"yunkong2 adapter scripts":{en:"yunkong2 adapter scripts",de:"yunkong2 Adapter Skripte",ru:"yunkong2 adapter скрипты",pt:"Scripts para adaptador do yunkong2",nl:"yunkong2-adapterscripts",fr:"scripts de l'adaptateur yunkong2",it:"Script dell'adattatore yunkong2",es:"Scripts para el adaptador de yunkong2",pl:"Skrypty adaptera yunkong2"},"yunkong2 adapters":{en:"yunkong2 adapters",de:"yunkong2 Adapter",ru:"yunkong2 драйвера",pt:"Adaptadores do yunkong2",nl:"yunkong2-adapters",fr:"Adaptateurs yunkong2",it:"adattatori yunkong2",es:"Adaptadores del yunkong2",pl:"adaptery yunkong2"},"yunkong2 certificates":{en:"yunkong2 certificates",de:"yunkong2 Zertifikate",ru:"yunkong2 сертификат",pt:"Certificados do yunkong2",nl:"yunkong2-certificaten",fr:"Certificats yunkong2",it:"certificati yunkong2",es:"Certificados del yunkong2",pl:"Certyfikaty yunkong2"},"yunkong2 groups":{en:"yunkong2 groups",de:"yunkong2 Gruppen",ru:"Группы yunkong2",pt:"Grupos do yunkong2",nl:"yunkong2-groepen",fr:"Groupes yunkong2",it:"gruppi di yunkong2",es:"Grupos de yunkong2",pl:"Grupy yunkong2"},"yunkong2 hosts":{en:"yunkong2 hosts",de:"yunkong2 Hosts",ru:"Сервера yunkong2",pt:"Hosts do yunkong2",nl:"yunkong2 servers",fr:"Hôtes yunkong2",it:"host yunkong2",es:"Hosts do yunkong2",pl:"Hosty yunkong2"},"yunkong2 repositories":{en:"yunkong2 repositories",de:"yunkong2 Verwahrungsorte",ru:"Репозитории yunkong2",pt:"Repositórios do yunkong2",nl:"yunkong2-bibliotheken",fr:"Dépôts yunkong2",it:"repository yunkong2",es:"Repositorios de yunkong2",pl:"repozytoria yunkong2"},"yunkong2 users":{en:"yunkong2 users",de:"yunkong2 Benutzer",ru:"Пользователи yunkong2",pt:"Usuários do yunkong2",nl:"yunkong2-gebruikers",fr:"Utilisateurs de yunkong2",it:"utenti di yunkong2",es:"Usuarios de yunkong2",pl:"Użytkownicy yunkong2"},"iot-system_group":{en:"IoT systems",de:"IoT Systeme",ru:"IoT системы",pt:"Sistemas IoT",nl:"IoT-systemen",fr:"Les systèmes IoT",it:"Sistemi IoT",es:"Sistemas IoT",pl:"Systemy IoT"},"iot-systems_group":{en:"IoT Systems",de:"IoT Systeme",ru:"Системы IoT",pt:"Sistemas IoT",nl:"IoT-systemen",fr:"Les systèmes IoT",it:"Sistemi IoT",es:"Sistemas IoT",pl:"Systemy IoT"},keywords:{en:"keywords",de:"Schlüsselworte",ru:"keywords",pt:"palavras-chave",nl:"Trefwoorden",fr:"mots clés",it:"parole chiave",es:"palabras clave",pl:"słowa kluczowe"},lc:{en:"Last change",de:"Geändert",ru:"Изменён",pt:"mod.",nl:"gewijzigd",fr:"mod.",it:"cam.",es:"mod.",pl:"lc"},less:{en:"less",de:"Weniger",ru:"Меньше",pt:"menos",nl:"minder",fr:"moins",it:"Di meno",es:"menos",pl:"mniej"},letsnecrypt_help:{en:'This are settings for Let\'s Encrypt account. To get the free certificates for your domain. You can read more <a href="https://letsencrypt.org/" target="_blank">here</a>.',de:'Einstellungen für das Let\'s Encrypt Konto. Um ein gratis Zertifikat für Ihre Domain zu erhalten, folgen sie den Anweisungen <a href="https://letsencrypt.org/" target="_blank">hier</a>.',ru:'Настройки для Let\'s Encrypt аккаунта. Это позволит получить бесплатные сертификаты для вашего домена. О Let\'s Encrypt можно почитать <a href="https://letsencrypt.org/" target="_blank">здесь</a>.',pt:'Configurações para a conta Let\'s Encrypt. Para obter um certificado gratuito para o seu domínio, siga as instruções <a href="https://letsencrypt.org/" target="_blank">aqui</a>.',nl:'Instellingen voor het Let\'s Encrypt-account. Als u een gratis certificaat voor uw domein wilt ontvangen, volgt u <a href="https://letsencrypt.org/" target="_blank">deze instructie</a>.',fr:'Paramètres du compte Let\'s Encrypt. Pour obtenir un certificat gratuit pour votre domaine, suivez les instructions <a href="https://letsencrypt.org/" target="_blank">ici</a>.',it:'Queste sono le impostazioni per l\'account Let\'s Encrypt. Per ottenere i certificati gratuiti per il tuo dominio. Puoi leggere più <a href="https://letsencrypt.org/" target="_blank"> qui </a>.',es:'Configuraciones para la cuenta Let\'s Encrypt. Para obtener un certificado gratuito para su dominio, siga las instrucciones <a href="https://letsencrypt.org/" target="_blank">aquí</a>.',pl:'To są ustawienia dla konta Let\'s Encrypt. Aby uzyskać bezpłatne certyfikaty dla swojej domeny. Możesz przeczytać więcej <a href="https://letsencrypt.org/" target="_blank"> tutaj </a>.'},letsnecrypt_help_domains:{en:"E.g: 'example.com, www.example.com'",de:"z.B: 'example.com, www.example.com'",ru:"Например: 'example.com, www.example.com'",pt:"por exemplo: 'example.com, www.example.com'",nl:"bijvoorbeeld: 'example.com, www.example.com'",fr:"par exemple: 'example.com, www.example.com'",it:'E.g: "example.com, www.example.com"',es:"por ejemplo: 'example.com, www.example.com'",pl:'Np .: "example.com, www.example.com"'},letsnecrypt_help_email:{en:"Please use your email address. It will be used for your account.",de:"Bitte immer nur eine Email-Adresse benutzen.",ru:"Почтовый адрес используется для создания аккаунта.",pt:"Use sempre apenas um endereço de e-mail.",nl:"Gebruik altijd slechts één e-mailadres.",fr:"Veuillez toujours utiliser une seule adresse e-mail.",it:"Si prega di utilizzare il tuo indirizzo email. Sarà usato per il tuo account.",es:"Utilice siempre sólo una e-mail.",pl:"Użyj swojego adresu e-mail. Będzie on używany na Twoim koncie."},letsnecrypt_help_path:{en:"Directory name where the certificates will be stored. This is always relative to configuration directory",de:"Verzeichnis, in dem die Zertifikate gespeichert werden. Der Pfad ist relativ zum Konfigurationsverzeichnis",ru:"Путь к папке, где будут хранится сертификаты. Относительно папки с настройками",pt:"Diretório onde os certificados são gravados. O caminho é relativo ao diretório de configuração",nl:"Locatie waar de certificaten worden opgeslagen. Pad is relatief ten opzichte van de configuratiemap",fr:"Répertoire où les certificats sont stockés. Le chemin est relatif au répertoire de configuration",it:"Nome della directory in cui verranno archiviati i certificati. Questo è sempre relativo alla directory di configurazione",es:"Directorio donde se escriben los certificados. La ruta de acceso se refiere al directorio de configuración",pl:"Nazwa katalogu, w którym będą przechowywane certyfikaty. Jest to zawsze zależne od katalogu konfiguracji"},license:{en:"license",de:"Lizenz",ru:"Лицензия",pt:"licença",nl:"Licentie",fr:"Licence",it:"licenza",es:"licencia",pl:"licencja"},"license agreement":{en:"license agreement",de:"Lizenzvertrag",ru:"Лицензионное соглашение",pt:"Contrato de licença",nl:"licentieovereenkomst",fr:"Contrat de licence",it:"Contratto di licenza",es:"Contrato de licencia",pl:"umowa licencyjna"},"license not agree":{en:"Do not agree with the license!",de:"Mit der Lizenz nicht einverstanden!",ru:"Не согласен(на) с лицензией",pt:"Não concordo com a licença!",nl:"Niet akkoord met de licentie!",fr:"En désaccord avec la licence!",it:"Non sono d'accordo con la licenza!",es:"¡No estoy de acuerdo con la licencia!",pl:"Nie zgadzam się z licencją!"},license_checkbox:{en:"I agree with the collection of anonymous statistics.<br>(This can be disabled in settings)",de:"Ich bin mit der Sammlung von anonymen Statistiken einverstanden.<br>(kann auch später in den Einstellungen deaktiviert werden)",ru:"Я соглашаюсь с анонимным сбором статистики.<br>(Можно деактивировать через настройки)",pt:"Eu concordo com a coleção de estatísticas anônimas. <br> (também pode ser desativado mais tarde nas configurações)",nl:"Ik ben het eens met het verzamelen van anonieme statistieken. <br> (kan worden uitgeschakeld in de instellingen)",fr:"Je suis d'accord avec la collecte de statistiques anonymes.<br>(peut être désactivé dans les paramètres)",it:"Sono d'accordo con la raccolta di statistiche anonime. <br> (Questo può essere disabilitato nelle impostazioni)",es:"Estoy de acuerdo con la colección de estadísticas anónimas.<br>(también se puede desactivar más tarde en la configuración)",pl:"Zgadzam się na zbieranie anonimowych statystyk. <br> (Można to wyłączyć w ustawieniach)"},lighting_group:{en:"Lighting",de:"Beleuchtung",ru:"Свет",pt:"Iluminação",nl:"Verlichting",fr:"Éclairage",it:"Illuminazione",es:"Iluminación",pl:"Oświetlenie"},link:{en:"link",de:"Link",ru:"Ссылка",pt:"link",nl:"link",fr:"lien",it:"collegamento",es:"link",pl:"połączyć"},list:{en:"list",de:"Liste",ru:"Список",pt:"lista",nl:"lijst",fr:"liste",it:"elenco",es:"lista",pl:"lista"},"list operation":{en:"list elements",de:"auflisten",ru:"Список",pt:"liste os elementos",nl:"geef weer",fr:"afficher liste",it:"elenca gli elementi",es:"lista",pl:"lista elementów"},logic_group:{en:"Logic",de:"Logik",ru:"Логика",pt:"Lógica",nl:"Logica",fr:"Logique",it:"Logica",es:"Lógica",pl:"Logika"},loglevel:{en:"loglevel",de:"Log-Stufe",ru:"Уровень",pt:"Nível do log",nl:"Log niveau",fr:"loglevel",it:"loglevel",es:"Nivel de log",pl:"loglevel"},media_group:{en:"Media",de:"Medien",ru:"Медиа",pt:"Mídia",nl:"Media",fr:"Media",it:"Media",es:"Medios",pl:"Głoska bezdźwięczna"},members:{en:"members",de:"Mitglieder",ru:"Части",pt:"membros",nl:"leden",fr:"membres",it:"membri",es:"miembros",pl:"członków"},memlimit:{en:"RAM limit",de:"RAM-Limit",ru:"Макс. RAM",pt:"Limite de RAM",nl:"Geheugen limiet",fr:"RAM limit",it:"Limite di RAM",es:"Límite de RAM",pl:"Limit pamięci RAM"},message:{en:"message",de:"Nachricht",ru:"Сообщение",pt:"mensagem",nl:"bericht",fr:"message",it:"Messaggio",es:"mensaje",pl:"wiadomość"},messaging_group:{en:"Messaging",de:"Messaging",ru:"Сообщения",pt:"Mensagens",nl:"Messaging",fr:"Messagerie",it:"messaggistica",es:"Mensajes",pl:"Wiadomości"},"misc-data_group":{en:"Misc. data",de:"Sonstige",ru:"Разное",pt:"Dados variados",nl:"Andere",fr:"Autre",it:"Varie. dati",es:"Datos mezclados",pl:"Różne dane"},mixed:{en:"mixed",de:"gemischt",ru:"смешанный",pt:"misturado",nl:"gemengd",fr:"mixte",it:"misto",es:"misturado",pl:"mieszany"},mode:{en:"mode",de:"Modus",ru:"Режим",pt:"modo",nl:"modus",fr:"mode",it:"modalità",es:"modo",pl:"tryb"},more:{en:"more",de:"Mehr",ru:"Больше",pt:"mais",nl:"meer",fr:"plus",it:"Di Più",es:"más",pl:"jeszcze"},multi:{en:"multistate",de:"Werteliste",ru:"Перечисление",pt:"lista de valores",nl:"waardenlijst",fr:"liste de valeurs",it:"Multistate",es:"lista de valores",pl:"multistate"},multimedia_group:{en:"Multimedia",de:"Multimedia",ru:"Мультимедиа",pt:"Multimídia",nl:"Multimedia",fr:"Multimédia",it:"Multimedia",es:"Multimedia",pl:"Multimedia"},name:{en:"name",de:"Name",ru:"Имя",pt:"nome",nl:"Naam",fr:"prénom",it:"nome",es:"nome",pl:"Nazwa"},native:{en:"native",de:"Nativ",ru:"Уникальные параметры",pt:"nativo",nl:"inheems",fr:"originaire de",it:"nativo",es:"nativo",pl:"ojczysty"},network_group:{en:"Network",de:"Netzwerk",ru:"Сеть",pt:"Rede",nl:"Netwerk",fr:"Réseau",it:"Rete",es:"Red",pl:"Sieć"},"new certificate":{en:"new certificate",de:"neues Zertifikat",ru:"новый сертификат",pt:"novo certificado",nl:"nieuw certificaat",fr:"nouveau certificat",it:"nuovo certificato",es:"nuevo certificado",pl:"nowy certyfikat"},"new group":{en:"new group",de:"Neue Gruppe",ru:"Новая группа",pt:"novo grupo",nl:"nieuwe groep",fr:"nouveau groupe",it:"nuovo gruppo",es:"nuevo grupo",pl:"Nowa grupa"},"new script":{en:"new script",de:"Neues Script",ru:"Новый скрипт",pt:"novo script",nl:"nieuw script",fr:"nouveau script",it:"nuovo script",es:"nuevo script",pl:"nowy skrypt"},"new user":{en:"new user",de:"Neuer Benutzer",ru:"Новый пользователь",pt:"novo usuário",nl:"nieuwe gebruiker",fr:"nouvel utilisateur",it:"nuovo utente",es:"nuevo usuario",pl:"nowy użytkownik"},newObject:{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuw objekt",fr:"Nouvel objet",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"no-city":{en:"no city",de:"ohne Stadt",ru:"без города",pt:"sem cidade",nl:"zonder stad",fr:"sans ville",it:"nessuna città",es:"sin ciudad",pl:"nie ma miasta"},"node-red":{en:"node-red",de:"node-red",ru:"node-red",pt:"node-red",nl:"node-red",fr:"node-red",it:"node-rosso",es:"node-red",pl:"węzeł-czerwony"},none:{en:"none",de:"nichts",ru:"ничего",pt:"nada",nl:"geen",fr:"aucun",it:"nessuna",es:"ninguno",pl:"Żaden"},normal:{en:"normal",de:"normal",ru:"обычный",pt:"normal",nl:"normaal",fr:"Ordinaire",it:"normale",es:"normal",pl:"normalna"},"not ack":{en:"not ack",de:"Nicht best.",ru:"Не подтв.",pt:"não conf.",nl:"niet bev.",fr:"pas confirmé",it:"non dire",es:"no conf.",pl:"nie potwierdzenia"},"not agree":{en:"not agree",de:"Nicht einverstanden",ru:"Не согласен(на)",pt:"não concordo",nl:"Niet akkoord",fr:"pas d'accord",it:"non sono d'accordo",es:"No estoy de acuerdo",pl:"nie zgadzam się"},"npm error":{en:"npm error",de:"Fehler",ru:"ошибка",pt:"erro no NPM",nl:"npm fout",fr:"erreur npm",it:"errore di npm",es:"error en NPM",pl:"błąd npm"},number:{en:"number",de:"Zahl",ru:"Число",pt:"número",nl:"getal",fr:"nombre",it:"numero",es:"numero",pl:"numer"},object:{en:"object",de:"Objekt",ru:"Объект",pt:"objeto",nl:"Objekt",fr:"objet",it:"oggetto",es:"oggetto",pl:"obiekt"},"object permissions":{en:"Object permissions",de:"Objekt-Rechte",ru:"Разрешения для объектов",pt:"permissões de objeto",nl:"objektrechten",fr:"autorisations d'objet",it:"Permessi sugli oggetti",es:"Permessi sugli oggetti",pl:"Uprawnienia obiektu"},of:{en:"of",de:"von",ru:"из",pt:"do",nl:"van",fr:"de",it:"di",es:"de",pl:"z"},ok:{en:"Ok",de:"Ok",ru:"Ok",pt:"Ok",nl:"OK",fr:"D'accord",it:"Ok",es:"Ok",pl:"Ok"},"open web page":{en:"Open web page of adapter",de:"Adapter-Webseite öffnen",ru:"Открыть приложение",pt:"Abrir a website do adaptador",nl:"Adapter pagina openen",fr:"Accéder à la page Web de l'adaptateur",it:"Apri la pagina web dell'adattatore",es:"Abrir un sitio web do adaptador",pl:"Otwórz stronę adaptera"},os:{en:"operating system",de:"Betriebssystem",ru:"Oперационная система",pt:"sistema operacional",nl:"Bestuuringssysteem",fr:"système d'exploitation",it:"sistema operativo",es:"Sistema operativo",pl:"system operacyjny"},"other permissions":{en:"Other permissions",de:"Andere Rechte",ru:"Разрешения",pt:"outras permissões",nl:"andere rechten",fr:"autres autorisations",it:"Altre autorizzazioni",es:"Otros permisos",pl:"Inne uprawnienia"},"parent name":{en:"parent name",de:"Eltern Name",ru:"Имя родителя",pt:"nome dos pais",nl:"bovenliggende naam",fr:"nom du parent",it:"nome del genitore",es:"nombre de los padres",pl:"imię rodzica"},password:{en:"Password",de:"Passwort",ru:"Пароль",pt:"senha",nl:"wachtwoord",fr:"mot de passe",it:"Parola d'ordine",es:"contraseña",pl:"Hasło"},permissionError:{en:"Permission error",de:"Zugriffsfehler",ru:"Ошибка доступа",pt:"Erro de permissão",nl:"Toegangssfout",fr:"Erreur d'autorisation",it:"Errore di autorizzazione",es:"Error de permiso",pl:"Błąd uprawnień"},"place here":{en:"place the files here",de:"Platziere die Dateien hier",ru:"разместите файлы здесь",pt:"coloque os arquivos aqui",nl:"plaats de bestanden hier",fr:"Placez les fichiers ici",it:"posiziona i file qui",es:"coloca los archivos aquí",pl:"umieść pliki tutaj"},planned:{en:"planned",de:"geplant",ru:"в планах",pt:"planejado",nl:"gepland",fr:"prévu",it:"pianificato",es:"planificado",pl:"zaplanowany"},platform:{en:"platform",de:"Plattform",ru:"Платформа",pt:"plataforma",nl:"Platform",fr:"Plate-forme",it:"piattaforma",es:"plataforma",pl:"Platforma"},point:{en:"point",de:"Punkt",ru:"точка",pt:"ponto",nl:"punt",fr:"point",it:"punto",es:"punto",pl:"punkt"},popular:{en:"popular",de:"Beliebheit",ru:"по популярности",pt:"popular",nl:"populair",fr:"populaire",it:"popolare",es:"popular",pl:"popularny"},process:{en:"process",de:"Prozess",ru:"Процесс",pt:"processo",nl:"Proces",fr:"processus",it:"processi",es:"proceso",pl:"proces"},protocols_group:{en:"Protocols",de:"Protokolle",ru:"Протоколы",pt:"Protocolos",nl:"Protocollen",fr:"Protocoles",it:"Protocolli",es:"Protocolos",pl:"Protokoły"},raw:{en:"Raw (experts only)",de:"Raw (nur Experten)",ru:"Raw (Эксперт)",pt:"Raw (apenas especialistas)",nl:"Ruwe data (alleen Experten)",fr:"Raw (experts seulement)",it:"Raw (solo per esperti)",es:"Raw (sólo expertos)",pl:"Surowy (tylko eksperci)"},read:{en:"read",de:"lesen",ru:"читать",pt:"ler",nl:"lezen",fr:"lire",it:"leggere",es:"leer",pl:"czytać"},"read operation":{en:"read",de:"lesen",ru:"Читать",pt:"ler",nl:"lezen",fr:"lecture",it:"leggere",es:"leer",pl:"czytać"},readme:{en:"readme",de:"Lies mich",ru:"Описание драйвера",pt:"leia-me",nl:"Leesmij",fr:"readme",it:"readme",es:"leerme",pl:"przeczytaj"},reload:{en:"reload",de:"Neu laden",ru:"Перезагрузить",pt:"recarregar",nl:"herladen",fr:"recharger",it:"ricaricare",es:"recargar",pl:"przeładować"},"reload instance":{en:"reload instance",de:"Instanz neu starten",ru:"Перезагрузить экземпляр",pt:"reiniciar a instância",nl:"herlaad instantie",fr:"reload instance",it:"ricarica istanza",es:"reiniciar la instancia",pl:"przeładuj instancję"},rest:{en:"rest (read only)",de:"Weitere (nur lesend)",ru:"Остальные параметры (только для чтения)",pt:"além disso (apenas leitura)",nl:"overige (alleen lezen)",fr:"autres (lecture seulement)",it:"riposo (sola lettura)",es:"además (sólo lectura)",pl:"reszta (tylko do odczytu)"},restart:{en:"auto restart",de:"Neu starten",ru:"Перезапустить",pt:"reiniciar",nl:"herstarten",fr:"redémarrer",it:"riavvio automatico",es:"reiniciar",pl:"auto restart"},"restart script":{en:"restart script",de:"Skript neu starten",ru:"Перезапустить скрипт",pt:"reiniciar o script",nl:"herstart script",fr:"redémarrer le script",it:"riavviare lo script",es:"reiniciar el script",pl:"zrestartuj skrypt"},role:{en:"role",de:"Rolle",ru:"Функция",pt:"função (tipo)",nl:"rol",fr:"rôle",it:"ruolo",es:"función (tipo)",pl:"rola"},save:{en:"save",de:"Speichern",ru:"Сохранить",pt:"gravar",nl:"opslaan",fr:"enregistrer",it:"salvare",es:"guardar",pl:"zapisać"},schedule_group:{en:"Schedule",de:"Zeitplanung",ru:"Расписание",pt:"Programação de tempo",nl:"Tijdplanning",fr:"Planification",it:"Programma",es:"Programación de tiempo",pl:"Harmonogram"},script_group:{en:"Scripts and Logic",de:"Skripte und Logik",ru:"Скрипты и логика",pt:"Scripts e lógica",nl:"Scripts en logica",fr:"Scripts et logique",it:"Script e logica",es:"Scripts y lógica",pl:"Skrypty i logika"},"select member by double click":{en:"select member by double clicking",de:"Mitglied durch Doppelklick auswählen",ru:"Выберите участника двойным щелчком",pt:"selecione o membro clicando duas vezes",nl:"selecteer lid door dubbelklikken",fr:"sélectionner un membre en double-cliquant",it:"seleziona membro facendo doppio clic",es:"seleccione el miembro haciendo doble clic",pl:"wybierz członka, klikając dwukrotnie"},"sendto operation":{en:"Send-to operation",de:"Senden an",ru:"Послать к",pt:"Operação enviar para",nl:"Versturen aan",fr:"opération sendto",it:"Operazione di invio",es:"Operación enviar a",pl:"Wyślij do operacji"},service_group:{en:"Maintenance",de:"Instandhaltung",ru:"Сервисные приложения",pt:"Manutenção",nl:"Onderhoud",fr:"Entretien",it:"Manutenzione",es:"Mantenimiento",pl:"Konserwacja"},severity:{en:"severity",de:"Schweregrad",ru:"важность",pt:"severidade",nl:"Moeilijkheidsgraad",fr:"gravité",it:"gravità",es:"severidad",pl:"surowość"},silly:{en:"silly",de:"Alles",ru:"всё",pt:"tudo",nl:"silly",fr:"silly",it:"sciocco",es:"todo",pl:"głupi"},stable:{en:"stable",de:"stabil",ru:"стабильно",pt:"estável",nl:"stabiel",fr:"stable",it:"stabile",es:"estable",pl:"stabilny"},state:{en:"state",de:"Datenpunkt/Zustand",ru:"Состояние",pt:"estado",nl:"Datapunt/Waarde",fr:"Etat",it:"stato",es:"estado",pl:"stan"},"state permissions":{en:"State permissions",de:"Zustands-Rechte",ru:"Разрешения для состояний",pt:"permissões do estado",nl:"rechten voor waardes",fr:"autorisations d'état",it:"Permessi di stato",es:"Derechos de los estados",pl:"Uprawnienia państwowe"},storage_group:{en:"Storage",de:"Aufbewahrung",ru:"Хранилище",pt:"Armazenamento",nl:"Opslag",fr:"Espace de rangement",it:"Conservazione",es:"Almacenamiento",pl:"Przechowywanie"},string:{en:"string",de:"Zeichenkette",ru:"Строка",pt:"string",nl:"Tekenreeks",fr:"chaîne",it:"stringa",es:"cadena de caracteres",pl:"strunowy"},subscribe:{en:"subscribe",de:"abonnieren",ru:"Подписка",pt:"se inscrever",nl:"abonneren",fr:"souscrire",it:"sottoscrivi",es:"inscribirse",pl:"subskrybować"},switch:{en:"switch",de:"Schalter",ru:"Переключатель",pt:"interruptor",nl:"schakelaar",fr:"commutateur",it:"interruttore",es:"interruptor",pl:"przełącznik"},terminal:{en:"Terminal",de:"Terminal",ru:"Терминал",pt:"Terminal",nl:"Terminal",fr:"Terminal",it:"Terminale",es:"Terminal",pl:"Terminal"},"third-party_group":{en:"Third party",de:"Andere",ru:"Другие",pt:"Outros",nl:"Anders",fr:"Autre",it:"Terzo",es:"Outros",pl:"Strona trzecia"},"this adapter does not allow multiple instances":{en:"This adapter does not allow multiple instances",de:"Dieser Adapter lässt mehrere Instanzen nicht zu",ru:"этот адаптер не разрешает несколько экземпляров",pt:"Este adaptador não permite várias instâncias",nl:"Deze adapter staat meerdere instanties niet toe",fr:"Cet adaptateur ne permet pas plusieurs instances",it:"Questo adattatore non consente più istanze",es:"Este adaptador no permite varias instancias",pl:"Ten adapter nie zezwala na wiele instancji"},title:{en:"title",de:"Titel",ru:"Название",pt:"título",nl:"Titel",fr:"titre",it:"titolo",es:"título",pl:"tytuł"},today:{en:"today",de:"heute",ru:"cегодня",pt:"hoje",nl:"vandaag",fr:"aujourd'hui",it:"oggi",es:"hoy",pl:"dzisiaj"},true:{en:"true",de:"wahr",ru:"да",pt:"verdade",nl:"waar",fr:"vrai",it:"vero",es:"verdade",pl:"prawdziwe"},ts:{en:"Timestamp",de:"Zeit",ru:"Время",pt:"timestamp",nl:"Tijd",fr:"ts",it:"timestamp",es:"marca de tiempo",pl:"Znak czasu"},type:{en:"type",de:"Typ",ru:"Тип",pt:"tipo",nl:"Type",fr:"type",it:"genere",es:"tipo",pl:"rodzaj"},unit:{en:"unit",de:"Einheit",ru:"Единицы измерения",pt:"unidade",nl:"eenheid",fr:"unité",it:"unità",es:"unidad",pl:"jednostka"},update:{en:"update",de:"Aktualisieren",ru:"Обновить",pt:"atualizar",nl:"bijwerken",fr:"mettre à jour",it:"aggiornare",es:"actualizar",pl:"aktualizacja"},"update adapter information":{en:"update adapter information",de:"Adapterinformationen aktualisieren",ru:"Обновить информацию драйвера",pt:"atualizar informações do adaptador",nl:"adapter informatie bijwerken",fr:"mettre à jour les informations d'adaptateur",it:"aggiorna le informazioni dell'adattatore",es:"actualizar la información del adaptador",pl:"aktualizuj informacje o adapterze"},"update-part1":{en:"Because yunkong2 runs on many very different platforms, only manual updating is possible at the moment. To start the manual update, please go to your controller via console and execute the following:",de:"Aufgrund der Vielzahl an Hardware und Plattformen, auf denen yunkong2 läuft, muss der js-controller manuell aktualisiert werden. Dazu auf der Konsole des Hosts folgende Kommandos ausführen:",ru:"Из-за очень разного оборудования на котором может бежать yunkong2 возможно только ручное обновлени. Для ручного обновления нужно открыть командную консоль и ввести следующее:",pt:"Devido ao grande número de plataformas de hardware que o yunkong2 pode ser executado, você precisa atualizar o js-controller manualmente. Para fazer isso, execute os seguintes comandos no console do host:",nl:"Vanwege het veelvoud aan Platformen waarop yunkong2 beschikbaar is kan een systeemupdate alleen handmatig uitgevoerd worden. Ga voor handmatige update naar je systeem via de console en voer het volgende uit:",fr:"En raison des plates-formes très différentes, où yunkong2 peut fonctionner, uniquement la mise à jour manuelle est possible. Pour exécuter la mise à jour manuelle, veuillez exécuter les instructions suivantes via la console de l'hôte:",it:"Poiché yunkong2 funziona su molte piattaforme molto diverse, al momento è possibile solo l'aggiornamento manuale. Per avviare l'aggiornamento manuale, andare al controller tramite console ed eseguire quanto segue:",es:"Debido al gran número de plataformas de hardware que el yunkong2 se puede ejecutar, es necesario actualizar el JS-Controller manualmente. Para ello, ejecute los siguientes comandos en la consola de host:",pl:"Ponieważ yunkong2 działa na wielu bardzo różnych platformach, w tej chwili możliwe jest tylko ręczne aktualizowanie. Aby rozpocząć aktualizację ręczną, przejdź do kontrolera za pomocą konsoli i wykonaj następujące czynności:"},updated:{en:"updated",de:"aktualisiert",ru:"по времени",pt:"Atualizada",nl:"bijgewerkt",fr:"actualisé",it:"aggiornato",es:"actualizado",pl:"zaktualizowany"},updates:{en:"updates",de:"Aktualisierung",ru:"обновления",pt:"atualizações",nl:"updates",fr:"mises à jour",it:"aggiornamenti",es:"actualizaciones",pl:"aktualizacje"},upload:{en:"Upload",de:"Upload",ru:"Обновить файлы в базе данных",pt:"Upload",nl:"uploaden",fr:"télécharger",it:"Caricare",es:"Cargar",pl:"Przekazać plik"},"user permissions":{en:"user permissions",de:"Zugriffsrechte",ru:"права доступа",pt:"permissões de usuários",nl:"gebruikersrechten",fr:"autorisations des utilisateurs",it:"permessi dell'utente",es:"permisos de usuario",pl:"uprawnienia użytkownika"},users:{en:"users",de:"Benutzer",ru:"Пользователи",pt:"usuários",nl:"gebruikers",fr:"utilisateurs",it:"utenti",es:"usuarios",pl:"użytkowników"},"users permissions":{en:"User permissions",de:"Gruppen-Rechte",ru:"Разрешения для групп",pt:"permissões do usuário",nl:"gebruikersrechten",fr:"autorisations d'utilisateur",it:"Permessi utente",es:"permisos del usuario",pl:"Uprawnienia użytkowników"},utility_group:{en:"Utility",de:"Dienstprogramm",ru:"Утилита",pt:"Utilidade",nl:"Utility",fr:"Utilitaire",it:"Utilità",es:"Utilidad",pl:"Użyteczność"},val:{en:"val",de:"Wert",ru:"Значение",pt:"val",nl:"waarde",fr:"val",it:"val",es:"val",pl:"val"},value:{en:"value",de:"Wert",ru:"значение",pt:"valor",nl:"waarde",fr:"valeur",it:"valore",es:"valor",pl:"wartość"},"value.from":{en:"Changed from",de:"Geändert von",ru:"Изменено из",pt:"Mudou de",nl:"Gewijzigd van",fr:"Changé de",it:"Modificato da",es:"Cambiaron desde",pl:"Zmieniony z"},"value.lc":{en:"Last change",de:"Letzte Änderung",ru:"Последние изменения",pt:"Última mudança",nl:"Laatste wijziging",fr:"Dernier changement",it:"Ultima modifica",es:"Ultimo cambio",pl:"Ostatnia zmiana"},"value.q":{en:"Quality code",de:"Qualitätscode",ru:"Код качества",pt:"Código de qualidade",nl:"Kwaliteitscode",fr:"Code de qualité",it:"Codice di qualità",es:"Código de calidad",pl:"Kod jakości"},"value.ts":{en:"Timestamp",de:"Zeitstempel",ru:"Время обновления",pt:"Timestamp",nl:"tijdstempel",fr:"Horodatage",it:"timestamp",es:"Marca de tiempo",pl:"Znak czasu"},"value.val":{en:"value",de:"Wert",ru:"значение",pt:"valor",nl:"waarde",fr:"valeur",it:"valore",es:"valor",pl:"wartość"},version:{en:"version",de:"Version",ru:"Версия",pt:"versão",nl:"versie",fr:"version",it:"versione",es:"versión",pl:"wersja"},vis_group:{en:"yunkong2.vis",de:"yunkong2.vis",ru:"yunkong2.vis",pt:"yunkong2.vis",nl:"yunkong2.vis",fr:"yunkong2.vis",it:"yunkong2.vis",es:"yunkong2.vis",pl:"yunkong2.vis"},visualisation_group:{en:"Visualisation",de:"Visualisierung",ru:"Визуализация",pt:"Visualização",nl:"Visualisatie",fr:"Visualisation",it:"visualizzazione",es:"Visualización",pl:"Wyobrażanie sobie"},"visualization-icons_group":{en:"Visualization Icons",de:"Visualisierungs-Icons",ru:"Иконки визуализации",pt:"Ícones de visualização",nl:"Visualisatie pictogrammen",fr:"Icônes de visualisation",it:"Icone di visualizzazione",es:"Iconos de visualización",pl:"Ikony wizualizacji"},"visualization-widgets_group":{en:"Visualization Widgets",de:"Visualisierung Widgets",ru:"Визуальные виджеты",pt:"Widgets de visualização",nl:"Visualisatie Widgets",fr:"Widgets de visualisation",it:"Widget di visualizzazione",es:"Widgets de visualización",pl:"Widżetowe widżety"},visualization_group:{en:"Visualisation",de:"Visualisierung",ru:"Визуализация",pt:"Visualização",nl:"Visualisatie",fr:"Visualisation",it:"visualizzazione",es:"Visualización",pl:"Wyobrażanie sobie"},warn:{en:"warn",de:"Warnung",ru:"предупреждения",pt:"aviso",nl:"waarschuwing",fr:"prévenir",it:"avvisare",es:"aviso",pl:"ostrzec"},weather_group:{en:"Weather",de:"Wetter",ru:"Погода",pt:"Tempo",nl:"Weer",fr:"Météo",it:"Tempo metereologico",es:"Tiempo",pl:"Pogoda"},wetty:{en:"Wetty",de:"Wetty",ru:"Wetty",pt:"Wetty",nl:"Wetty",fr:"Wetty",it:"Wetty",es:"Wetty",pl:"Wetty"},write:{en:"write",de:"schreiben",ru:"писать",pt:"escrever",nl:"schrijven",fr:"écriture",it:"Scrivi",es:"escribir",pl:"pisać"},"write operation":{en:"write",de:"schreiben",ru:"Писать",pt:"escrever",nl:"schrijven",fr:"écrire",it:"Scrivi",es:"escribir",pl:"pisać"},yesterday:{en:"yesterday",de:"gestern",ru:"вчера",pt:"ontem",nl:"gisteren",fr:"hier",it:"ieri",es:"ayer",pl:"wczoraj"}};
//# sourceMappingURL=app.js.map